Mercurial > repos > tabletprog
diff modules/object.tp @ 270:b74956a2196f
Add a propertiesOf method to the object module that returns the names of things that look like getter messages
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 18 Jul 2014 20:45:50 -0700 |
parents | 123e9468d55e |
children | ead24192ed45 |
line wrap: on
line diff
--- a/modules/object.tp Fri Jul 18 19:31:07 2014 -0700 +++ b/modules/object.tp Fri Jul 18 20:45:50 2014 -0700 @@ -48,7 +48,7 @@ while: {slot < 16} do: { if: (methHash get: slot) { i <- 0 - while: { ((methHash get: slot) get: i) != 0xFFFFFFFF } do: { + while: { ((methHash get: slot) get: i)!= 0xFFFFFFFF } do: { methodId <- make_object: (addr_of: obj_int32_meta) NULL 0 methodId num!: ((methHash get: slot) get: i) mcall: append 2 arr methodId @@ -98,6 +98,20 @@ } } + propertiesOf <- :obj { + messages <- understoodBy: obj + setters <- dict hash + potentials <- #[] + foreach: messages :idx message { + if: (message endsWith?: "!") { + setters set: (message from: 0 withLength: (message length) - 1) true + } else: { + potentials append: message + } + } + potentials filter: :el { setters contains?: el } + } + sendMessage:to <- :message :obj { d <- getMethodDict: d ifget: message :messageId{