class_signature now contains flags
[swftools.git] / lib / as3 / registry.h
index d1f7abb..859331a 100644 (file)
@@ -33,6 +33,7 @@ DECLARE(function_signature);
 struct _class_signature {
     /* this is very similar to a QNAME */
     U8 access;
+    U8 flags;
     const char*package;
     const char*name;
 
@@ -68,6 +69,31 @@ class_signature_t* registry_findclass(const char*package, const char*name);
 
 void registry_fill_multiname(multiname_t*m, namespace_t*n, class_signature_t*c);
 multiname_t* class_signature_to_multiname(class_signature_t*cls);
+
+/* convenience functions */
 #define sig2mname(x) class_signature_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_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) || \
+                                      TYPE_IS_FLOAT(type) || \
+                                      TYPE_IS_BOOLEAN(type) || \
+                                      TYPE_IS_STRING(type))
+
 
 #endif