classinfo_t*superclass;
dict_t members;
void*data; //TODO: get rid of this- parser.y should pass type/value/code triples around
- classinfo_t*interfaces[0];
+ classinfo_t*interfaces[];
};
struct _memberinfo {
U8 kind,subtype,flags,access;
constant_t*value;
};
+extern type_t memberinfo_type;
extern type_t slotinfo_type;
char slotinfo_equals(slotinfo_t*c1, slotinfo_t*c2);
namespace_t access2namespace(U8 access, char*package);
+char registry_ispackage(char*package);
+
// static multinames
classinfo_t* registry_getanytype();
classinfo_t* registry_getarrayclass();
/* convenience functions */
#define sig2mname(x) (x->superclass,classinfo_to_multiname((slotinfo_t*)(x)))
-#define TYPE_ANY registry_getanytype()
-#define TYPE_IS_ANY(t) ((t) == registry_getanytype())
-#define TYPE_INT registry_getintclass()
-#define TYPE_IS_INT(t) ((t) == registry_getintclass())
-#define TYPE_UINT registry_getuintclass()
-#define TYPE_IS_UINT(t) ((t) == registry_getuintclass())
-#define TYPE_NUMBER registry_getnumberclass()
-#define TYPE_IS_NUMBER(t) ((t) == registry_getnumberclass())
-#define TYPE_FLOAT registry_getnumberclass()
-#define TYPE_IS_FLOAT(t) ((t) == registry_getnumberclass())
-#define TYPE_BOOLEAN registry_getbooleanclass()
-#define TYPE_IS_BOOLEAN(t)((t) == registry_getbooleanclass())
-#define TYPE_STRING registry_getstringclass()
-#define TYPE_IS_STRING(t) ((t) == registry_getstringclass())
-#define TYPE_REGEXP registry_getregexpclass()
-#define TYPE_IS_REGEXP(t) ((t) == registry_getregexpclass())
+
+#define TYPE_ANY registry_getanytype()
+#define TYPE_IS_ANY(t) ((t) == registry_getanytype())
+#define TYPE_INT registry_getintclass()
+#define TYPE_IS_INT(t) ((t) == registry_getintclass())
+#define TYPE_UINT registry_getuintclass()
+#define TYPE_IS_UINT(t) ((t) == registry_getuintclass())
+#define TYPE_NUMBER registry_getnumberclass()
+#define TYPE_IS_NUMBER(t) ((t) == registry_getnumberclass())
+#define TYPE_FLOAT registry_getnumberclass()
+#define TYPE_IS_FLOAT(t) ((t) == registry_getnumberclass())
+#define TYPE_BOOLEAN registry_getbooleanclass()
+#define TYPE_IS_BOOLEAN(t) ((t) == registry_getbooleanclass())
+#define TYPE_STRING registry_getstringclass()
+#define TYPE_IS_STRING(t) ((t) == registry_getstringclass())
+#define TYPE_OBJECT registry_getobjectclass()
+#define TYPE_IS_OBJECT(t) ((t) == registry_getobjectclass())
+#define TYPE_REGEXP registry_getregexpclass()
+#define TYPE_IS_REGEXP(t) ((t) == registry_getregexpclass())
#define TYPE_NAMESPACE registry_getnamespaceclass()
#define TYPE_IS_NAMESPACE(t) ((t) == registry_getnamespaceclass())
-
-#define TYPE_OBJECT registry_getobjectclass()
-
-#define TYPE_FUNCTION(f) ((f)->return_type,slotinfo_asclass((slotinfo_t*)(f)))
-#define TYPE_IS_FUNCTION(t) registry_isfunctionclass(t)
-
-#define TYPE_CLASS(f) ((f)->superclass,slotinfo_asclass((slotinfo_t*)(f)))
-#define TYPE_IS_CLASS(t) registry_isclassclass(t)
-
-#define TYPE_NULL registry_getnullclass()
-#define TYPE_IS_NULL(t) ((t) == registry_getnullclass())
+#define TYPE_FUNCTION(f) ((f)->return_type,slotinfo_asclass((slotinfo_t*)(f)))
+#define TYPE_IS_FUNCTION(t) registry_isfunctionclass(t)
+#define TYPE_CLASS(f) ((f)->superclass,slotinfo_asclass((slotinfo_t*)(f)))
+#define TYPE_IS_CLASS(t) registry_isclassclass(t)
+#define TYPE_NULL registry_getnullclass()
+#define TYPE_IS_NULL(t) ((t) == registry_getnullclass())
#define TYPE_IS_BUILTIN_SIMPLE(type) (TYPE_IS_INT(type) || \
TYPE_IS_UINT(type) || \