]> git.saurik.com Git - apple/security.git/blobdiff - cdsa/cdsa_utilities/cssmlist.cpp
Security-54.1.9.tar.gz
[apple/security.git] / cdsa / cdsa_utilities / cssmlist.cpp
index 6c01777e695da76b776aebe9768212952551a06a..1bb5176a949e30515579f8a8135fc72f7ef5e3d3 100644 (file)
@@ -24,6 +24,7 @@
 #endif
 
 #include <Security/cssmlist.h>
+#include <Security/cssmdata.h>
 
 
 //
@@ -51,12 +52,18 @@ ListElement::ListElement(const CssmData &data)
        Element.Word = data;
 }
 
-ListElement::ListElement(CssmAllocator &alloc, string s)
+ListElement::ListElement(CssmAllocator &alloc, const CssmData &data)
+{
+       ElementType = CSSM_LIST_ELEMENT_DATUM;
+       WordID = 0;
+       Element.Word = CssmAutoData(alloc, data).release();
+}
+
+ListElement::ListElement(CssmAllocator &alloc, const string &s)
 {
     ElementType = CSSM_LIST_ELEMENT_DATUM;
     WordID = 0;
-    size_t length = s.size();
-    Element.Word = CssmData(memcpy(alloc.alloc<char>(length), s.data(), length), length);
+       Element.Word = CssmAutoData(alloc, s.data(), s.size()).release();
 }
 
 ListElement::ListElement(const CssmList &list)
@@ -238,6 +245,23 @@ TypedList::TypedList(CssmAllocator &alloc, CSSM_WORDID_TYPE type, ListElement *e
        append(elem2);
 }
 
+TypedList::TypedList(CssmAllocator &alloc, CSSM_WORDID_TYPE type, ListElement *elem1, ListElement *elem2, ListElement *elem3)
+{
+       append(new(alloc) ListElement(type));
+       append(elem1);
+       append(elem2);
+       append(elem3);
+}
+
+TypedList::TypedList(CssmAllocator &alloc, CSSM_WORDID_TYPE type, ListElement *elem1, ListElement *elem2, ListElement *elem3, ListElement *elem4)
+{
+       append(new(alloc) ListElement(type));
+       append(elem1);
+       append(elem2);
+       append(elem3);
+       append(elem4);
+}
+
 
 //
 // Verify that a TypedList is "proper", i.e. has a first element of WORDID form