changeset 268:123e9468d55e

Add support for invoking methods that take no arguments other than self through the relfection API
author Michael Pavone <pavone@retrodev.com>
date Fri, 18 Jul 2014 09:55:19 -0700
parents d2b70cba661e
children 632667d95d35
files modules/object.tp samples/reflect.tp
diffstat 2 files changed, 15 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/modules/object.tp	Fri Jul 18 00:14:22 2014 -0700
+++ b/modules/object.tp	Fri Jul 18 09:55:19 2014 -0700
@@ -61,6 +61,13 @@
 			}
 			arr
 		}
+
+		llMessage: sendMessage:to withVars: {
+			obj <- object ptr
+			methodId <- obj_int32 ptr
+		} andCode: :methodId :obj {
+			mcall: (methodId num) 1 obj
+		}
 	}
 	getMethodDict <- {
 		methodDict <- dict hash
@@ -90,5 +97,12 @@
 				rt methodName: id
 			}
 		}
+
+		sendMessage:to <- :message :obj {
+			d <- getMethodDict:
+			d ifget: message :messageId{
+				rt sendMessage: messageId to: obj
+			} else: { false }
+		}
 	}
 }
--- a/samples/reflect.tp	Fri Jul 18 00:14:22 2014 -0700
+++ b/samples/reflect.tp	Fri Jul 18 09:55:19 2014 -0700
@@ -5,6 +5,7 @@
 		foreach: (object understoodBy: 42) :idx el{
 			print: el . "\n"
 		}
+		print: (object sendMessage: "hex" to: 42) . "\n"
 		0
 	}
 }