Преглед изворни кода

ncd: NCDValue: add NCDValue_ListAppendList

ambrop7 пре 15 година
родитељ
комит
bbc79c4c26
2 измењених фајлова са 16 додато и 0 уклоњено
  1. 15 0
      ncd/NCDValue.c
  2. 1 0
      ncd/NCDValue.h

+ 15 - 0
ncd/NCDValue.c

@@ -161,6 +161,21 @@ int NCDValue_ListAppend (NCDValue *o, NCDValue v)
     return 1;
 }
 
+void NCDValue_ListAppendList (NCDValue *o, NCDValue l)
+{
+    value_assert(o);
+    value_assert(&l);
+    ASSERT(o->type == NCDVALUE_LIST)
+    ASSERT(l.type == NCDVALUE_LIST)
+    
+    LinkedList2Node *n;
+    while (n = LinkedList2_GetFirst(&l.list)) {
+        NCDListElement *e = UPPER_OBJECT(n, NCDListElement, list_node);
+        LinkedList2_Remove(&l.list, &e->list_node);
+        LinkedList2_Append(&o->list, &e->list_node);
+    }
+}
+
 size_t NCDValue_ListCount (NCDValue *o)
 {
     value_assert(o);

+ 1 - 0
ncd/NCDValue.h

@@ -52,6 +52,7 @@ char * NCDValue_StringValue (NCDValue *o);
 
 void NCDValue_InitList (NCDValue *o);
 int NCDValue_ListAppend (NCDValue *o, NCDValue v);
+void NCDValue_ListAppendList (NCDValue *o, NCDValue l);
 size_t NCDValue_ListCount (NCDValue *o);
 NCDValue * NCDValue_ListFirst (NCDValue *o);
 NCDValue * NCDValue_ListNext (NCDValue *o, NCDValue *ev);