X-Git-Url: http://git.chise.org/gitweb/?p=chise%2Fconcord.git;a=blobdiff_plain;f=cos-i.h;h=eb17c0b7812beef4fa9b4aadcad00e99c981ec86;hp=73450dc6a7bed28534a7cf6305caba345a6534e7;hb=e0e4dc7048535adbbdf3b7c6ed47e8182ac2e8ea;hpb=ecedcc1ac0d1986c8a75fdf17e62930636c45b59 diff --git a/cos-i.h b/cos-i.h index 73450dc..eb17c0b 100644 --- a/cos-i.h +++ b/cos-i.h @@ -31,6 +31,7 @@ extern "C" { #include "sysdep.h" #include "concord.h" #include "cos.h" +#include "cos-hash.h" #ifndef SIZEOF_COS_INT # define SIZEOF_COS_INT SIZEOF_VOID_P @@ -115,6 +116,7 @@ enum COS_Object_Type { #define COS_FAT_OBJECT_TYPE_MIN COS_Object_Type_String #define COS_OBJECT_TYPE_MAX COS_Object_Type_DB_Object +extern int (*COS_Object_retain_function_table[]) (COS_Object); extern int (*COS_Object_release_function_table[]) (COS_Object); struct COS_Object_ent @@ -179,6 +181,7 @@ struct COS_String_ent unsigned char* data; }; +int cos_retain_string (COS_Object obj); int cos_release_string (COS_Object obj); @@ -192,6 +195,7 @@ struct COS_Symbol_ent COS_Symbol cos_make_symbol (COS_String string); +int cos_retain_symbol (COS_Object obj); int cos_release_symbol (COS_Object obj); @@ -229,6 +233,7 @@ struct COS_Cons_ent #define COS_CDR(obj) \ (((COS_Cons)(obj))->cdr) +int cos_retain_cons (COS_Object obj); int cos_release_cons (COS_Object obj); @@ -243,6 +248,7 @@ struct COS_Container_ent COS_Object* data; }; +int cos_retain_container (COS_Object obj); int cos_release_container (COS_Object obj); @@ -254,6 +260,7 @@ struct COS_Sexp_ent char* data; }; +int cos_retain_sexp (COS_Object obj); int cos_release_sexp (COS_Object obj); @@ -265,22 +272,47 @@ struct COS_Binary_ent unsigned char* data; }; +int cos_retain_binary (COS_Object obj); int cos_release_binary (COS_Object obj); +int cos_retain_ds (COS_Object obj); int cos_release_ds (COS_Object obj); +int cos_retain_genre (COS_Object obj); int cos_release_genre (COS_Object obj); int concord_close_genre (COS_Genre genre); +struct COS_Feature_ent +{ + COS_Object_Header header; + CONCORD_Genre genre; + char* name; + DB* db; + u_int32_t access; + COS_Hash_Table value_table; +}; + +int cos_retain_feature (COS_Object obj); int cos_release_feature (COS_Object obj); int concord_close_feature (COS_Feature feature); +struct COS_Feature_INDEX_ent +{ + COS_Object_Header header; + CONCORD_Genre genre; + char *name; + DB* db; + u_int32_t access; + COS_Hash_Table decoding_table; +}; + +int cos_retain_index (COS_Object obj); int cos_release_index (COS_Object obj); int concord_close_index (COS_Feature_INDEX table); @@ -294,6 +326,7 @@ struct COS_DB_Object_ent COS_Object id; }; +int cos_retain_db_object (COS_Object obj); int cos_release_db_object (COS_Object obj); #if 0