maxscript/kernel/value.h File Reference

value.h File Reference

Classes

class  Value
 
class  ValueMetaClass
 
class  Boolean
 

Macros

#define def_generic(fn, name)   ScripterExport virtual Value* fn##_vf(Value** arglist, int arg_count);
 
#define is_valueclass(v)   ((DbgVerify(!is_sourcepositionwrapper(v)), (v))->tag == (ValueMetaClass*)&value_metaclass)
 
#define CHECK_ARG_COUNT(fn, w, g)   if ((w) != (g)) throw ArgCountError (_M(#fn), w, g)
 
#define classof_methods(_cls, _super)
 
#define visible_class(_cls)
 
#define visible_class_debug_ok(_cls)
 
#define visible_class_s(_cls, _super)
 
#define applyable_class(_cls)
 
#define applyable_class_debug_ok(_cls)
 
#define applyable_class_s(_cls, _super)
 
#define visible_class_instance(_cls, _name)   ScripterExport _cls##Class _cls##_class (_M(_name));
 
#define invisible_class(_cls)
 
#define invisible_class_instance(_cls, _name)   ScripterExport _cls##Class _cls##_class (_M(_name));
 
#define class_tag(_cls)   &_cls##_class
 
#define INTERNAL_CLASS_TAG   ((ValueMetaClass*)0L)
 
#define INTERNAL_INDEX_THUNK_TAG   ((ValueMetaClass*)1L)
 
#define INTERNAL_PROP_THUNK_TAG   ((ValueMetaClass*)2L)
 
#define INTERNAL_LOCAL_THUNK_TAG   ((ValueMetaClass*)3L)
 
#define INTERNAL_FREE_THUNK_TAG   ((ValueMetaClass*)4L)
 
#define INTERNAL_RO_LOCAL_THUNK_TAG   ((ValueMetaClass*)5L)
 
#define INTERNAL_CODE_TAG   ((ValueMetaClass*)6L)
 
#define INTERNAL_SOURCEFILEWRAPPER_TAG   ((ValueMetaClass*)7L)
 
#define INTERNAL_PIPE_TAG   ((ValueMetaClass*)8L)
 
#define INTERNAL_TOOL_LOCAL_THUNK_TAG   ((ValueMetaClass*)9L)
 
#define INTERNAL_GLOBAL_THUNK_TAG   ((ValueMetaClass*)10L)
 
#define INTERNAL_CONST_GLOBAL_THUNK_TAG   ((ValueMetaClass*)11L)
 
#define INTERNAL_SYS_GLOBAL_THUNK_TAG   ((ValueMetaClass*)12L)
 
#define INTERNAL_PLUGIN_LOCAL_THUNK_TAG   ((ValueMetaClass*)13L)
 
#define INTERNAL_PLUGIN_PARAM_THUNK_TAG   ((ValueMetaClass*)14L)
 
#define INTERNAL_RCMENU_LOCAL_THUNK_TAG   ((ValueMetaClass*)15L)
 
#define INTERNAL_STRUCT_MEM_THUNK_TAG   ((ValueMetaClass*)16L)
 
#define INTERNAL_MSPLUGIN_TAG   ((ValueMetaClass*)17L)
 
#define INTERNAL_STRUCT_TAG   ((ValueMetaClass*)18L)
 
#define INTERNAL_MAKER_TAG   ((ValueMetaClass*)19L)
 
#define INTERNAL_CODEBLOCK_LOCAL_TAG   ((ValueMetaClass*)20L)
 
#define INTERNAL_CODEBLOCK_TAG   ((ValueMetaClass*)21L)
 
#define INTERNAL_THUNK_REF_TAG   ((ValueMetaClass*)22L)
 
#define INTERNAL_THUNK_DEREF_TAG   ((ValueMetaClass*)23L)
 
#define INTERNAL_STRUCT_METHOD_TAG   ((ValueMetaClass*)24L)
 
#define INTERNAL_MSPLUGIN_METHOD_TAG   ((ValueMetaClass*)25L)
 
#define INTERNAL_CONTEXT_THUNK_TAG   ((ValueMetaClass*)26L)
 
#define INTERNAL_OWNER_THUNK_TAG   ((ValueMetaClass*)27L)
 
#define INTERNAL_RCMENU_ITEM_THUNK_TAG   ((ValueMetaClass*)28L)
 
#define INTERNAL_STANDINMSPLUGINCLASS_TAG   ((ValueMetaClass*)29L)
 
#define INTERNAL_SOURCEPOSWRAPPER_TAG   ((ValueMetaClass*)30L)
 
