3ds Max C++ API Reference
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Array Class Reference

#include <arrays.h>

+ Inheritance diagram for Array:

Public Member Functions

ScripterExport Array (int init_size)
 
 ~Array ()
 
 classof_methods (Array, Value)
 
ScripterExport Value *& operator[] (const int i) const
 
BOOL _is_collection () override
 
BOOL _is_selection () override
 
void gc_trace () override
 
void collect () override
 
bool ValuesEqual (Value *other, bool strictCompare) override
 
void sprin1 (CharStream *s) override
 
 use_generic (plus, "+")
 
 use_generic (copy, "copy")
 
 use_generic (coerce, "coerce")
 
 use_generic (free, "free")
 
Valuemap (node_map &m) override
 
Valuemap_path (PathName *path, node_map &m) override
 
Valuefind_first (BOOL(*test_fn)(INode *node, int level, const void *arg), const void *test_arg) override
 
Valueget_path (PathName *path) override
 
 def_property (count)
 
ScripterExport Valueappend (Value *)
 
ScripterExport Valuejoin (Value *)
 
ScripterExport Valuesort ()
 
ScripterExport Valuepush (Value *)
 
ScripterExport Valuedrop ()
 
ScripterExport Valueget (int index)
 
ScripterExport BOOL deep_eq (Value *other)
 
Valuedeep_copy (HashTable *remapper) override
 
SelectionIteratorselection_iterator () override
 
IOResult Save (ISave *isave) override
 
void to_fpvalue (FPValue &v) override
 
- Public Member Functions inherited from Value
virtual ScripterExport BOOL is_kind_of (ValueMetaClass *c)
 
virtual ScripterExport ValueMetaClasslocal_base_class ()
 
virtual Valueeval ()
 
virtual Valueeval_no_wrapper ()
 
virtual ScripterExport Valueapply (Value **arglist, int count, CallContext *cc=nullptr)
 
virtual ScripterExport Valueapply_no_alloc_frame (Value **arglist, int count, CallContext *cc=nullptr)
 
virtual void export_to_scripter ()
 
virtual Valuemap (node_map &m)
 
virtual Valuemap_path (PathName *path, node_map &m)
 
virtual Valuefind_first (BOOL(*test_fn)(INode *node, int level, const void *arg), const void *test_arg)
 
virtual Valueget_path (PathName *path)
 
virtual ScripterExport void sprin1 (CharStream *stream)
 
virtual ScripterExport void sprint (CharStream *stream)
 
virtual void prin1 ()
 
virtual void print ()
 
virtual Class_ID get_max_class_id ()
 
virtual Valuedelete_vf (Value **arglist, int arg_count)
 
virtual ValueclearSelection_vf (Value **arglist, int arg_count)
 
virtual float to_float ()
 
virtual double to_double ()
 
virtual const MCHARto_string ()
 
virtual MSTR to_mstr ()
 
virtual MSTR to_filename ()
 
virtual int to_int ()
 
virtual INT64 to_int64 ()
 
virtual INT_PTR to_intptr ()
 
virtual BOOL to_bool ()
 
virtual BitArray & to_bitarray ()
 
virtual Point4 to_point4 ()
 
virtual Point3 to_point3 ()
 
virtual Point2 to_point2 ()
 
virtual AColor to_acolor ()
 
virtual COLORREF to_colorref ()
 
virtual INodeto_node ()
 
virtual Ray to_ray ()
 
virtual Interval to_interval ()
 
virtual Quat to_quat ()
 
virtual AngAxis to_angaxis ()
 
virtual Matrix3 & to_matrix3 ()
 
virtual Box3 to_box3 ()
 
virtual float * to_eulerangles ()
 
virtual Mtlto_mtl ()
 
virtual Texmapto_texmap ()
 
virtual MtlBaseto_mtlbase ()
 
virtual Modifierto_modifier ()
 
virtual TimeValue to_timevalue ()
 
virtual Controlto_controller ()
 
virtual Atmosphericto_atmospheric ()
 
virtual Effectto_effect ()
 
virtual IMultiPassCameraEffectto_mpassCamEffect ()
 
virtual ShadowTypeto_shadowtype ()
 
virtual FilterKernelto_filter ()
 
