maxscript/macros/value_locals.h File Reference

Macros

#define one_value_local(n1)
 
#define one_typed_value_local(n1)
 
#define two_value_locals(n1, n2)
 
#define two_typed_value_locals(n1, n2)
 
#define three_value_locals(n1, n2, n3)
 
#define three_typed_value_locals(n1, n2, n3)
 
#define four_value_locals(n1, n2, n3, n4)
 
#define four_typed_value_locals(n1, n2, n3, n4)
 
#define five_value_locals(n1, n2, n3, n4, n5)
 
#define five_typed_value_locals(n1, n2, n3, n4, n5)
 
#define six_value_locals(n1, n2, n3, n4, n5, n6)
 
#define six_typed_value_locals(n1, n2, n3, n4, n5, n6)
 
#define seven_value_locals(n1, n2, n3, n4, n5, n6, n7)
 
#define seven_typed_value_locals(n1, n2, n3, n4, n5, n6, n7)
 
#define eight_value_locals(n1, n2, n3, n4, n5, n6, n7, n8)
 
#define eight_typed_value_locals(n1, n2, n3, n4, n5, n6, n7, n8)
 
#define nine_value_locals(n1, n2, n3, n4, n5, n6, n7, n8, n9)
 
#define nine_typed_value_locals(n1, n2, n3, n4, n5, n6, n7, n8, n9)
 
#define ten_value_locals(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10)
 
#define ten_typed_value_locals(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10)
 
#define eleven_value_locals(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11)
 
#define eleven_typed_value_locals(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11)
 
#define value_local_array(var, count)
 
#define pop_value_local_array(var)   thread_local(current_locals_frame) = (Value**)var[-1];
 
#define value_temp_array(var, count)
 
#define value_temp_array0(var)
 
#define realloc_value_temp_array(var, count, old_count)
 
#define pop_value_temp_array(var)
 
#define return_value(r)   { return templated_return_value_fn(r, vl.link); }
 
#define return_value_no_pop(r)   { return templated_return_protected_fn(r); }
 
#define return_protected(r)   { return templated_return_protected_fn(r); }
 
#define pop_value_locals()   thread_local(current_locals_frame) = vl.link;
 
#define reset_locals_frame()   thread_local(current_locals_frame) = (Value**)&vl;
 
#define reset_locals_array_frame(var)   thread_local(current_locals_frame) = &var[-2];
 
#define clear_current_frames()
 
#define save_current_frames()
 
#define restore_current_frames()
 
#define save_current_source()
 
#define restore_current_source()
 
#define save_current_source_no_pos()
 
#define restore_current_source_no_pos()
 
#define save_current_source_pos()
 
#define restore_current_source_pos()
 
#define save_current_source_to_frame()
 
#define save_current_source_to_frame_no_pos()
 
#define save_current_source_to_frame_pos()
 
#define save_current_source_to_frame_no_file()
 
#define push_control(_c)
 
#define pop_control()   thread_local(current_controller) = _save_cc;
 
#define save_error_source_data()
 
#define clear_error_source_data()
 

Functions

template<typename Type >
Type templated_return_value_fn (Type r, Value **link)
 
template<typename Type >
Type templated_return_protected_fn (Type r)
 

Macro Definition Documentation

