diff options
| author | 2024-04-14 18:19:14 +0200 | |
|---|---|---|
| committer | 2024-04-14 18:19:14 +0200 | |
| commit | a91f5740d100414a76959714b819422ee5b2d8a8 (patch) | |
| tree | 087400da3ed5af11ef1f4806ffc58a9a3a090323 | |
| parent | 612cdf3ffd3e8c200e4a21ec15e3b3f0af170b42 (diff) | |
| download | libplist-a91f5740d100414a76959714b819422ee5b2d8a8.tar.gz libplist-a91f5740d100414a76959714b819422ee5b2d8a8.tar.bz2 | |
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.
| -rw-r--r-- | cython/plist.pyx | 8 | ||||
| -rw-r--r-- | include/plist/Data.h | 6 | ||||
| -rw-r--r-- | include/plist/plist.h | 10 | ||||
| -rw-r--r-- | src/Data.cpp | 12 | ||||
| -rw-r--r-- | 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 *: | |||
| 48 | void plist_get_string_val(plist_t node, char **val) | 48 | void plist_get_string_val(plist_t node, char **val) |
| 49 | void plist_set_string_val(plist_t node, char *val) | 49 | void plist_set_string_val(plist_t node, char *val) |
| 50 | 50 | ||
| 51 | plist_t plist_new_data(char *val, uint64_t length) | 51 | plist_t plist_new_data(uint8_t *val, uint64_t length) |
| 52 | void plist_get_data_val(plist_t node, char **val, uint64_t * length) | 52 | void plist_get_data_val(plist_t node, uint8_t **val, uint64_t * length) |
| 53 | void plist_set_data_val(plist_t node, char *val, uint64_t length) | 53 | void plist_set_data_val(plist_t node, uint8_t *val, uint64_t length) |
| 54 | 54 | ||
| 55 | plist_t plist_new_null(); | 55 | plist_t plist_new_null(); |
| 56 | 56 | ||
| @@ -579,7 +579,7 @@ cdef class Data(Node): | |||
| 579 | 579 | ||
| 580 | cpdef bytes get_value(self): | 580 | cpdef bytes get_value(self): |
| 581 | cdef: | 581 | cdef: |
| 582 | char* val = NULL | 582 | uint8_t* val = NULL |
| 583 | uint64_t length = 0 | 583 | uint64_t length = 0 |
| 584 | plist_get_data_val(self._c_node, &val, &length) | 584 | plist_get_data_val(self._c_node, &val, &length) |
| 585 | 585 | ||
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 : | |||
| 35 | Data(plist_t node, Node* parent = NULL); | 35 | Data(plist_t node, Node* parent = NULL); |
| 36 | Data(const Data& d); | 36 | Data(const Data& d); |
| 37 | Data& operator=(const Data& b); | 37 | Data& operator=(const Data& b); |
| 38 | Data(const std::vector<char>& buff); | 38 | Data(const std::vector<uint8_t>& buff); |
| 39 | virtual ~Data(); | 39 | virtual ~Data(); |
| 40 | 40 | ||
| 41 | Node* Clone() const; | 41 | Node* Clone() const; |
| 42 | 42 | ||
| 43 | void SetValue(const std::vector<char>& buff); | 43 | void SetValue(const std::vector<uint8_t>& buff); |
| 44 | std::vector<char> GetValue() const; | 44 | std::vector<uint8_t> GetValue() const; |
| 45 | }; | 45 | }; |
| 46 | 46 | ||
| 47 | }; | 47 | }; |
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" | |||
| 258 | * @return the created item | 258 | * @return the created item |
| 259 | * @sa #plist_type | 259 | * @sa #plist_type |
| 260 | */ | 260 | */ |
| 261 | PLIST_API plist_t plist_new_data(const char *val, uint64_t length); | 261 | PLIST_API plist_t plist_new_data(const uint8_t *val, uint64_t length); |
| 262 | 262 | ||
| 263 | /** | 263 | /** |
| 264 | * Create a new plist_t type #PLIST_DATE | 264 | * Create a new plist_t type #PLIST_DATE |
| @@ -445,7 +445,7 @@ extern "C" | |||
| 445 | PLIST_API void plist_dict_get_item_key(plist_t node, char **key); | 445 | PLIST_API void plist_dict_get_item_key(plist_t node, char **key); |
| 446 | 446 | ||
| 447 | /** | 447 | /** |
| 448 | * Get the nth item in a #PLIST_DICT node. | 448 | * Get the item for given key in a #PLIST_DICT node. |
| 449 | * | 449 | * |
| 450 | * @param node the node of type #PLIST_DICT | 450 | * @param node the node of type #PLIST_DICT |
| 451 | * @param key the identifier of the item to get. | 451 | * @param key the identifier of the item to get. |
| @@ -595,7 +595,7 @@ extern "C" | |||
| 595 | * @param length the length of the buffer | 595 | * @param length the length of the buffer |
| 596 | * @note Use plist_mem_free() to free the allocated memory. | 596 | * @note Use plist_mem_free() to free the allocated memory. |
| 597 | */ | 597 | */ |
| 598 | PLIST_API void plist_get_data_val(plist_t node, char **val, uint64_t * length); | 598 | PLIST_API void plist_get_data_val(plist_t node, uint8_t **val, uint64_t * length); |
| 599 | 599 | ||
| 600 | /** | 600 | /** |
| 601 | * Get a pointer to the data buffer of a #PLIST_DATA node. | 601 | * Get a pointer to the data buffer of a #PLIST_DATA node. |
| @@ -608,7 +608,7 @@ extern "C" | |||
| 608 | * | 608 | * |
| 609 | * @return Pointer to the buffer | 609 | * @return Pointer to the buffer |
| 610 | */ | 610 | */ |
| 611 | PLIST_API const char* plist_get_data_ptr(plist_t node, uint64_t* length); | 611 | PLIST_API const uint8_t* plist_get_data_ptr(plist_t node, uint64_t * length); |
| 612 | 612 | ||
| 613 | /** | 613 | /** |
| 614 | * Get the value of a #PLIST_DATE node. | 614 | * Get the value of a #PLIST_DATE node. |
| @@ -700,7 +700,7 @@ extern "C" | |||
| 700 | * be freed by the node. | 700 | * be freed by the node. |
| 701 | * @param length the length of the buffer | 701 | * @param length the length of the buffer |
| 702 | */ | 702 | */ |
| 703 | PLIST_API void plist_set_data_val(plist_t node, const char *val, uint64_t length); | 703 | PLIST_API void plist_set_data_val(plist_t node, const uint8_t *val, uint64_t length); |
| 704 | 704 | ||
| 705 | /** | 705 | /** |
| 706 | * Set the value of a node. | 706 | * 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) | |||
| 34 | 34 | ||
| 35 | Data::Data(const PList::Data& d) : Node(PLIST_DATA) | 35 | Data::Data(const PList::Data& d) : Node(PLIST_DATA) |
| 36 | { | 36 | { |
| 37 | std::vector<char> b = d.GetValue(); | 37 | std::vector<uint8_t> b = d.GetValue(); |
| 38 | plist_set_data_val(_node, &b[0], b.size()); | 38 | plist_set_data_val(_node, &b[0], b.size()); |
| 39 | } | 39 | } |
| 40 | 40 | ||
| @@ -45,7 +45,7 @@ Data& Data::operator=(const PList::Data& b) | |||
| 45 | return *this; | 45 | return *this; |
| 46 | } | 46 | } |
| 47 | 47 | ||
| 48 | Data::Data(const std::vector<char>& buff) : Node(PLIST_DATA) | 48 | Data::Data(const std::vector<uint8_t>& buff) : Node(PLIST_DATA) |
| 49 | { | 49 | { |
| 50 | plist_set_data_val(_node, &buff[0], buff.size()); | 50 | plist_set_data_val(_node, &buff[0], buff.size()); |
| 51 | } | 51 | } |
| @@ -59,17 +59,17 @@ Node* Data::Clone() const | |||
| 59 | return new Data(*this); | 59 | return new Data(*this); |
| 60 | } | 60 | } |
| 61 | 61 | ||
| 62 | void Data::SetValue(const std::vector<char>& buff) | 62 | void Data::SetValue(const std::vector<uint8_t>& buff) |
| 63 | { | 63 | { |
| 64 | plist_set_data_val(_node, &buff[0], buff.size()); | 64 | plist_set_data_val(_node, &buff[0], buff.size()); |
| 65 | } | 65 | } |
| 66 | 66 | ||
| 67 | std::vector<char> Data::GetValue() const | 67 | std::vector<uint8_t> Data::GetValue() const |
| 68 | { | 68 | { |
| 69 | char* buff = NULL; | 69 | uint8_t* buff = NULL; |
| 70 | uint64_t length = 0; | 70 | uint64_t length = 0; |
| 71 | plist_get_data_val(_node, &buff, &length); | 71 | plist_get_data_val(_node, &buff, &length); |
| 72 | std::vector<char> ret(buff, buff + length); | 72 | std::vector<uint8_t> ret(buff, buff + length); |
| 73 | delete buff; | 73 | delete buff; |
| 74 | return ret; | 74 | return ret; |
| 75 | } | 75 | } |
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 @@ | |||
| 35 | #include <limits.h> | 35 | #include <limits.h> |
| 36 | #include <float.h> | 36 | #include <float.h> |
| 37 | #include <ctype.h> | 37 | #include <ctype.h> |
| 38 | #include <inttypes.h> | ||
| 38 | 39 | ||
| 39 | #ifdef WIN32 | 40 | #ifdef WIN32 |
| 40 | #include <windows.h> | 41 | #include <windows.h> |
| @@ -490,7 +491,7 @@ plist_t plist_new_real(double val) | |||
| 490 | return plist_new_node(data); | 491 | return plist_new_node(data); |
| 491 | } | 492 | } |
| 492 | 493 | ||
| 493 | plist_t plist_new_data(const char *val, uint64_t length) | 494 | plist_t plist_new_data(const uint8_t *val, uint64_t length) |
| 494 | { | 495 | { |
| 495 | plist_data_t data = plist_new_plist_data(); | 496 | plist_data_t data = plist_new_plist_data(); |
| 496 | data->type = PLIST_DATA; | 497 | data->type = PLIST_DATA; |
| @@ -1142,7 +1143,7 @@ void plist_get_real_val(plist_t node, double *val) | |||
| 1142 | assert(length == sizeof(double)); | 1143 | assert(length == sizeof(double)); |
| 1143 | } | 1144 | } |
| 1144 | 1145 | ||
| 1145 | void plist_get_data_val(plist_t node, char **val, uint64_t * length) | 1146 | void plist_get_data_val(plist_t node, uint8_t **val, uint64_t * length) |
| 1146 | { | 1147 | { |
| 1147 | if (!node || !val || !length) | 1148 | if (!node || !val || !length) |
| 1148 | return; | 1149 | return; |
| @@ -1152,7 +1153,7 @@ void plist_get_data_val(plist_t node, char **val, uint64_t * length) | |||
| 1152 | plist_get_type_and_value(node, &type, (void *) val, length); | 1153 | plist_get_type_and_value(node, &type, (void *) val, length); |
| 1153 | } | 1154 | } |
| 1154 | 1155 | ||
| 1155 | const char* plist_get_data_ptr(plist_t node, uint64_t* length) | 1156 | const uint8_t* plist_get_data_ptr(plist_t node, uint64_t* length) |
| 1156 | { | 1157 | { |
| 1157 | if (!node || !length) | 1158 | if (!node || !length) |
| 1158 | return NULL; | 1159 | return NULL; |
| @@ -1161,7 +1162,7 @@ const char* plist_get_data_ptr(plist_t node, uint64_t* length) | |||
| 1161 | return NULL; | 1162 | return NULL; |
| 1162 | plist_data_t data = plist_get_data(node); | 1163 | plist_data_t data = plist_get_data(node); |
| 1163 | *length = data->length; | 1164 | *length = data->length; |
| 1164 | return (const char*)data->buff; | 1165 | return data->buff; |
| 1165 | } | 1166 | } |
| 1166 | 1167 | ||
| 1167 | void plist_get_date_val(plist_t node, int32_t * sec, int32_t * usec) | 1168 | 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) | |||
| 1332 | plist_set_element_val(node, PLIST_REAL, &val, sizeof(double)); | 1333 | plist_set_element_val(node, PLIST_REAL, &val, sizeof(double)); |
| 1333 | } | 1334 | } |
| 1334 | 1335 | ||
| 1335 | void plist_set_data_val(plist_t node, const char *val, uint64_t length) | 1336 | void plist_set_data_val(plist_t node, const uint8_t *val, uint64_t length) |
| 1336 | { | 1337 | { |
| 1337 | plist_set_element_val(node, PLIST_DATA, val, length); | 1338 | plist_set_element_val(node, PLIST_DATA, val, length); |
| 1338 | } | 1339 | } |