virtual INodeto_rootnode ()
 
virtual ITrackViewNodeto_trackviewnode ()
 
virtual NURBSIndependentPointto_nurbsindependentpoint ()
 
virtual NURBSPointto_nurbspoint ()
 
virtual NURBSObjectto_nurbsobject ()
 
virtual NURBSControlVertexto_nurbscontrolvertex ()
 
virtual NURBSCurveto_nurbscurve ()
 
virtual NURBSCVCurveto_nurbscvcurve ()
 
virtual NURBSSurfaceto_nurbssurface ()
 
virtual NURBSTexturePointto_nurbstexturepoint ()
 
virtual NURBSSetto_nurbsset ()
 
virtual ReferenceTargetto_reftarg ()
 
virtual Meshto_mesh ()
 
virtual BezierShapeto_beziershape ()
 
virtual Thunkto_thunk ()
 
virtual void to_fpvalue (FPValue &v)
 
virtual Rendererto_renderer ()
 
virtual Box2 & to_box2 ()
 
virtual NURBSTextureSurfaceto_nurbstexturesurface ()
 
virtual NURBSDisplayto_nurbsdisplay ()
 
virtual TessApproxto_tessapprox ()
 
virtual Valuewiden_to (Value *arg, Value **arg_list)
 
virtual BOOL comparable (Value *arg)
 
virtual BOOL special_case_compare (Value *arg, bool &specialCaseCompareResult)
 
virtual ScripterExport bool ValuesEqual (Value *other, bool strictCompare)
 
virtual ScripterExport Valuedeep_copy (HashTable *remapper)
 
virtual BOOL is_const ()
 
virtual ScripterExport Valueget_property (Value **arg_list, int count)
 
virtual ScripterExport Valueset_property (Value **arg_list, int count)
 
ScripterExport Value_get_property (Value *prop)
 
virtual ScripterExport Value_set_property (Value *prop, Value *val)
 
virtual Valueget_container_property (Value *prop, Value *cur_prop)
 
virtual Valueset_container_property (Value *prop, Value *val, Value *cur_prop)
 
virtual BOOL _is_collection ()
 
virtual BOOL _is_charstream ()
 
virtual BOOL _is_rolloutcontrol ()
 
virtual BOOL _is_rolloutthunk ()
 
virtual BOOL _is_function ()
 
virtual BOOL _is_selection ()
 
virtual BOOL _is_thunk ()
 
virtual BOOL _is_indirect_thunk ()
 
virtual SelectionIteratorselection_iterator ()
 
virtual ScripterExport IOResult Save (ISave *isave)
 
virtual void drop_MAX_refs ()
 
virtual BaseInterfaceGetInterface (Interface_ID id)
 
ScripterExport Valuemake_heap_permanent ()
 
ScripterExport Valuemake_heap_static ()
 
ScripterExport Valueget_heap_ptr ()
 
ScripterExport Valueget_stack_heap_ptr ()
 
ScripterExport Valuemigrate_to_heap ()
 
ScripterExport Valueget_live_ptr ()
 
virtual BOOL object_supports_case_sensitive_names ()
 
ScripterExport Value_get_property (Value *prop, Value *prop_name_as_parsed)
 
ScripterExport Value_set_property (Value *prop, Value *val, Value *prop_name_as_parsed)
 
virtual ScripterExport Valueget_case_sensitive_property (Value **arg_list, int count, const TCHAR *case_sensitive_name)
 
virtual ScripterExport Valueset_case_sensitive_property (Value **arg_list, int count, const TCHAR *case_sensitive_name)
 
ScripterExport Valueinvoke_getter_case_sensitive_property (Value *target, getter_vf getter, Value **arg_list, int count, const TCHAR *case_sensitive_name, const TCHAR *nested_prop_case_sensitive_name)
 
ScripterExport Valueinvoke_setter_case_sensitive_property (Value *target, setter_vf setter, Value **arg_list, int count, const TCHAR *case_sensitive_name, const TCHAR *nested_prop_case_sensitive_name)
 
- Public Member Functions inherited from Collectable
ScripterExport Collectable ()
 
virtual ScripterExport ~Collectable ()
 
ScripterExport voidoperator new (size_t sz, char flag)
 
ScripterExport voidoperator new (size_t sz)
 
