added everything
This commit is contained in:
115
lib/maxsdk70/include/maxscrpt/numbers.h
Executable file
115
lib/maxsdk70/include/maxscrpt/numbers.h
Executable file
@@ -0,0 +1,115 @@
|
||||
/* Numbers.h - the number family of classes - numbers for MAXScript
|
||||
*
|
||||
* Copyright (c) John Wainwright, 1996
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _H_NUMBER
|
||||
#define _H_NUMBER
|
||||
|
||||
#include "MSTime.h"
|
||||
|
||||
#define FLOAT_CACHE_SIZE 1024 // must be power of 2
|
||||
#define INT_CACHE_SIZE 512 // " " "
|
||||
#define LOW_INT_RANGE 100
|
||||
|
||||
class Float;
|
||||
class Integer;
|
||||
|
||||
extern Float* float_cache[];
|
||||
extern Integer* int_cache[];
|
||||
|
||||
visible_class (Number)
|
||||
|
||||
class Number : public Value
|
||||
{
|
||||
public:
|
||||
# define is_number(o) ((o)->tag == class_tag(Float) || (o)->tag == class_tag(Integer))
|
||||
classof_methods (Number, Value);
|
||||
|
||||
static Value* read(TCHAR* str, bool heapAlloc = false);
|
||||
static void setup();
|
||||
|
||||
#include "defimpfn.h"
|
||||
def_generic( coerce, "coerce");
|
||||
def_generic( copy, "copy");
|
||||
};
|
||||
|
||||
applyable_class (Float)
|
||||
applyable_class (Integer) // forward decls for float class
|
||||
#define is_integer(o) ((o)->tag == class_tag(Integer))
|
||||
|
||||
class Float : public Number
|
||||
{
|
||||
public:
|
||||
float value;
|
||||
|
||||
ENABLE_STACK_ALLOCATE(Float);
|
||||
|
||||
Float() { }
|
||||
ScripterExport Float(float init_val);
|
||||
|
||||
static ScripterExport Value* intern(float init_val) { return new Float (init_val); } // hey!! no longer interns, stack alloc'd instead
|
||||
static ScripterExport Value* heap_intern(float init_val);
|
||||
|
||||
classof_methods (Float, Number);
|
||||
# define is_float(o) ((o)->tag == class_tag(Float))
|
||||
void collect() { delete this; }
|
||||
ScripterExport void sprin1(CharStream* s);
|
||||
|
||||
/* include all the protocol declarations */
|
||||
|
||||
#include "defimpfn.h"
|
||||
# include "mathpro.h"
|
||||
|
||||
float to_float() { return value; }
|
||||
int to_int() { return (int)value; }
|
||||
TimeValue to_timevalue() { return (TimeValue)(value * GetTicksPerFrame()); } // numbers used as times are in frames
|
||||
void to_fpvalue(FPValue& v) { v.f = to_float(); v.type = (ParamType2)TYPE_FLOAT; }
|
||||
|
||||
Value* widen_to(Value* arg, Value** arg_list);
|
||||
BOOL comparable(Value* arg) { return (is_integer(arg) || is_float(arg) || is_time(arg)); }
|
||||
|
||||
// scene I/O
|
||||
IOResult Save(ISave* isave);
|
||||
static Value* Load(ILoad* iload, USHORT chunkID, ValueLoader* vload);
|
||||
};
|
||||
|
||||
class Integer : public Number
|
||||
{
|
||||
public:
|
||||
int value;
|
||||
|
||||
ENABLE_STACK_ALLOCATE(Integer);
|
||||
|
||||
Integer() { };
|
||||
ScripterExport Integer(int init_val);
|
||||
|
||||
static ScripterExport Value* intern(int init_val) { return new Integer (init_val); } // hey!! no longer interns, stack alloc'd instead
|
||||
static ScripterExport Value* heap_intern(int init_val);
|
||||
|
||||
classof_methods (Integer, Number);
|
||||
# define is_int(o) ((o)->tag == class_tag(Integer))
|
||||
void collect() { delete this; }
|
||||
ScripterExport void sprin1(CharStream* s);
|
||||
|
||||
/* include all the protocol declarations */
|
||||
|
||||
#include "defimpfn.h"
|
||||
# include "mathpro.h"
|
||||
|
||||
float to_float() { return (float)value; }
|
||||
int to_int() { return value; }
|
||||
TimeValue to_timevalue() { return (TimeValue)(value * GetTicksPerFrame()); } // numbers used as times are in frames
|
||||
void to_fpvalue(FPValue& v) { v.i = to_int(); v.type = (ParamType2)TYPE_INT; }
|
||||
|
||||
Value* widen_to(Value* arg, Value** arg_list);
|
||||
BOOL comparable(Value* arg) { return (is_integer(arg) || is_float(arg) || is_time(arg)); }
|
||||
|
||||
// scene I/O
|
||||
IOResult Save(ISave* isave);
|
||||
static Value* Load(ILoad* iload, USHORT chunkID, ValueLoader* vload);
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user