1.1 --- a/micropython/__init__.py Mon Jan 26 01:25:30 2009 +0100
1.2 +++ b/micropython/__init__.py Mon Feb 02 01:34:35 2009 +0100
1.3 @@ -257,28 +257,34 @@
1.4 instantiator_code_location = item.get_instantiator().blocks[0].location
1.5
1.6 # NOTE: Need initialiser details!
1.7 - self.raw_code.append((
1.8 - objtable.as_list().get_code(item.full_name()),
1.9 - objtable.get_index(item.full_name()),
1.10 - instantiator_code_location,
1.11 - (
1.12 - len(item.get_instantiator().positional_names),
1.13 - len(item.get_instantiator().defaults)
1.14 - ),
1.15 - 0
1.16 - ))
1.17 + self.raw_code.append(
1.18 + DataObject(
1.19 + objtable.as_list().get_code(item.full_name()),
1.20 + objtable.get_index(item.full_name()),
1.21 + instantiator_code_location,
1.22 + (
1.23 + len(item.get_instantiator().positional_names),
1.24 + len(item.get_instantiator().defaults)
1.25 + ),
1.26 + 0,
1.27 + item.full_name()
1.28 + )
1.29 + )
1.30
1.31 elif isinstance(item, micropython.data.Const):
1.32 assert item.location == len(self.raw_code)
1.33
1.34 # NOTE: Need class details!
1.35 - self.raw_code.append((
1.36 - objtable.as_list().get_code(item.value_type_name()),
1.37 - objtable.get_index(item.value_type_name()),
1.38 - None,
1.39 - None,
1.40 - 1
1.41 - ))
1.42 + self.raw_code.append(
1.43 + DataObject(
1.44 + objtable.as_list().get_code(item.value_type_name()),
1.45 + objtable.get_index(item.value_type_name()),
1.46 + None,
1.47 + None,
1.48 + 1,
1.49 + item.value_type_name()
1.50 + )
1.51 + )
1.52
1.53 self.raw_code += self.raw_data(item)
1.54
1.55 @@ -286,16 +292,19 @@
1.56 assert item.location == len(self.raw_code)
1.57
1.58 # NOTE: Need class and parameter details! Should arguably be types.FunctionType.
1.59 - self.raw_code.append((
1.60 - objtable.as_list().get_code("__builtins__.function"),
1.61 - objtable.get_index("__builtins__.function"),
1.62 - item.code_location,
1.63 - (
1.64 - len(item.positional_names),
1.65 - len(item.defaults)
1.66 - ),
1.67 - 0
1.68 - ))
1.69 + self.raw_code.append(
1.70 + DataObject(
1.71 + objtable.as_list().get_code("__builtins__.function"),
1.72 + objtable.get_index("__builtins__.function"),
1.73 + item.code_location,
1.74 + (
1.75 + len(item.positional_names),
1.76 + len(item.defaults)
1.77 + ),
1.78 + 0,
1.79 + "__builtins__.function"
1.80 + )
1.81 + )
1.82
1.83 # Check the code location only where the code has been generated.
1.84
1.85 @@ -305,13 +314,16 @@
1.86 elif isinstance(item, micropython.data.Module):
1.87 assert item.location == len(self.raw_code)
1.88
1.89 - self.raw_code.append((
1.90 - objtable.as_list().get_code(item.full_name()),
1.91 - None, # module name not used as an attribute
1.92 - None,
1.93 - None,
1.94 - 0
1.95 - ))
1.96 + self.raw_code.append(
1.97 + DataObject(
1.98 + objtable.as_list().get_code(item.full_name()),
1.99 + None, # module name not used as an attribute
1.100 + None,
1.101 + None,
1.102 + 0,
1.103 + item.full_name()
1.104 + )
1.105 + )
1.106
1.107 else:
1.108 self.raw_code.append(item)
1.109 @@ -458,7 +470,7 @@
1.110 # Name records (used to track actual use of names).
1.111 # Include names which may not be explicitly used in programs.
1.112
1.113 - self.names_used = set(["__init__"])
1.114 + self.names_used = set(["__init__", "__call__"])
1.115
1.116 # Status information.
1.117