unsigned long cos_symbol_hash_string (COS_String string);
+COS_String_ent cos_string_ent_nil = { {COS_OBJECT_PREFIX_OBJECT,
+ COS_Object_Type_String,
+ 1},
+ 3, "nil"};
+
+COS_Symbol_ent cos_symbol_ent_nil = { {COS_OBJECT_PREFIX_OBJECT,
+ COS_Object_Type_Symbol,
+ 1},
+ &cos_string_ent_nil,
+ NULL};
+
+COS_Symbol cos_Qnil = &cos_symbol_ent_nil;
+
+
+COS_String_ent cos_string_ent_t = { {COS_OBJECT_PREFIX_OBJECT,
+ COS_Object_Type_String,
+ 1},
+ 1, "t"};
+
+COS_Symbol_ent cos_symbol_ent_t = { {COS_OBJECT_PREFIX_OBJECT,
+ COS_Object_Type_Symbol,
+ 1},
+ &cos_string_ent_t,
+ NULL};
+
+COS_Symbol cos_Qt = &cos_symbol_ent_t;
+
+
+COS_Symbol_Table cos_default_symbol_table = NULL;
+
+
COS_Symbol
cos_make_symbol (COS_String string)
{
obj->name = string;
obj->value = NULL;
+ cos_retain_object (string);
return obj;
}
int
+cos_retain_symbol (COS_Object obj)
+{
+ cos_retain_object (((COS_Symbol)obj)->value);
+ cos_retain_object (((COS_Symbol)obj)->name);
+ return 0;
+}
+
+int
cos_release_symbol (COS_Object obj)
{
if (obj == NULL)
}
-COS_Symbol_Table cos_default_symbol_table = NULL;
-
COS_Symbol_Table cos_make_symbol_table_0 (size_t size);
void cos_destroy_symbol_table_0 (COS_Symbol_Table hash);
cos_intern (COS_object name)
{
if (cos_default_symbol_table == NULL)
- cos_default_symbol_table = cos_make_symbol_table();
-
+ {
+ cos_default_symbol_table = cos_make_symbol_table();
+ cos_symbol_table_set (cos_default_symbol_table, cos_Qnil);
+ cos_symbol_table_set (cos_default_symbol_table, cos_Qt);
+ }
return cos_symbol_table_intern (cos_default_symbol_table, name);
}
}
}
}
+ free (table->data);
table->size = new_table->size;
table->data = new_table->data;
free (new_table);