Include "cos-hash.h".
[chise/concord.git] / cos-i.h
diff --git a/cos-i.h b/cos-i.h
index 73450dc..7972d66 100644 (file)
--- 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,37 @@ 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);
 
 
+int cos_retain_index (COS_Object obj);
 int cos_release_index (COS_Object obj);
 
 int concord_close_index (COS_Feature_INDEX table);
@@ -294,6 +316,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