#define one_value_local (   n1)
Value:
struct { int count; Value** link; Value* n1; } vl = \
{ 1, NULL, NULL }; \
vl.link = thread_local(current_locals_frame); \
thread_local(current_locals_frame) = (Value**)&vl;
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define NULL
Definition: autoptr.h:20
Definition: value.h:103
#define one_typed_value_local (   n1)
Value:
struct { int count; Value** link; n1; } vl = \
{ 1, NULL, NULL }; \
vl.link = thread_local(current_locals_frame); \
thread_local(current_locals_frame) = (Value**)&vl;
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define NULL
Definition: autoptr.h:20
Definition: value.h:103
#define two_value_locals (   n1,
  n2 
)
Value:
struct { int count; Value** link; Value *n1, *n2; } vl = \
{ 2, NULL, NULL, NULL }; \
vl.link = thread_local(current_locals_frame); \
thread_local(current_locals_frame) = (Value**)&vl;
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define NULL
Definition: autoptr.h:20
Definition: value.h:103
#define two_typed_value_locals (   n1,
  n2 
)
Value:
struct { int count; Value** link; n1; n2; } vl = \
{ 2, NULL, NULL, NULL }; \
vl.link = thread_local(current_locals_frame); \
thread_local(current_locals_frame) = (Value**)&vl;
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define NULL
Definition: autoptr.h:20
Definition: value.h:103
#define three_value_locals (   n1,
  n2,
  n3 
)
Value:
struct { int count; Value** link; Value *n1, *n2, *n3; } vl = \
{ 3, NULL, NULL, NULL, NULL }; \
vl.link = thread_local(current_locals_frame); \
thread_local(current_locals_frame) = (Value**)&vl;
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define NULL
Definition: autoptr.h:20
Definition: value.h:103
#define three_typed_value_locals (   n1,
  n2,
  n3 
)
Value:
struct { int count; Value** link; n1; n2; n3; } vl = \
{ 3, NULL, NULL, NULL, NULL }; \
vl.link = thread_local(current_locals_frame); \
thread_local(current_locals_frame) = (Value**)&vl;
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define NULL
Definition: autoptr.h:20
Definition: value.h:103
#define four_value_locals (   n1,
  n2,
  n3,
  n4 
)
Value:
struct { int count; Value** link; Value *n1, *n2, *n3, *n4; } vl = \
{ 4, NULL, NULL, NULL, NULL, NULL }; \
vl.link = thread_local(current_locals_frame); \
thread_local(current_locals_frame) = (Value**)&vl;
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define NULL
Definition: autoptr.h:20
Definition: value.h:103
#define four_typed_value_locals (   n1,
  n2,
  n3,
  n4 
)
Value:
struct { int count; Value** link; n1; n2; n3; n4; } vl = \
{ 4, NULL, NULL, NULL, NULL, NULL }; \
vl.link = thread_local(current_locals_frame); \
thread_local(current_locals_frame) = (Value**)&vl;
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define NULL
Definition: autoptr.h:20
Definition: value.h:103
#define five_value_locals (   n1,
  n2,
  n3,
  n4,
  n5 
)
Value:
struct { int count; Value** link; Value *n1, *n2, *n3, *n4, *n5; } vl = \
{ 5, NULL, NULL, NULL, NULL, NULL, NULL }; \
vl.link = thread_local(current_locals_frame); \
thread_local(current_locals_frame) = (Value**)&vl;
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define NULL
Definition: autoptr.h:20
Definition: value.h:103
#define five_typed_value_locals (   n1,
  n2,
  n3,
  n4,
  n5 
)
Value:
struct { int count; Value** link; n1; n2; n3; n4; n5; } vl = \
{ 5, NULL, NULL, NULL, NULL, NULL, NULL }; \
vl.link = thread_local(current_locals_frame); \
thread_local(current_locals_frame) = (Value**)&vl;
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define NULL
Definition: autoptr.h:20
Definition: value.h:103
#define six_value_locals (   n1,
  n2,
  n3,
  n4,
  n5,
  n6 
)
Value:
struct { int count; Value** link; Value *n1, *n2, *n3, *n4, *n5, *n6; } vl = \
{ 6, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; \
vl.link = thread_local(current_locals_frame); \
thread_local(current_locals_frame) = (Value**)&vl;
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define NULL
Definition: autoptr.h:20
Definition: value.h:103
#define six_typed_value_locals (   n1,
  n2,
  n3,
  n4,
  n5,
  n6 
)
Value:
struct { int count; Value** link; n1; n2; n3; n4; n5; n6; } vl = \
{ 6, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; \
vl.link = thread_local(current_locals_frame); \
thread_local(current_locals_frame) = (Value**)&vl;
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define NULL
Definition: autoptr.h:20
Definition: value.h:103
#define seven_value_locals (   n1,
  n2,
  n3,
  n4,
  n5,
  n6,
  n7 
)
Value:
struct { int count; Value** link; Value *n1, *n2, *n3, *n4, *n5, *n6, *n7; } vl = \
{ 7, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; \
vl.link = thread_local(current_locals_frame); \
thread_local(current_locals_frame) = (Value**)&vl;
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define NULL
Definition: autoptr.h:20
Definition: value.h:103
#define seven_typed_value_locals (   n1,
  n2,
  n3,
  n4,
  n5,
  n6,
  n7 
)
Value:
struct { int count; Value** link; n1; n2; n3; n4; n5; n6; n7; } vl = \
{ 7, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; \
vl.link = thread_local(current_locals_frame); \
thread_local(current_locals_frame) = (Value**)&vl;
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define NULL
Definition: autoptr.h:20
Definition: value.h:103
#define eight_value_locals (   n1,
  n2,
  n3,
  n4,
  n5,
  n6,
  n7,
  n8 
)
Value:
struct { int count; Value** link; Value *n1, *n2, *n3, *n4, *n5, *n6, *n7, *n8; } vl = \
{ 8, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; \
vl.link = thread_local(current_locals_frame); \
thread_local(current_locals_frame) = (Value**)&vl;
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define NULL
Definition: autoptr.h:20
Definition: value.h:103
#define eight_typed_value_locals (   n1,
  n2,
  n3,
  n4,
  n5,
  n6,
  n7,
  n8 
)
Value:
struct { int count; Value** link; n1; n2; n3; n4; n5; n6; n7; n8; } vl = \
{ 8, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; \
vl.link = thread_local(current_locals_frame); \
thread_local(current_locals_frame) = (Value**)&vl;
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define NULL
Definition: autoptr.h:20
Definition: value.h:103
#define nine_value_locals (   n1,
  n2,
  n3,
  n4,
  n5,
  n6,
  n7,
  n8,
  n9 
)
Value:
struct { int count; Value** link; Value *n1, *n2, *n3, *n4, *n5, *n6, *n7, *n8, *n9; } vl = \
{ 9, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; \
vl.link = thread_local(current_locals_frame); \
thread_local(current_locals_frame) = (Value**)&vl;
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define NULL
Definition: autoptr.h:20
Definition: value.h:103
#define nine_typed_value_locals (   n1,
  n2,
  n3,
  n4,
  n5,
  n6,
  n7,
  n8,
  n9 
)
Value:
struct { int count; Value** link; n1; n2; n3; n4; n5; n6; n7; n8; n9; } vl = \
{ 9, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; \
vl.link = thread_local(current_locals_frame); \
thread_local(current_locals_frame) = (Value**)&vl;
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define NULL
Definition: autoptr.h:20
Definition: value.h:103
#define ten_value_locals (   n1,
  n2,
  n3,
  n4,
  n5,
  n6,
  n7,
  n8,
  n9,
  n10 
)
Value:
struct { int count; Value** link; Value *n1, *n2, *n3, *n4, *n5, *n6, *n7, *n8, *n9, *n10; } vl = \
{ 10, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; \
vl.link = thread_local(current_locals_frame); \
thread_local(current_locals_frame) = (Value**)&vl;
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define NULL
Definition: autoptr.h:20
Definition: value.h:103
#define ten_typed_value_locals (   n1,
  n2,
  n3,
  n4,
  n5,
  n6,
  n7,
  n8,
  n9,
  n10 
)
Value:
struct { int count; Value** link; n1; n2; n3; n4; n5; n6; n7; n8; n9; n10; } vl = \
{ 10, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; \
vl.link = thread_local(current_locals_frame); \
thread_local(current_locals_frame) = (Value**)&vl;
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define NULL
Definition: autoptr.h:20
Definition: value.h:103
#define eleven_value_locals (   n1,
  n2,
  n3,
  n4,
  n5,
  n6,
  n7,
  n8,
  n9,
  n10,
  n11 
)
Value:
struct { int count; Value** link; Value *n1, *n2, *n3, *n4, *n5, *n6, *n7, *n8, *n9, *n10, *n11; } vl = \
{ 11, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; \
vl.link = thread_local(current_locals_frame); \
thread_local(current_locals_frame) = (Value**)&vl;
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define NULL
Definition: autoptr.h:20
Definition: value.h:103
#define eleven_typed_value_locals (   n1,
  n2,
  n3,
  n4,
  n5,
  n6,
  n7,
  n8,
  n9,
  n10,
  n11 
)
Value:
struct { int count; Value** link; n1; n2; n3; n4; n5; n6; n7; n8; n9; n10; n11; } vl = \
{ 11, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; \
vl.link = thread_local(current_locals_frame); \
thread_local(current_locals_frame) = (Value**)&vl;
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define NULL
Definition: autoptr.h:20
Definition: value.h:103
#define value_local_array (   var,
  count 
)
Value:
{ \
var = &((Value**)_alloca(((count) + 2) * sizeof(Value*)))[2]; \
memset(var, 0, (count) * sizeof(Value*)); \
var[-2] = (Value*)(static_cast<INT_PTR>(count)); \
var[-1] = (Value*)thread_local(current_locals_frame); \
thread_local(current_locals_frame) = &var[-2]; }
#define thread_local(x)
Definition: MAXScript_TLS.h:42
Definition: value.h:103
#define pop_value_local_array (   var)    thread_local(current_locals_frame) = (Value**)var[-1];
#define value_temp_array (   var,
  count 
)
Value:
{ \
var = &((Value**)ms_malloc(((count) + 2) * sizeof(Value*)))[2]; \
memset(var, 0, (count) * sizeof(Value*)); \
var[-2] = (Value*)(static_cast<INT_PTR>(count)); \
var[-1] = (Value*)thread_local(current_locals_frame); \
thread_local(current_locals_frame) = &var[-2];}
#define thread_local(x)
Definition: MAXScript_TLS.h:42
Definition: value.h:103
ScripterExport void * ms_malloc(size_t sz)
#define value_temp_array0 (   var)
Value:
{ \
var = &((Value**)ms_malloc(2 * sizeof(Value*)))[2]; \
var[-2] = 0; \
var[-1] = (Value*)thread_local(current_locals_frame); \
thread_local(current_locals_frame) = &var[-2];}
#define thread_local(x)
Definition: MAXScript_TLS.h:42
Definition: value.h:103
ScripterExport void * ms_malloc(size_t sz)
#define realloc_value_temp_array (   var,
  count,
  old_count 
)
Value:
{ \
Value **oldPointer = &var[-2]; \
Value **sframe = thread_local(current_locals_frame); \
var = &((Value**)ms_realloc(&var[-2], ((count) + 2) * sizeof(Value*)))[2]; \
if ((count) > (old_count)) \
memset(&var[(old_count)], 0, ((count) - (old_count)) * sizeof(Value*)); \
var[-2] = (Value*)(static_cast<INT_PTR>(count)); \
Value **newPointer = &var[-2]; \
if (sframe == oldPointer) \
{ thread_local(current_locals_frame) = newPointer; \
DbgAssert( newPointer != (Value**)newPointer[1] ); \
} \
else \
{ Value **frame; \
for (frame = sframe; frame && (Value**)frame[1] != oldPointer && frame != (Value**)frame[1]; frame = (Value**)frame[1]); \
if (frame) { \
DbgAssert( frame != (Value**)frame[1] ); \
frame[1] = (Value*)newPointer; \
} \
} \
}
#define thread_local(x)
Definition: MAXScript_TLS.h:42
Definition: value.h:103
ScripterExport void * ms_realloc(void *p, size_t sz)
#define DbgAssert(expr)
Definition: assert1.h:74
#define pop_value_temp_array (   var)
Value:
{ \
Value **oldPointer = &var[-2]; \
/* Value **sframe = thread_local(current_locals_frame); */ \
Value **head = (Value**)var[-1]; \
thread_local(current_locals_frame) = head; \
ms_free(oldPointer); \
}
#define thread_local(x)
Definition: MAXScript_TLS.h:42
Definition: value.h:103
ScripterExport void ms_free(void *p)
#define return_value (   r)    { return templated_return_value_fn(r, vl.link); }
#define return_value_no_pop (   r)    { return templated_return_protected_fn(r); }
#define return_protected (   r)    { return templated_return_protected_fn(r); }
#define pop_value_locals ( )    thread_local(current_locals_frame) = vl.link;
#define reset_locals_frame ( )    thread_local(current_locals_frame) = (Value**)&vl;
#define reset_locals_array_frame (   var)    thread_local(current_locals_frame) = &var[-2];
#define clear_current_frames ( )
Value:
{ \
thread_local(current_locals_frame) = NULL; \
thread_local(current_frame) = NULL;}
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define NULL
Definition: autoptr.h:20
#define save_current_frames ( )
Value:
Value** _sclf = thread_local(current_locals_frame); \
Value** _scsf = thread_local(current_scan_frame); \
Value** _scf = thread_local(current_frame);
#define thread_local(x)
Definition: MAXScript_TLS.h:42
Definition: value.h:103
#define restore_current_frames ( )
Value:
{ \
thread_local(current_locals_frame) = _sclf; \
thread_local(current_scan_frame) = _scsf; \
thread_local(current_frame) = _scf;}
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define save_current_source ( )
Value:
Value* _save_source = thread_local(source_file); \
MSZipPackage* _save_pkg = thread_local(current_pkg); \
unsigned int _save_pos = thread_local(source_pos); \
unsigned int _save_line = thread_local(source_line); \
DWORD _save_flags = thread_local(source_flags);
#define thread_local(x)
Definition: MAXScript_TLS.h:42
Definition: value.h:103
#define restore_current_source ( )
Value:
{ \
thread_local(source_file) = _save_source; \
thread_local(current_pkg) = _save_pkg; \
thread_local(source_pos) = _save_pos; \
thread_local(source_line) = _save_line; \
thread_local(source_flags) = _save_flags;}
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define save_current_source_no_pos ( )
Value:
Value* _save_source = thread_local(source_file); \
MSZipPackage* _save_pkg = thread_local(current_pkg); \
DWORD _save_flags = thread_local(source_flags);
#define thread_local(x)
Definition: MAXScript_TLS.h:42
Definition: value.h:103
#define restore_current_source_no_pos ( )
Value:
{ \
thread_local(source_file) = _save_source; \
thread_local(current_pkg) = _save_pkg; \
thread_local(source_flags) = _save_flags;}
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define save_current_source_pos ( )
Value:
unsigned int _save_pos = thread_local(source_pos); \
unsigned int _save_line = thread_local(source_line); \
DWORD _save_flags = thread_local(source_flags);
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define restore_current_source_pos ( )
Value:
{ \
thread_local(source_pos) = _save_pos; \
thread_local(source_line) = _save_line; \
thread_local(source_flags) = _save_flags;}
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define save_current_source_to_frame ( )
Value:
{ \
Value** _frame = thread_local(current_scan_frame); \
if (_frame) _frame[3] = thread_local(source_file); \
if (_frame) _frame[4] = (Value*)thread_local(source_pos); \
if (_frame) _frame[8] = (Value*)thread_local(source_line); \
if (_frame) _frame[7] = (Value*)static_cast<DWORD_PTR>(thread_local(source_flags));}
#define thread_local(x)
Definition: MAXScript_TLS.h:42
Definition: value.h:103
#define save_current_source_to_frame_no_pos ( )
Value:
{ \
Value** _frame = thread_local(current_scan_frame); \
if (_frame) _frame[3] = thread_local(source_file); \
if (_frame) _frame[7] = (Value*)static_cast<DWORD_PTR>(thread_local(source_flags));}
#define thread_local(x)
Definition: MAXScript_TLS.h:42
Definition: value.h:103
#define save_current_source_to_frame_pos ( )
Value:
{ \
Value** _frame = thread_local(current_scan_frame); \
if (_frame) _frame[4] = (Value*)thread_local(source_pos); \
if (_frame) _frame[8] = (Value*)thread_local(source_line);}
#define thread_local(x)
Definition: MAXScript_TLS.h:42
Definition: value.h:103
#define save_current_source_to_frame_no_file ( )
Value:
{ \
Value** _frame = thread_local(current_scan_frame); \
if (_frame) _frame[4] = (Value*)thread_local(source_pos); \
if (_frame) _frame[8] = (Value*)thread_local(source_line);}
#define thread_local(x)
Definition: MAXScript_TLS.h:42
Definition: value.h:103
#define push_control (   _c)
Value:
Control* _save_cc = thread_local(current_controller); \
thread_local(current_controller) = _c;
#define thread_local(x)
Definition: MAXScript_TLS.h:42
Definition: control.h:1051
#define pop_control ( )    thread_local(current_controller) = _save_cc;
#define save_error_source_data ( )
Value:
{ \
thread_local(err_source_file) = thread_local(source_file); \
thread_local(err_source_pos) = thread_local(source_pos); \
thread_local(err_source_line)= thread_local(source_line); \
thread_local(err_source_flags) = thread_local(source_flags);\
thread_local(err_occurred) = TRUE;}
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define clear_error_source_data ( )
Value:
{ \
thread_local(err_source_file) = NULL; \
thread_local(err_source_pos) = 0; \
thread_local(err_source_flags) = 0; \
thread_local(err_source_line) = 0; \
thread_local(err_occurred) = FALSE;}
#define thread_local(x)
Definition: MAXScript_TLS.h:42
#define NULL
Definition: autoptr.h:20

Function Documentation

Type templated_return_value_fn ( Type  r,
Value **  link 
)
207 {
208  thread_local(current_result) = r;
209  thread_local(current_locals_frame) = link;
210  return r;
211 }
#define thread_local(x)
Definition: MAXScript_TLS.h:42
Type templated_return_protected_fn ( Type  r)
222 {
223  thread_local(current_result) = r;
224  return r;
225 }
#define thread_local(x)
Definition: MAXScript_TLS.h:42