typedef enum access_type
{ACCESS_STANDARD=0x16,
ACCESS_PACKAGE=0x16,
+ ACCESS_PUBLIC=0x16,
ACCESS_PACKAGEINTERNAL=0x17,
ACCESS_PROTECTED=0x18,
ACCESS_EXPLICIT=0x19,
ACCESS_STATICPROTECTED=0x1a,
- ACCESS_PRIVATE=0x05
+ ACCESS_PRIVATE=0x05,
+ ACCESS_NAMESPACE=0x08
} access_type_t;
CONSTANT_NAMESPACE_EXPLICIT=0x19,
CONSTANT_NAMESPACE_STATICPROTECTED=0x1A,
CONSTANT_NAMESPACE_PRIVATE=0x05,
+CONSTANT_UNKNOWN=0x55, /*used internally */
} contant_type_t;
+#define NS_TYPE(x) ((x) == 0x08 || (x) == 0x16 || (x) == 0x17 || (x) == 0x18 || (x) == 0x19 || (x) == 0x1a || (x) == 0x05)
+
struct _constant {
+ int type;
union {
+ string_t* s;
+ namespace_t*ns;
double f;
int i;
unsigned int u;
- char*s;
- namespace_t*ns;
};
- int type;
};
+constant_t* constant_clone();
constant_t* constant_new_int(int x);
constant_t* constant_new_uint(unsigned int x);
constant_t* constant_new_float(double x);
-constant_t* constant_new_string(char*s);
+constant_t* constant_new_string(const char*s);
+constant_t* constant_new_string2(const char*s, int len);
constant_t* constant_new_namespace(namespace_t*ns);
constant_t* constant_new_true();
constant_t* constant_new_false();
RTQNAMEA=0x10,
RTQNAMELA=0x12,
MULTINAMEA=0x0E,
- MULTINAMELA=0x1C
+ MULTINAMELA=0x1C,
+ POSTFIXTYPE=0x1D,
+ ZERONAMESPACE=0
} multiname_type_t;
char* access2str(int type);
struct _namespace {
U8 access;
- char*name;
+ const char*name;
};
struct _namespace_set {
namespace_list_t*namespaces;
int pool_lookup_int(pool_t*pool, int i);
unsigned int pool_lookup_uint(pool_t*pool, int i);
double pool_lookup_float(pool_t*pool, int i);
-char*pool_lookup_string(pool_t*pool, int i);
+const char*pool_lookup_string(pool_t*pool, int i);
+string_t pool_lookup_string2(pool_t*pool, int i);
namespace_t*pool_lookup_namespace(pool_t*pool, int i);
namespace_set_t*pool_lookup_namespace_set(pool_t*pool, int i);
multiname_t*pool_lookup_multiname(pool_t*pool, int i);
int pool_register_uint(pool_t*p, unsigned int i);
int pool_register_float(pool_t*p, double d);
int pool_register_string(pool_t*pool, const char*s);
+int pool_register_string2(pool_t*pool, string_t*s);
int pool_register_namespace(pool_t*pool, namespace_t*ns);
int pool_register_namespace_set(pool_t*pool, namespace_set_t*set);
int pool_register_multiname(pool_t*pool, multiname_t*n);
/* creation */
namespace_t* namespace_new(U8 access, const char*name);
+namespace_t* namespace_new_namespace(const char*name);
namespace_t* namespace_new_package(const char*name);
namespace_t* namespace_new_packageinternal(const char*name);
namespace_t* namespace_new_protected(const char*name);
/* pool constructors/destructors */
pool_t*pool_new();
+void pool_optimize();
void pool_read(pool_t*pool, TAG*tag);
void pool_write(pool_t*pool, TAG*tag);
void pool_destroy(pool_t*pool);
+void pool_dump(pool_t*pool, FILE*fo, char flags);
#endif