#define INTERNAL_TAGS   ((ValueMetaClass*)100L)
 
#define is_sourcepositionwrapper(v)   ((v)->tag == INTERNAL_SOURCEPOSWRAPPER_TAG)
 
#define is_bool(v)   ((DbgVerify(!is_sourcepositionwrapper(v)), (v))->tag == &Boolean_class)
 

Functions

Valueheap_ptr (Value *v)
 
Valuelive_ptr (Value *v)
 
 visible_class_debug_ok (Value) visible_class_debug_ok(Boolean) class Boolean
 
 visible_class_debug_ok (Undefined) class Undefined
 
 classof_methods (Undefined, Value)
 
void collect ()
 
ScripterExport void sprin1 (CharStream *s)
 
Valuecopy_vf (Value **arg_list, int count)
 
IOResult Save (ISave *isave)
 
static ValueLoad (ILoad *iload, USHORT chunkID, ValueLoader *vload)
 
Mtlto_mtl ()
 
void to_fpvalue (FPValue &v)
 
 visible_class_debug_ok (Ok) class Ok
 
 classof_methods (Ok, Value)
 
 visible_class_debug_ok (Empty) class Empty
 
 classof_methods (Empty, Value)
 
 visible_class_debug_ok (Unsupplied) class Unsupplied
 
 classof_methods (Unsupplied, Value)
 
 visible_class_debug_ok (NoValue) class NoValue
 
 classof_methods (NoValue, Value)
 
virtual ScripterExport void sprint (CharStream *stream)
 

Variables

ScripterExport Undefined undefined
 
ScripterExport bool dontThrowAccessorError
 
MetaClassClass value_metaclass
 
ScripterExport Boolean true_value
 
ScripterExport Boolean false_value
 
ScripterExport Undefined dontCollect
 
ScripterExport Undefined loopExit
 
ScripterExport Ok ok
 
ScripterExport Empty empty
 
ScripterExport Unsupplied unsupplied
 
ScripterExport NoValue noValue
 

Macro Definition Documentation