ScripterExport void operator delete (void *val)
 
ScripterExport void operator delete (void *val, char flag)
 
virtual void collect ()=0
 
virtual ScripterExport void gc_trace ()
 
ScripterExport bool derives_from_Animatable ()
 
virtual BOOL derives_from_MAXWrapper ()
 
ScripterExport void make_collectable ()
 
void make_permanent ()
 
void make_static ()
 
int is_marked ()
 
int is_not_marked ()
 
int is_garbage ()
 
int is_permanent ()
 
void mark_in_use ()
 
void unmark_in_use ()
 
int has_heap_copy ()
 
int is_in_heap ()
 
int is_on_stack ()
 
- Public Member Functions inherited from Collection
virtual Valuemap_path (PathName *path, value_vf vfn_ptr, value_cf cfn_ptr, Value **arg_list, int count)
 
virtual Valuefind_first (BOOL(*test_fn)(INode *node, int level, const void *arg), const void *test_arg)
 
virtual Valueget_path (PathName *path_name)
 

Static Public Member Functions

static Valuemake (Value **arg_list, int count)
 
static Valuemake_eval_args (Value **arg_list, int count)
 
static void setup ()
 
static ValueLoad (ILoad *iload, USHORT chunkID, ValueLoader *vload)
 
- Static Public Member Functions inherited from Collectable
static ScripterExport void for_all_values (void(*map_fn)(Value *val), ValueMapper *mapper=nullptr, ValueMetaClass *c=nullptr)
 
static void mark ()
 
static void sweep ()
 
static void setup (size_t)
 
static ScripterExport void gc ()
 
static void coalesce_free_list ()
 
static void close_down ()
 
static void drop_maxwrapper_refs ()
 
static ScripterExport void push_alloc_stack_frame ()
 
static ScripterExport void pop_alloc_stack_frame ()
 
static ScripterExport ULONGLONG get_num_values_created ()
 
static ScripterExport bool validate_value_linkages ()
 

Public Attributes

int volatile size
 
int data_size
 
Value **volatile data
 
- Public Attributes inherited from Value
ValueMetaClasstag
 
- Public Attributes inherited from Collectable
Collectablenext
 
Collectableprev
 
byte flags
 
byte flags2
 
short flags3
 

Static Public Attributes

static ScripterExport CRITICAL_SECTION array_update
 
- Static Public Attributes inherited from Collectable
static CRITICAL_SECTION heap_update
 
static Collectablecollectable_list
 
static Collectablepermanent_list
 
static free_memfree_list [GC_NUM_SUBLISTS]
 
static size_t heap_allocated
 
static size_t heap_size
 
static ScripterExport collectable_state state
 
static ScripterExport bool fullCollectNextHoldFlush
 
static bool gc_light
 
static bool in_gc
 
static HANDLE hGCCompletedEvent
 

Additional Inherited Members

- Static Protected Attributes inherited from Value
static ScripterExport Valuekeyarg_marker_value
 

Constructor & Destructor Documentation

◆ Array()

ScripterExport Array ( int  init_size)

◆ ~Array()

~Array ( )

Member Function Documentation

◆ classof_methods()

classof_methods ( Array  ,
Value   
)

◆ make()

static Value * make ( Value **  arg_list,
int  count 
)
static

◆ make_eval_args()

static Value * make_eval_args ( Value **  arg_list,
int  count 
)
static

◆ setup()

static void setup ( )
static

◆ operator[]()

ScripterExport Value *& operator[] ( const int  i) const

◆ _is_collection()

BOOL _is_collection ( )
inlineoverridevirtual

Reimplemented from Value.

40{ DbgAssert(!is_sourcepositionwrapper(this)); return 1; }
#define DbgAssert(expr)
Definition: assert1.h:83
#define is_sourcepositionwrapper(v)
Definition: value.h:645

◆ _is_selection()

BOOL _is_selection ( )
inlineoverridevirtual

Reimplemented from Value.

41{ DbgAssert(!is_sourcepositionwrapper(this)); return 1; }

◆ gc_trace()

void gc_trace ( )
overridevirtual

Reimplemented from Collectable.

◆ collect()

void collect ( )
overridevirtual

Implements Collectable.

