aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorDeterminant <ted.sybil@gmail.com>2015-05-26 12:47:22 +0800
committerDeterminant <ted.sybil@gmail.com>2015-05-26 12:47:22 +0800
commit8c5246a8794011ca0c25f15643771f031d258594 (patch)
tree42a4f9d87c99ed35d0c6c1eb768f007387c7d851 /examples
parent81c115e09f9449ae61c7352edd77c68e9029f2dc (diff)
correct the oop_example
Diffstat (limited to 'examples')
-rw-r--r--examples/oop_example.c26
-rw-r--r--examples/oop_example.lua15
2 files changed, 8 insertions, 33 deletions
diff --git a/examples/oop_example.c b/examples/oop_example.c
index 859bd03..59dfc5a 100644
--- a/examples/oop_example.c
+++ b/examples/oop_example.c
@@ -46,22 +46,9 @@ int point_new(lua_State *L) {
return 1;
}
-int point___init(lua_State *L) {
- /* The difference between this function and `_new` function is that this
- * one is called by subclass of Point implemented in Lua, although it
- * basically does the same thing as `_new`. Also, it can read the empty
- * object (table) from the stack. (In this example, the table is ignored.) */
- Point *self = (Point *)malloc(sizeof(Point));
- point_new_(self, luaL_checknumber(L, 2), luaL_checknumber(L, 3));
- luaT_pushudata(L, self, point_tname);
- fprintf(stderr, "[example] A subclass has invoked `__init`\n");
- return 1;
-}
-
static const luaL_Reg point_methods[] = {
{"set_x", point_set_x},
{"set_y", point_set_y},
- {"__init", point___init},
{"norm", point_norm},
{NULL, NULL}
};
@@ -84,21 +71,8 @@ int better_point_new(lua_State *L) {
return 1;
}
-int better_point___init(lua_State *L) {
- /* The difference between this function and `_new` function is that this
- * one is called by subclass of Point implemented in Lua, although it
- * basically does the same thing as `_new`. Also, it can read the empty
- * object (table) from the stack. (In this example, the table is ignored.) */
- Point *self = (Point *)malloc(sizeof(Point));
- point_new_(self, luaL_checknumber(L, 2), luaL_checknumber(L, 3));
- luaT_pushudata(L, self, better_point_tname);
- fprintf(stderr, "[example] A subclass has invoked `__init`\n");
- return 1;
-}
-
static const luaL_Reg better_point_methods[] = {
{"norm", better_point_norm},
- {"__init", better_point___init},
{NULL, NULL}
};
diff --git a/examples/oop_example.lua b/examples/oop_example.lua
index 712387b..b753288 100644
--- a/examples/oop_example.lua
+++ b/examples/oop_example.lua
@@ -5,11 +5,12 @@ p:set_x(1.0)
p:set_y(2.0)
print(p:norm()) -- get 2-norm of the Point
-p = nerv.BetterPoint(1, 2)
-print(p)
-print(p:norm()) --get 1-norm of the Point
+bp = nerv.BetterPoint(1, 2)
+-- use methods from base class
+bp:set_x(1.0)
+bp:set_y(2.0)
+print(bp)
+print(bp:norm()) --get 1-norm of the Point
--- create a subclass using lua
-local EvenBetterPoint = nerv.class('nerv.EvenBetterPoint', 'nerv.BetterPoint')
-bp = nerv.EvenBetterPoint(1, 2)
-print(p:norm())
+print(p.__typename)
+print(bp.__typename)