virtual Value* get_##p1##_##p2(
Value** arg_list,
int count) \
{ \
two_value_locals(cont, result); \
Value* args[4] = { n_##p1, keyarg_marker_value, n_propCaseSensitiveName, csn}; \
vl.cont = get_##p1(args, csn ? 4 : 1); \
Value* args2[4] = { n_##p2, keyarg_marker_value, n_propCaseSensitiveName, nested_csn}; \
vl.result = vl.cont->get_##p2(args2, nested_csn ? 4 : 1); \
return_value(vl.result); \
} \
virtual Value* set_##p1##_##p2(Value** arg_list, int count) \
{ \
one_value_local(cont); \
Value* args[4] = { n_##p1, keyarg_marker_value, n_propCaseSensitiveName, csn}; \
vl.cont = get_##p1(args, csn ? 4 : 1); \
Value* args2[5] = { arg_list[0], n_##p2, keyarg_marker_value, n_propCaseSensitiveName, nested_csn}; \
vl.cont->set_##p2(args2, nested_csn ? 5 : 2); \
Value* args3[5] = { vl.cont, n_##p1, keyarg_marker_value, n_propCaseSensitiveName, csn}; \
set_##p1(args3, csn ? 5 : 2); \
return arg_list[0]; \
}
ScripterExport Value * _get_key_arg_or_default(Value **arg_list, int count, Value *key_name, Value *def)
105#define def_2_prop_path(p1, p2) \
106 virtual Value* get_##p1##_##p2(Value** arg_list, int count) \
107 { \
108 two_value_locals(cont, result); \
109 Value* csn = _get_key_arg_or_default(arg_list, count, n_propCaseSensitiveName, nullptr); \
110 Value* args[4] = { n_##p1, keyarg_marker_value, n_propCaseSensitiveName, csn}; \
111 vl.cont = get_##p1(args, csn ? 4 : 1); \
112 Value* nested_csn = _get_key_arg_or_default(arg_list, count, n_nestedPropCaseSensitiveName, nullptr); \
113 Value* args2[4] = { n_##p2, keyarg_marker_value, n_propCaseSensitiveName, nested_csn}; \
114 vl.result = vl.cont->get_##p2(args2, nested_csn ? 4 : 1); \
115 return_value(vl.result); \
116 } \
117 virtual Value* set_##p1##_##p2(Value** arg_list, int count) \
118 { \
119 one_value_local(cont); \
120 Value* csn = _get_key_arg_or_default(arg_list, count, n_propCaseSensitiveName, nullptr); \
121 Value* args[4] = { n_##p1, keyarg_marker_value, n_propCaseSensitiveName, csn}; \
122 vl.cont = get_##p1(args, csn ? 4 : 1); \
123 Value* nested_csn = _get_key_arg_or_default(arg_list, count, n_nestedPropCaseSensitiveName, nullptr); \
124 Value* args2[5] = { arg_list[0], n_##p2, keyarg_marker_value, n_propCaseSensitiveName, nested_csn}; \
125 vl.cont->set_##p2(args2, nested_csn ? 5 : 2); \
126 Value* args3[5] = { vl.cont, n_##p1, keyarg_marker_value, n_propCaseSensitiveName, csn}; \
127 set_##p1(args3, csn ? 5 : 2); \
128 return arg_list[0]; \
129 }