-#define sig2mname(x) classinfo_to_multiname(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_OBJECT registry_getobjectclass()
-
-#define TYPE_FUNCTION(f) memberinfo_asclass(f)
-#define TYPE_IS_FUNCTION(t) registry_isfunctionclass(t)
-
-#define TYPE_CLASS(f) registry_getclassclass(f)
-#define TYPE_IS_CLASS(t) registry_isclassclass(t)
-
-#define TYPE_NULL registry_getnullclass()
-#define TYPE_IS_NULL(t) ((t) == registry_getnullclass())
+#define sig2mname(x) (x->superclass,classinfo_to_multiname((slotinfo_t*)(x)))
+
+#define TYPE_ANY (0)
+#define TYPE_IS_ANY(t) ((t) == 0)
+#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_DATE registry_getdateclass()
+#define TYPE_IS_DATE(t) ((t) == registry_getdateclass())
+#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_VOID registry_getvoidclass()
+#define TYPE_IS_VOID(t) ((t) == registry_getvoidclass())
+#define TYPE_ARRAY registry_getarrayclass()
+#define TYPE_IS_ARRAY(t) ((t) == registry_getarrayclass())
+#define TYPE_NAMESPACE registry_getnamespaceclass()
+#define TYPE_IS_NAMESPACE(t) ((t) == registry_getnamespaceclass())
+#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_VOID registry_getvoidclass()
+#define TYPE_IS_VOID(t) ((t) == registry_getvoidclass())
+#define TYPE_XML registry_getxmlclass()
+#define TYPE_IS_XML(t) ((t) == registry_getxmlclass())
+#define TYPE_XMLLIST registry_getxmllistclass()
+#define TYPE_IS_XMLLIST(t) ((t) == registry_getxmllistclass())