◆ ValuesEqual()

bool ValuesEqual ( Value other,
bool  strictCompare 
)
overridevirtual
Remarks
Compare whether 2 values are equivalent. The ValuesEqual method is used by the deepEqual function to test to see if two values are equivalent. This allows, for example, testing to see if 2 arrays are equivalent. (The == operator on arrays just tests to see if the two arrays are the same array). Classes that implement this method are Value, Array, DataPair, and MXSDictionary
Parameters
otherThe value to compare against this value
strictCompareIf true, the type of 'other' must be the same as this value. If false, 'other' must just be comparable with this value using the eq_vf method. So, for example, Integer value 1 and Float value 1 would compare as false if strictCompare is true, and true if strictCompare is false.
Returns
True if the value is equivalent, false if not.
Example implementations:
bool Value::ValuesEqual(Value* other, bool strictCompare)
{
if (this == other)
return true;
if (other == nullptr)
return false;
if (strictCompare)
{
if (tag != other->tag)
return false;
}
else
{
if (!comparable(other))
return false;
}
Value* temp[1] = { other };
return (eq_vf(temp, 1) == &true_value);
}
bool Array::ValuesEqual(Value* other, bool strictCompare)
{
if (this == other)
return true;
if (other == nullptr)
return false;
if (!is_array(other))
return false;
Array* a2 = (Array*)other;
if (size != a2->size)
return false;
for (int i = 0; i < size; i++)
{
if (!data[i]->ValuesEqual(a2->data[i], strictCompare))
return false;
}
return true;
}
#define is_array(v)
Definition: arrays.h:39
Definition: arrays.h:20
int volatile size
Definition: arrays.h:22
Value **volatile data
Definition: arrays.h:24
bool ValuesEqual(Value *other, bool strictCompare) override
Definition: value.h:107
virtual BOOL comparable(Value *arg)
Definition: value.h:235
virtual ScripterExport bool ValuesEqual(Value *other, bool strictCompare)
ValueMetaClass * tag
Definition: value.h:114
ScripterExport Boolean true_value

Reimplemented from Value.

◆ sprin1()

void sprin1 ( CharStream s)
overridevirtual

Reimplemented from Value.

◆ use_generic() [1/4]

use_generic ( plus  ,
"+"   
)

◆ use_generic() [2/4]

use_generic ( copy  ,
"copy"   
)

◆ use_generic() [3/4]

use_generic ( coerce  ,
"coerce"   
)

◆ use_generic() [4/4]

use_generic ( free  ,
"free"   
)

◆ map()

Value * map ( node_map m)
overridevirtual

Reimplemented from Value.

◆ map_path()

Value * map_path ( PathName path,
node_map m 
)
overridevirtual

Reimplemented from Value.

◆ find_first()

Value * find_first ( BOOL(*)(INode *node, int level, const void *arg)  test_fn,
const void test_arg 
)
overridevirtual

Reimplemented from Collection.

◆ get_path()

Value * get_path ( PathName path)
overridevirtual

Reimplemented from Collection.

◆ def_property()

def_property ( count  )

◆ append()

ScripterExport Value * append ( Value )

◆ join()

ScripterExport Value * join ( Value )

◆ sort()

ScripterExport Value * sort ( )

◆ push()

ScripterExport Value * push ( Value )

◆ drop()

ScripterExport Value * drop ( )

◆ get()

ScripterExport Value * get ( int  index)

◆ deep_eq()

ScripterExport BOOL deep_eq ( Value other)

◆ deep_copy()

Value * deep_copy ( HashTable remapper)
overridevirtual

Reimplemented from Value.

◆ selection_iterator()

SelectionIterator * selection_iterator ( )
overridevirtual

Reimplemented from Value.

◆ Save()

IOResult Save ( ISave isave)
overridevirtual

Reimplemented from Value.

◆ Load()

static Value * Load ( ILoad iload,
USHORT  chunkID,
ValueLoader vload 
)
static

◆ to_fpvalue()

void to_fpvalue ( FPValue v)
overridevirtual

Reimplemented from Value.

Member Data Documentation

◆ size

int volatile size

◆ data_size

int data_size

◆ data

Value** volatile data

◆ array_update

ScripterExport CRITICAL_SECTION array_update
static