#define def_generic (   fn,
  name 
)    ScripterExport virtual Value* fn##_vf(Value** arglist, int arg_count);
#define is_valueclass (   v)    ((DbgVerify(!is_sourcepositionwrapper(v)), (v))->tag == (ValueMetaClass*)&value_metaclass)
#define CHECK_ARG_COUNT (   fn,
  w,
 
)    if ((w) != (g)) throw ArgCountError (_M(#fn), w, g)
#define classof_methods (   _cls,
  _super 
)
Value:
Value* classOf_vf(Value** arg_list, int count) \
{ \
UNUSED_PARAM(arg_list); \
CHECK_ARG_COUNT(classOf, 1, count + 1); \
return &_cls##_class; \
} \
Value* superClassOf_vf(Value** arg_list, int count) \
{ \
UNUSED_PARAM(arg_list); \
CHECK_ARG_COUNT(superClassOf, 1, count + 1); \
return &_super##_class; \
} \
Value* isKindOf_vf(Value** arg_list, int count) \
{ \
CHECK_ARG_COUNT(isKindOf, 2, count + 1); \
return (arg_list[0] == &_cls##_class) ? \
_super::isKindOf_vf(arg_list, count); \
} \
{ \
return (c == &_cls##_class) ? 1 \
}
Value * classOf_vf(Value **arg_list, int count)
Definition: value.h:282
Value * superClassOf_vf(Value **arg_list, int count)
BOOL is_kind_of(ValueMetaClass *c)
Definition: mxsmaterial.h:30
Definition: value.h:103
ScripterExport Boolean true_value
#define UNUSED_PARAM(x)
Definition: BuildWarnings.h:20
#define CHECK_ARG_COUNT(fn, w, g)
Definition: value.h:312
Value * isKindOf_vf(Value **arg_list, int count)
#define visible_class (   _cls)
Value:
class _cls##Class : public ValueMetaClass \
{ \
public: \
_cls##Class(const MCHAR* name) : ValueMetaClass (name) { } \
void collect() { delete this; } \
}; \
extern ScripterExport _cls##Class _cls##_class;
MAXMEM_EXTERN_C UtilExport void(__cdecl *MAX_free)(void *memblock)
Definition: value.h:282
Value * name
Definition: structs.h:25
#define ScripterExport
Definition: ScripterExport.h:7
#define MCHAR
MBCS/Unicode helper defines std::wofstream doesn't mix well with Unicode.
Definition: strbasic.h:92
virtual void collect()=0
#define visible_class_debug_ok (   _cls)
Value:
class _cls##Class : public ValueMetaClass \
{ \
public: \
_cls##Class(const MCHAR* name) : ValueMetaClass (name) { flags3 |= VALUE_FLAGBIT_0; } \
void collect() { delete this; } \
}; \
extern ScripterExport _cls##Class _cls##_class;
MAXMEM_EXTERN_C UtilExport void(__cdecl *MAX_free)(void *memblock)
Definition: value.h:282
Value * name
Definition: structs.h:25
#define ScripterExport
Definition: ScripterExport.h:7
#define MCHAR
MBCS/Unicode helper defines std::wofstream doesn't mix well with Unicode.
Definition: strbasic.h:92
virtual void collect()=0
Definition: collectable.h:61
#define visible_class_s (   _cls,
  _super 
)
Value:
class _cls##Class : public ValueMetaClass \
{ \
public: \
_cls##Class(const MCHAR* name) : ValueMetaClass (name) { } \
void collect() { delete this; } \
Value* classOf_vf(Value** arg_list, int count) \
{ \
UNUSED_PARAM(arg_list); \
CHECK_ARG_COUNT(classOf, 1, count + 1); \
return &_super##_class; \
} \
Value* superClassOf_vf(Value** arg_list, int count) \
{ \
UNUSED_PARAM(arg_list); \
UNUSED_PARAM(count); \
return _super##_class.classOf_vf(NULL, 0); \
} \
}; \
extern ScripterExport _cls##Class _cls##_class;
MAXMEM_EXTERN_C UtilExport void(__cdecl *MAX_free)(void *memblock)
Value * classOf_vf(Value **arg_list, int count)
Definition: value.h:282
Value * name
Definition: structs.h:25
#define ScripterExport
Definition: ScripterExport.h:7
#define NULL
Definition: autoptr.h:20
Value * superClassOf_vf(Value **arg_list, int count)
#define MCHAR
MBCS/Unicode helper defines std::wofstream doesn't mix well with Unicode.
Definition: strbasic.h:92
Definition: value.h:103
#define UNUSED_PARAM(x)
Definition: BuildWarnings.h:20
#define CHECK_ARG_COUNT(fn, w, g)
Definition: value.h:312
virtual void collect()=0
#define applyable_class (   _cls)
Value:
class _cls##Class : public ValueMetaClass \
{ \
public: \
_cls##Class(const MCHAR* name) : ValueMetaClass (name) { }\
void collect() { delete this; } \
ScripterExport Value* apply(Value** arglist, int count, CallContext* cc=NULL); \
}; \
extern ScripterExport _cls##Class _cls##_class;
MAXMEM_EXTERN_C UtilExport void(__cdecl *MAX_free)(void *memblock)
Definition: value.h:282
Value * name
Definition: structs.h:25
#define ScripterExport
Definition: ScripterExport.h:7
#define NULL
Definition: autoptr.h:20
Definition: functions.h:55
#define MCHAR
MBCS/Unicode helper defines std::wofstream doesn't mix well with Unicode.
Definition: strbasic.h:92
Definition: value.h:103
virtual ScripterExport Value * apply(Value **arglist, int count, CallContext *cc=NULL)
virtual void collect()=0
#define applyable_class_debug_ok (   _cls)
Value:
class _cls##Class : public ValueMetaClass \
{ \
public: \
_cls##Class(const MCHAR* name) : ValueMetaClass (name) { flags3 |= VALUE_FLAGBIT_0; }\
void collect() { delete this; } \
ScripterExport Value* apply(Value** arglist, int count, CallContext* cc=NULL); \
}; \
extern ScripterExport _cls##Class _cls##_class;
MAXMEM_EXTERN_C UtilExport void(__cdecl *MAX_free)(void *memblock)
Definition: value.h:282
Value * name
Definition: structs.h:25
#define ScripterExport
Definition: ScripterExport.h:7
#define NULL
Definition: autoptr.h:20
Definition: functions.h:55
#define MCHAR
MBCS/Unicode helper defines std::wofstream doesn't mix well with Unicode.
Definition: strbasic.h:92
Definition: value.h:103
virtual ScripterExport Value * apply(Value **arglist, int count, CallContext *cc=NULL)
virtual void collect()=0
Definition: collectable.h:61
#define applyable_class_s (   _cls,
  _super 
)
Value:
class _cls##Class : public ValueMetaClass \
{ \
public: \
_cls##Class(const MCHAR* name) : ValueMetaClass (name) { }\
Value* classOf_vf(Value** arg_list, int count) \
{ \
UNUSED_PARAM(arg_list); \
CHECK_ARG_COUNT(classOf, 1, count + 1); \
return &_super##_class; \
} \
Value* superClassOf_vf(Value** arg_list, int count) \
{ \
UNUSED_PARAM(arg_list); \
UNUSED_PARAM(count); \
return _super##_class.classOf_vf(NULL, 0); \
} \
void collect() { delete this; } \
ScripterExport Value* apply(Value** arglist, int count, CallContext* cc=NULL); \
}; \
extern ScripterExport _cls##Class _cls##_class;
MAXMEM_EXTERN_C UtilExport void(__cdecl *MAX_free)(void *memblock)
Value * classOf_vf(Value **arg_list, int count)
Definition: value.h:282
Value * name
Definition: structs.h:25
#define ScripterExport
Definition: ScripterExport.h:7
#define NULL
Definition: autoptr.h:20
Definition: functions.h:55
Value * superClassOf_vf(Value **arg_list, int count)
#define MCHAR
MBCS/Unicode helper defines std::wofstream doesn't mix well with Unicode.
Definition: strbasic.h:92
Definition: value.h:103
#define UNUSED_PARAM(x)
Definition: BuildWarnings.h:20
virtual ScripterExport Value * apply(Value **arglist, int count, CallContext *cc=NULL)
#define CHECK_ARG_COUNT(fn, w, g)
Definition: value.h:312
virtual void collect()=0
#define visible_class_instance (   _cls,
  _name 
)    ScripterExport _cls##Class _cls##_class (_M(_name));
#define invisible_class (   _cls)
Value:
class _cls##Class : public ValueMetaClass \
{ \
public: \
_cls##Class(const MCHAR* name) : ValueMetaClass (name) { } \
void collect() { delete this; } \
}; \
extern ScripterExport _cls##Class _cls##_class;
MAXMEM_EXTERN_C UtilExport void(__cdecl *MAX_free)(void *memblock)
Definition: value.h:282
Value * name
Definition: structs.h:25
#define ScripterExport
Definition: ScripterExport.h:7
ScripterExport void export_to_scripter()
#define MCHAR
MBCS/Unicode helper defines std::wofstream doesn't mix well with Unicode.
Definition: strbasic.h:92
virtual void collect()=0
#define invisible_class_instance (   _cls,
  _name 
)    ScripterExport _cls##Class _cls##_class (_M(_name));
#define class_tag (   _cls)    &_cls##_class
#define INTERNAL_CLASS_TAG   ((ValueMetaClass*)0L)
#define INTERNAL_INDEX_THUNK_TAG   ((ValueMetaClass*)1L)
#define INTERNAL_PROP_THUNK_TAG   ((ValueMetaClass*)2L)
#define INTERNAL_LOCAL_THUNK_TAG   ((ValueMetaClass*)3L)
#define INTERNAL_FREE_THUNK_TAG   ((ValueMetaClass*)4L)
#define INTERNAL_RO_LOCAL_THUNK_TAG   ((ValueMetaClass*)5L)
#define INTERNAL_CODE_TAG   ((ValueMetaClass*)6L)
#define INTERNAL_SOURCEFILEWRAPPER_TAG   ((ValueMetaClass*)7L)
#define INTERNAL_PIPE_TAG   ((ValueMetaClass*)8L)
#define INTERNAL_TOOL_LOCAL_THUNK_TAG   ((ValueMetaClass*)9L)
#define INTERNAL_GLOBAL_THUNK_TAG   ((ValueMetaClass*)10L)
#define INTERNAL_CONST_GLOBAL_THUNK_TAG   ((ValueMetaClass*)11L)
#define INTERNAL_SYS_GLOBAL_THUNK_TAG   ((ValueMetaClass*)12L)
#define INTERNAL_PLUGIN_LOCAL_THUNK_TAG   ((ValueMetaClass*)13L)
#define INTERNAL_PLUGIN_PARAM_THUNK_TAG   ((ValueMetaClass*)14L)
#define INTERNAL_RCMENU_LOCAL_THUNK_TAG   ((ValueMetaClass*)15L)
#define INTERNAL_STRUCT_MEM_THUNK_TAG   ((ValueMetaClass*)16L)
#define INTERNAL_MSPLUGIN_TAG   ((ValueMetaClass*)17L)
#define INTERNAL_STRUCT_TAG   ((ValueMetaClass*)18L)
#define INTERNAL_MAKER_TAG   ((ValueMetaClass*)19L)
#define INTERNAL_CODEBLOCK_LOCAL_TAG   ((ValueMetaClass*)20L)
#define INTERNAL_CODEBLOCK_TAG   ((ValueMetaClass*)21L)
#define INTERNAL_THUNK_REF_TAG   ((ValueMetaClass*)22L)
#define INTERNAL_THUNK_DEREF_TAG   ((ValueMetaClass*)23L)
#define INTERNAL_STRUCT_METHOD_TAG   ((ValueMetaClass*)24L)
#define INTERNAL_MSPLUGIN_METHOD_TAG   ((ValueMetaClass*)25L)
#define INTERNAL_CONTEXT_THUNK_TAG   ((ValueMetaClass*)26L)
#define INTERNAL_OWNER_THUNK_TAG   ((ValueMetaClass*)27L)
#define INTERNAL_RCMENU_ITEM_THUNK_TAG   ((ValueMetaClass*)28L)
#define INTERNAL_STANDINMSPLUGINCLASS_TAG   ((ValueMetaClass*)29L)
#define INTERNAL_SOURCEPOSWRAPPER_TAG   ((ValueMetaClass*)30L)
#define INTERNAL_TAGS   ((ValueMetaClass*)100L)
#define is_sourcepositionwrapper (   v)    ((v)->tag == INTERNAL_SOURCEPOSWRAPPER_TAG)
#define is_bool (   v)    ((DbgVerify(!is_sourcepositionwrapper(v)), (v))->tag == &Boolean_class)

