ソースを参照

ncd: NCDValue: add NCDValue_IsString(), NCDValue_IsStringNoNulls(), NCDValue_IsList(), NCDValue_IsMap()

ambrop7 14 年 前
コミット
e834d87599
2 ファイル変更30 行追加0 行削除
  1. 26 0
      ncd/NCDValue.c
  2. 4 0
      ncd/NCDValue.h

+ 26 - 0
ncd/NCDValue.c

@@ -173,6 +173,18 @@ int NCDValue_Type (NCDValue *o)
     return o->type;
 }
 
+int NCDValue_IsString (NCDValue *o)
+{
+    value_assert(o);
+    
+    return o->type == NCDVALUE_STRING;
+}
+
+int NCDValue_IsStringNoNulls (NCDValue *o)
+{
+    return NCDValue_IsString(o) && NCDValue_StringHasNoNulls(o);
+}
+
 int NCDValue_InitString (NCDValue *o, const char *str)
 {
     return NCDValue_InitStringBin(o, (const uint8_t *)str, strlen(str));
@@ -232,6 +244,13 @@ int NCDValue_StringEquals (NCDValue *o, const char *str)
     return NCDValue_StringHasNoNulls(o) && !strcmp(o->string, str);
 }
 
+int NCDValue_IsList (NCDValue *o)
+{
+    value_assert(o);
+    
+    return o->type == NCDVALUE_LIST;
+}
+
 void NCDValue_InitList (NCDValue *o)
 {
     LinkedList2_Init(&o->list);
@@ -440,6 +459,13 @@ NCDValue NCDValue_ListRemove (NCDValue *o, NCDValue *ev)
     return v;
 }
 
+int NCDValue_IsMap (NCDValue *o)
+{
+    value_assert(o);
+    
+    return o->type == NCDVALUE_MAP;
+}
+
 void NCDValue_InitMap (NCDValue *o)
 {
     o->type = NCDVALUE_MAP;

+ 4 - 0
ncd/NCDValue.h

@@ -74,6 +74,8 @@ int NCDValue_InitCopy (NCDValue *o, NCDValue *v) WARN_UNUSED;
 void NCDValue_Free (NCDValue *o);
 int NCDValue_Type (NCDValue *o);
 
+int NCDValue_IsString (NCDValue *o);
+int NCDValue_IsStringNoNulls (NCDValue *o);
 int NCDValue_InitString (NCDValue *o, const char *str) WARN_UNUSED;
 int NCDValue_InitStringBin (NCDValue *o, const uint8_t *str, size_t len) WARN_UNUSED;
 char * NCDValue_StringValue (NCDValue *o);
@@ -82,6 +84,7 @@ int NCDValue_StringHasNoNulls (NCDValue *o);
 int NCDValue_StringHasNulls (NCDValue *o);
 int NCDValue_StringEquals (NCDValue *o, const char *str);
 
+int NCDValue_IsList (NCDValue *o);
 void NCDValue_InitList (NCDValue *o);
 int NCDValue_ListAppend (NCDValue *o, NCDValue v) WARN_UNUSED;
 int NCDValue_ListAppendList (NCDValue *o, NCDValue l) WARN_UNUSED;
@@ -94,6 +97,7 @@ NCDValue * NCDValue_ListGet (NCDValue *o, size_t pos);
 NCDValue NCDValue_ListShift (NCDValue *o);
 NCDValue NCDValue_ListRemove (NCDValue *o, NCDValue *ev);
 
+int NCDValue_IsMap (NCDValue *o);
 void NCDValue_InitMap (NCDValue *o);
 size_t NCDValue_MapCount (NCDValue *o);
 NCDValue * NCDValue_MapFirstKey (NCDValue *o);