From a91f5740d100414a76959714b819422ee5b2d8a8 Mon Sep 17 00:00:00 2001 From: Nikias Bassen Date: Sun, 14 Apr 2024 18:19:14 +0200 Subject: Change API around #PLIST_DATA to use uint8_t instead of char arrays This makes it more obvious that it is arbitrary data and not necessarily a string value. --- cython/plist.pyx | 8 ++++---- include/plist/Data.h | 6 +++--- include/plist/plist.h | 10 +++++----- src/Data.cpp | 12 ++++++------ src/plist.c | 11 ++++++----- 5 files changed, 24 insertions(+), 23 deletions(-) diff --git a/cython/plist.pyx b/cython/plist.pyx index b5f4ef6..a16e7be 100644 --- a/cython/plist.pyx +++ b/cython/plist.pyx @@ -48,9 +48,9 @@ cdef extern from *: void plist_get_string_val(plist_t node, char **val) void plist_set_string_val(plist_t node, char *val) - plist_t plist_new_data(char *val, uint64_t length) - void plist_get_data_val(plist_t node, char **val, uint64_t * length) - void plist_set_data_val(plist_t node, char *val, uint64_t length) + plist_t plist_new_data(uint8_t *val, uint64_t length) + void plist_get_data_val(plist_t node, uint8_t **val, uint64_t * length) + void plist_set_data_val(plist_t node, uint8_t *val, uint64_t length) plist_t plist_new_null(); @@ -579,7 +579,7 @@ cdef class Data(Node): cpdef bytes get_value(self): cdef: - char* val = NULL + uint8_t* val = NULL uint64_t length = 0 plist_get_data_val(self._c_node, &val, &length) diff --git a/include/plist/Data.h b/include/plist/Data.h index b566a6c..3f1c329 100644 --- a/include/plist/Data.h +++ b/include/plist/Data.h @@ -35,13 +35,13 @@ public : Data(plist_t node, Node* parent = NULL); Data(const Data& d); Data& operator=(const Data& b); - Data(const std::vector& buff); + Data(const std::vector& buff); virtual ~Data(); Node* Clone() const; - void SetValue(const std::vector& buff); - std::vector GetValue() const; + void SetValue(const std::vector& buff); + std::vector GetValue() const; }; }; diff --git a/include/plist/plist.h b/include/plist/plist.h index 46aca16..dcc4a04 100644 --- a/include/plist/plist.h +++ b/include/plist/plist.h @@ -258,7 +258,7 @@ extern "C" * @return the created item * @sa #plist_type */ - PLIST_API plist_t plist_new_data(const char *val, uint64_t length); + PLIST_API plist_t plist_new_data(const uint8_t *val, uint64_t length); /** * Create a new plist_t type #PLIST_DATE @@ -445,7 +445,7 @@ extern "C" PLIST_API void plist_dict_get_item_key(plist_t node, char **key); /** - * Get the nth item in a #PLIST_DICT node. + * Get the item for given key in a #PLIST_DICT node. * * @param node the node of type #PLIST_DICT * @param key the identifier of the item to get. @@ -595,7 +595,7 @@ extern "C" * @param length the length of the buffer * @note Use plist_mem_free() to free the allocated memory. */ - PLIST_API void plist_get_data_val(plist_t node, char **val, uint64_t * length); + PLIST_API void plist_get_data_val(plist_t node, uint8_t **val, uint64_t * length); /** * Get a pointer to the data buffer of a #PLIST_DATA node. @@ -608,7 +608,7 @@ extern "C" * * @return Pointer to the buffer */ - PLIST_API const char* plist_get_data_ptr(plist_t node, uint64_t* length); + PLIST_API const uint8_t* plist_get_data_ptr(plist_t node, uint64_t * length); /** * Get the value of a #PLIST_DATE node. @@ -700,7 +700,7 @@ extern "C" * be freed by the node. * @param length the length of the buffer */ - PLIST_API void plist_set_data_val(plist_t node, const char *val, uint64_t length); + PLIST_API void plist_set_data_val(plist_t node, const uint8_t *val, uint64_t length); /** * Set the value of a node. diff --git a/src/Data.cpp b/src/Data.cpp index a96fc50..c4709f7 100644 --- a/src/Data.cpp +++ b/src/Data.cpp @@ -34,7 +34,7 @@ Data::Data(plist_t node, Node* parent) : Node(node, parent) Data::Data(const PList::Data& d) : Node(PLIST_DATA) { - std::vector b = d.GetValue(); + std::vector b = d.GetValue(); plist_set_data_val(_node, &b[0], b.size()); } @@ -45,7 +45,7 @@ Data& Data::operator=(const PList::Data& b) return *this; } -Data::Data(const std::vector& buff) : Node(PLIST_DATA) +Data::Data(const std::vector& buff) : Node(PLIST_DATA) { plist_set_data_val(_node, &buff[0], buff.size()); } @@ -59,17 +59,17 @@ Node* Data::Clone() const return new Data(*this); } -void Data::SetValue(const std::vector& buff) +void Data::SetValue(const std::vector& buff) { plist_set_data_val(_node, &buff[0], buff.size()); } -std::vector Data::GetValue() const +std::vector Data::GetValue() const { - char* buff = NULL; + uint8_t* buff = NULL; uint64_t length = 0; plist_get_data_val(_node, &buff, &length); - std::vector ret(buff, buff + length); + std::vector ret(buff, buff + length); delete buff; return ret; } diff --git a/src/plist.c b/src/plist.c index 2078520..57f5ead 100644 --- a/src/plist.c +++ b/src/plist.c @@ -35,6 +35,7 @@ #include #include #include +#include #ifdef WIN32 #include @@ -490,7 +491,7 @@ plist_t plist_new_real(double val) return plist_new_node(data); } -plist_t plist_new_data(const char *val, uint64_t length) +plist_t plist_new_data(const uint8_t *val, uint64_t length) { plist_data_t data = plist_new_plist_data(); data->type = PLIST_DATA; @@ -1142,7 +1143,7 @@ void plist_get_real_val(plist_t node, double *val) assert(length == sizeof(double)); } -void plist_get_data_val(plist_t node, char **val, uint64_t * length) +void plist_get_data_val(plist_t node, uint8_t **val, uint64_t * length) { if (!node || !val || !length) return; @@ -1152,7 +1153,7 @@ void plist_get_data_val(plist_t node, char **val, uint64_t * length) plist_get_type_and_value(node, &type, (void *) val, length); } -const char* plist_get_data_ptr(plist_t node, uint64_t* length) +const uint8_t* plist_get_data_ptr(plist_t node, uint64_t* length) { if (!node || !length) return NULL; @@ -1161,7 +1162,7 @@ const char* plist_get_data_ptr(plist_t node, uint64_t* length) return NULL; plist_data_t data = plist_get_data(node); *length = data->length; - return (const char*)data->buff; + return data->buff; } void plist_get_date_val(plist_t node, int32_t * sec, int32_t * usec) @@ -1332,7 +1333,7 @@ void plist_set_real_val(plist_t node, double val) plist_set_element_val(node, PLIST_REAL, &val, sizeof(double)); } -void plist_set_data_val(plist_t node, const char *val, uint64_t length) +void plist_set_data_val(plist_t node, const uint8_t *val, uint64_t length) { plist_set_element_val(node, PLIST_DATA, val, length); } -- cgit v1.1-32-gdbae