96 lines
3.4 KiB
C
Executable File
96 lines
3.4 KiB
C
Executable File
/*
|
|
* def_instantiate_functions.h - macros for making instantiating declarations
|
|
* for MAXScript functions
|
|
*
|
|
* This will typically be used along with protocol definition files in
|
|
* distinguished Value subclasses that will host the static instantiation
|
|
* of MAXScript function objects.
|
|
*
|
|
* see def_abstract_functions.h for more info.
|
|
*
|
|
*
|
|
* Copyright © John Wainwright 1996
|
|
*
|
|
*/
|
|
/* def_generic macro for instantiation declarations */
|
|
|
|
#include "Funcs.h"
|
|
|
|
#ifdef def_generic
|
|
# undef def_generic
|
|
# undef def_node_generic
|
|
# undef def_mapped_generic
|
|
# undef def_visible_generic
|
|
# undef def_struct_generic
|
|
# undef use_generic
|
|
# undef def_primitive
|
|
# undef def_mapped_primitive
|
|
# undef def_lazy_primitive
|
|
# undef def_visible_lazy_primitive
|
|
# undef def_visible_primitive
|
|
# undef def_struct_primitive
|
|
# undef def_property
|
|
# undef def_property_alias
|
|
# undef def_2_prop_path
|
|
# undef def_2_prop_path_alias
|
|
# undef def_nested_prop
|
|
# undef def_nested_prop_alias
|
|
#endif
|
|
#ifdef def_prop_getter
|
|
# undef def_prop_getter
|
|
# undef def_prop_setter
|
|
#endif
|
|
|
|
#pragma pointers_to_members(full_generality, virtual_inheritance)
|
|
|
|
#define def_generic(fn, name) \
|
|
Generic fn##_gf (&_T("%"#name), &Value::fn##_vf)
|
|
#define def_visible_generic(fn, name) \
|
|
Generic fn##_gf (_T(name), &Value::fn##_vf)
|
|
#define def_struct_generic(fn, _struct, name) \
|
|
Generic fn##_gf (_T(name), &Value::fn##_vf, _T(#_struct))
|
|
#define def_node_generic(fn, name) \
|
|
NodeGeneric fn##_gf (_T(name), &Value::fn##_vf)
|
|
#define def_mapped_generic(fn, name) \
|
|
MappedGeneric fn##_gf (_T(name), &Value::fn##_vf)
|
|
#define use_generic(fn, name)
|
|
|
|
#define def_primitive(fn, name) \
|
|
Value* fn##_cf(Value**,int); \
|
|
Primitive fn##_pf (&_T("%"#name), fn##_cf) /* scripter-hidden name */
|
|
#define def_visible_primitive(fn, name) \
|
|
Value* fn##_cf(Value**,int); \
|
|
Primitive fn##_pf (_T(name), fn##_cf)
|
|
#define def_struct_primitive(fn, _struct, name) \
|
|
Value* fn##_cf(Value**,int); \
|
|
Primitive fn##_pf (_T(name), _T(#_struct), fn##_cf)
|
|
#define def_mapped_primitive(fn, name) \
|
|
Value* fn##_cf(Value**,int); \
|
|
MappedPrimitive fn##_pf (_T(name), fn##_cf)
|
|
#define def_lazy_primitive(fn, name) \
|
|
Value* fn##_cf(Value**,int); \
|
|
Primitive fn##_pf (&_T("%"#name), fn##_cf, LAZY_PRIMITIVE)
|
|
#define def_visible_lazy_primitive(fn, name) \
|
|
Value* fn##_cf(Value**,int); \
|
|
Primitive fn##_pf (_T(name), fn##_cf, LAZY_PRIMITIVE)
|
|
|
|
#define def_property(p) \
|
|
_T(#p), &Value::get_##p, &Value::set_##p,
|
|
#define def_property_alias(p, real_p) \
|
|
_T(#p), &Value::get_##real_p, &Value::set_##real_p,
|
|
#define def_2_prop_path(p1, p2) \
|
|
_T(#p1"."#p2), &Value::get_##p1##_##p2, &Value::set_##p1##_##p2,
|
|
#define def_2_prop_path_alias(p1, p2, real_p1, real_p2) \
|
|
_T(#p1"."#p2), &Value::get_##real_p1##_##real_p2, &Value::set_##real_p1##_##real_p2,
|
|
#define def_nested_prop(p1) \
|
|
_T("*."#p1), &Value::get_nested_##p1, &Value::set_nested_##p1,
|
|
#define def_nested_prop_alias(p1, real_p1) \
|
|
_T("*."#p1), &Value::get_nested_##real_p1, &Value::set_nested_##real_p1,
|
|
|
|
#undef def_name
|
|
#define def_name(name) ScripterExport Value* n_##name;
|
|
|
|
#undef def_marker
|
|
#define def_marker(var, str) ScripterExport Name var (_T(str));
|
|
|