Skip to content

Commit 8b57a68

Browse files
committed
Add lua public_field, implementation from @samuele3hu
1 parent 3e51152 commit 8b57a68

File tree

1 file changed

+100
-0
lines changed

1 file changed

+100
-0
lines changed
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
## ===== member implementation template
2+
int ${signature_name}_get${name}(lua_State* tolua_S)
3+
{
4+
${namespaced_class_name}* cobj = nullptr;
5+
\#if COCOS2D_DEBUG >= 1
6+
tolua_Error tolua_err;
7+
if (!tolua_isusertype(tolua_S,1,"${generator.scriptname_from_native($namespaced_class_name, $namespace_name)}",0,&tolua_err)) goto tolua_lerror;
8+
\#endif
9+
10+
cobj = (${namespaced_class_name}*)tolua_tousertype(tolua_S,1,0);
11+
12+
\#if COCOS2D_DEBUG >= 1
13+
if (!cobj)
14+
{
15+
tolua_error(tolua_S,"invalid 'cobj' in function '${signature_name}_get${name}'", nullptr);
16+
return 0;
17+
}
18+
\#endif
19+
20+
#if $ntype.is_object and not $ntype.object_can_convert($generator, False)
21+
${ntype.from_native({"generator": $generator,
22+
"type_name": $ntype.namespaced_name.replace("*", ""),
23+
"ntype": $ntype.get_whole_name($generator)+"*",
24+
"level": 2,
25+
"scriptname": $generator.scriptname_from_native($ntype.namespaced_name, $ntype.namespace_name),
26+
"in_value":"&cobj->" + $pretty_name,
27+
})};
28+
#else
29+
${ntype.from_native({"generator": $generator,
30+
"type_name": $ntype.namespaced_name.replace("*", ""),
31+
"ntype": $ntype.get_whole_name($generator),
32+
"level": 2,
33+
"scriptname": $generator.scriptname_from_native($ntype.namespaced_name, $ntype.namespace_name),
34+
"in_value":"cobj->" + $pretty_name,
35+
})};
36+
#end if
37+
38+
return 1;
39+
\#if COCOS2D_DEBUG >= 1
40+
tolua_lerror:
41+
tolua_error(tolua_S,"#ferror in function '${signature_name}_get${name}'.",&tolua_err);
42+
return 0;
43+
\#endif
44+
}
45+
46+
int ${signature_name}_set${name}(lua_State* tolua_S)
47+
{
48+
int argc = 0;
49+
${namespaced_class_name}* cobj = nullptr;
50+
bool ok = true;
51+
52+
\#if COCOS2D_DEBUG >= 1
53+
tolua_Error tolua_err;
54+
if (!tolua_isusertype(tolua_S,1,"${generator.scriptname_from_native($namespaced_class_name, $namespace_name)}",0,&tolua_err)) goto tolua_lerror;
55+
\#endif
56+
57+
cobj = (${namespaced_class_name}*)tolua_tousertype(tolua_S,1,0);
58+
59+
\#if COCOS2D_DEBUG >= 1
60+
if (!cobj)
61+
{
62+
tolua_error(tolua_S,"invalid 'cobj' in function '${signature_name}_set${name}'", nullptr);
63+
return 0;
64+
}
65+
\#endif
66+
argc = lua_gettop(tolua_S) - 1;
67+
68+
if (1 == argc)
69+
{
70+
#if $ntype.is_object and not $ntype.object_can_convert($generator)
71+
${ntype.to_string($generator)}* arg0 = nullptr;
72+
#else
73+
${ntype.to_string($generator)} arg0;
74+
#end if
75+
${ntype.to_native({"generator": $generator,
76+
"arg_idx": 2,
77+
"out_value": "arg0",
78+
"lua_namespaced_class_name": $generator.scriptname_from_native($namespaced_class_name, $namespace_name),
79+
"func_name": $name,
80+
"scriptname": $generator.scriptname_from_native($ntype.namespaced_name, $ntype.namespace_name),
81+
"level": 2,
82+
"arg":$ntype,
83+
})};
84+
#if $ntype.is_object and not $ntype.object_can_convert($generator)
85+
cobj->$pretty_name = *arg0;
86+
#else
87+
cobj->$pretty_name = arg0;
88+
#end if
89+
return 0;
90+
}
91+
92+
CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "${generator.scriptname_from_native($namespaced_class_name, $namespace_name)}:${name}",argc, 1);
93+
return 0;
94+
95+
\#if COCOS2D_DEBUG >= 1
96+
tolua_lerror:
97+
tolua_error(tolua_S,"#ferror in function '${signature_name}_get${name}'.",&tolua_err);
98+
return 0;
99+
\#endif
100+
}

0 commit comments

Comments
 (0)