Function Documentation

Value* heap_ptr ( Value v)
inline
274 { return v ? v->get_heap_ptr() : NULL; } // ensure v is in heap, migrate if not, return heap pointer
#define NULL
Definition: autoptr.h:20
ScripterExport Value * get_heap_ptr()
Definition: value.h:267
Value* live_ptr ( Value v)
inline
275 { return v->get_live_ptr(); } // get live pointer, if on stack & migrated, heap copy is live
ScripterExport Value * get_live_ptr()
Definition: value.h:270
visible_class_debug_ok ( Value  )
visible_class_debug_ok ( Undefined  )
518  : public Value
519 {
520 public:
521  Undefined() { tag = &Undefined_class; }
Definition: value.h:103
classof_methods ( Undefined  ,
Value   
)
void collect ( )
ScripterExport void sprin1 ( CharStream s)
351 { s->printf(_M("LabelControl:%s"), name->to_string()); }
Value * name
Definition: structs.h:25
#define _M(x)
Used to wrap string literals.
Definition: strbasic.h:122
virtual const MCHAR * to_string()
Definition: value.h:171
Value * copy_vf ( Value **  arg_list,
int  count 
)
525 { return this; }
IOResult Save ( ISave isave)
static Value * Load ( ILoad iload,
USHORT  chunkID,
ValueLoader vload 
)
static
Mtl* to_mtl ( )
530 { return NULL; } // undefined is a NULL material
#define NULL
Definition: autoptr.h:20
void to_fpvalue ( FPValue v)
467 { v.iobj = iobj; v.type = TYPE_IOBJECT; }
Definition: paramtype.h:95
IObject * iobj
Definition: ifnpub.h:1193
ParamType2 type
Definition: ifnpub.h:1152
visible_class_debug_ok ( Ok  )
544  : public Value
545 {
546 public:
547  Ok() { tag = &Ok_class; }
Definition: value.h:103
classof_methods ( Ok  ,
Value   
)
visible_class_debug_ok ( Empty  )
567  : public Value
568 {
569 public:
570  Empty() { tag = &Empty_class; }
Definition: value.h:103
classof_methods ( Empty  ,
Value   
)
visible_class_debug_ok ( Unsupplied  )
590  : public Value
591 {
592 public:
593  Unsupplied() { tag = &Unsupplied_class; }
Definition: value.h:103
classof_methods ( Unsupplied  ,
Value   
)
visible_class_debug_ok ( NoValue  )
620  : public Value
621 {
622 public:
623  NoValue() { tag = &NoValue_class; }
Definition: value.h:103
classof_methods ( NoValue  ,
Value   
)
virtual ScripterExport void sprint ( CharStream stream)
virtual

Variable Documentation

ScripterExport Undefined undefined
ScripterExport bool dontThrowAccessorError
MetaClassClass value_metaclass
ScripterExport Boolean true_value
ScripterExport Boolean false_value
ScripterExport Undefined dontCollect
ScripterExport Undefined loopExit
ScripterExport Empty empty
ScripterExport Unsupplied unsupplied
ScripterExport NoValue noValue