(cos_string_p): New function.
authorMORIOKA Tomohiko <tomo.git@chise.org>
Sun, 14 Apr 2013 09:32:40 +0000 (18:32 +0900)
committerMORIOKA Tomohiko <tomo.git@chise.org>
Sun, 14 Apr 2013 09:32:40 +0000 (18:32 +0900)
(concord_object_get_feature_value): Use `cos_read_char' and
`cos_read_string' to parse character and string.

cos.c

diff --git a/cos.c b/cos.c
index 6fc2f3f..9e09502 100644 (file)
--- a/cos.c
+++ b/cos.c
@@ -181,6 +181,11 @@ cos_release_string (COS_Object obj)
   return 0;
 }
 
   return 0;
 }
 
+int cos_string_p (COS_object obj)
+{
+  return COS_OBJECT_STRING_P (obj);
+}
+
 size_t
 cos_string_size (COS_String string)
 {
 size_t
 cos_string_size (COS_String string)
 {
@@ -408,6 +413,9 @@ concord_object_get_feature_value (COS_object object, COS_object feature)
   CONCORD_Feature fobj;
   CONCORD_String_Tank val_st;
   COS_String val_string;
   CONCORD_Feature fobj;
   CONCORD_String_Tank val_st;
   COS_String val_string;
+  size_t end;
+  int val_cid;
+  COS_String val_str;
 
   if (COS_OBJECT_CHAR_P (object))
     {
 
   if (COS_OBJECT_CHAR_P (object))
     {
@@ -432,5 +440,17 @@ concord_object_get_feature_value (COS_object object, COS_object feature)
          concord_feature_get_name (fobj),
          cos_string_data (val_string));
 
          concord_feature_get_name (fobj),
          cos_string_data (val_string));
 
+  val_cid = cos_read_char (CONCORD_String_data (&val_st),
+                          CONCORD_String_size (&val_st),
+                          0, &end);
+  if ( val_cid >= 0 )
+    return cos_make_char (val_cid);
+
+  val_str = cos_read_string (CONCORD_String_data (&val_st),
+                            CONCORD_String_size (&val_st),
+                            0, &end);
+  if ( val_str != NULL )
+    return val_str;
+
   return NULL;
 }
   return NULL;
 }