120 #define COL_CLASS_DEFAULT 0
127 #define COL_NOMATCH 0
145 #define COL_TYPE_STRING 0x00000001
147 #define COL_TYPE_BINARY 0x00000002
149 #define COL_TYPE_INTEGER 0x00000004
151 #define COL_TYPE_UNSIGNED 0x00000008
153 #define COL_TYPE_LONG 0x00000010
155 #define COL_TYPE_ULONG 0x00000020
157 #define COL_TYPE_DOUBLE 0x00000040
159 #define COL_TYPE_BOOL 0x00000080
166 #define COL_TYPE_COLLECTION 0x00000100
173 #define COL_TYPE_COLLECTIONREF 0x00000200
179 #define COL_TYPE_END 0x10000000
186 #define COL_TYPE_ANY 0x0FFFFFFF
200 #define COL_ADD_MODE_REFERENCE 0
211 #define COL_ADD_MODE_EMBED 1
217 #define COL_ADD_MODE_CLONE 2
225 #define COL_ADD_MODE_FLAT 3
238 #define COL_ADD_MODE_FLATDOT 4
261 #define COL_TRAVERSE_DEFAULT 0x00000000
269 #define COL_TRAVERSE_ONELEVEL 0x00000001
280 #define COL_TRAVERSE_END 0x00000002
282 #define COL_TRAVERSE_IGNORE 0x00000004
296 #define COL_TRAVERSE_FLAT 0x00000008
322 #define COL_TRAVERSE_SHOWSUB 0x00010000
330 #define COL_TRAVERSE_ONLYSUB 0x00020000
353 #define COL_COPY_NORMAL 0
359 #define COL_COPY_FLAT 1
365 #define COL_COPY_FLATDOT 2
367 #define COL_COPY_KEEPREF 3
369 #define COL_COPY_TOP 4
385 #define COL_SORT_ASC 0x00000000
387 #define COL_SORT_DESC 0x00000001
389 #define COL_SORT_SUB 0x00000002
395 #define COL_SORT_MYSUB 0x00000004
402 #ifndef COLLECTION_PRIV_H
542 const char *name_to_use,
566 const char *name_to_use,
601 const char *subcollection,
602 const char *as_property,
701 const char *property_to_find,
746 const char *property_to_find,
782 unsigned sort_flags);
816 const char *property_to_find,
845 const char *property_to_find,
873 const char *col_to_find);
1058 const char *subcollection,
1059 const char *property,
1090 const char *subcollection,
1091 const char *property,
1121 const char *subcollection,
1122 const char *property,
1151 const char *subcollection,
1152 const char *property,
1181 const char *subcollection,
1182 const char *property,
1211 const char *subcollection,
1212 const char *property,
1241 const char *subcollection,
1242 const char *property,
1270 const char *subcollection,
1271 const char *property,
1272 unsigned char logical);
1303 const char *subcollection,
1304 const char *property,
1369 const char *subcollection,
1370 const char *property,
1371 char *
string,
int length,
1403 const char *subcollection,
1404 const char *property,
1405 void *binary_data,
int length,
1436 const char *subcollection,
1437 const char *property, int32_t number,
1468 const char *subcollection,
1469 const char *property, uint32_t number,
1500 const char *subcollection,
1501 const char *property, int64_t number,
1532 const char *subcollection,
1533 const char *property, uint64_t number,
1564 const char *subcollection,
1565 const char *property,
double number,
1596 const char *subcollection,
1597 const char *property,
unsigned char logical,
1631 const char *subcollection,
1632 const char *property,
1633 int type,
void *data,
int length,
1691 const char *subcollection,
1693 const char *refprop,
1696 const char *property,
1702 const char *subcollection,
1704 const char *refprop,
1707 const char *property,
1713 const char *subcollection,
1715 const char *refprop,
1718 const char *property,
1723 const char *subcollection,
1725 const char *refprop,
1728 const char *property,
1733 const char *subcollection,
1735 const char *refprop,
1738 const char *property,
1743 const char *subcollection,
1745 const char *refprop,
1748 const char *property,
1753 const char *subcollection,
1755 const char *refprop,
1758 const char *property,
1763 const char *subcollection,
1765 const char *refprop,
1768 const char *property,
1769 unsigned char logical);
1773 const char *subcollection,
1775 const char *refprop,
1778 const char *property,
1785 const char *subcollection,
1787 const char *refprop,
1790 const char *property,
1797 const char *subcollection,
1799 const char *refprop,
1802 const char *property,
1808 const char *subcollection,
1810 const char *refprop,
1813 const char *property,
1819 const char *subcollection,
1821 const char *refprop,
1824 const char *property,
1830 const char *subcollection,
1832 const char *refprop,
1835 const char *property,
1844 const char *subcollection,
1846 const char *refprop,
1849 const char *property,
1855 const char *subcollection,
1857 const char *refprop,
1860 const char *property,
1861 unsigned char logical,
1866 const char *subcollection,
1868 const char *refprop,
1871 const char *property,
1927 const char *property,
1935 const char *property,
1943 const char *property,
1950 const char *property,
1957 const char *property,
1964 const char *property,
1971 const char *property,
1978 const char *property,
1980 unsigned char logical);
1990 const char *property,
2028 #define COL_CMPIN_PROP_EQU 0x000000004
2030 #define COL_CMPIN_PROP_BEG 0x000000005
2032 #define COL_CMPIN_PROP_MID 0x000000006
2034 #define COL_CMPIN_PROP_END 0x000000007
2047 #define COL_CMPIN_PROP_DOT 0x000000008
2050 #define COL_CMPIN_PROP_LEN 0x000000010
2053 #define COL_CMPIN_TYPE 0x000000020
2056 #define COL_CMPIN_DATA_LEN 0x000000040
2066 #define COL_CMPIN_DATA 0x000000080
2088 #define COL_CMPOUT_PROP_STR 0x00000001
2096 #define COL_CMPOUT_PROP_LEN 0x00000002
2103 #define COL_CMPOUT_DATA_LEN 0x00000004
2112 #define COL_CMPOUT_DATA 0x00000008
2139 #define COL_DSP_END 0
2150 #define COL_DSP_FRONT 1
2163 #define COL_DSP_BEFORE 2
2176 #define COL_DSP_AFTER 3
2195 #define COL_DSP_INDEX 4
2213 #define COL_DSP_FIRSTDUP 5
2233 #define COL_DSP_LASTDUP 6
2263 #define COL_DSP_NDUP 7
2283 #define COL_INSERT_NOCHECK 0
2288 #define COL_INSERT_DUPOVER 1
2293 #define COL_INSERT_DUPOVERT 2
2295 #define COL_INSERT_DUPERROR 3
2300 #define COL_INSERT_DUPERRORT 4
2304 #define COL_INSERT_DUPMOVE 5
2308 #define COL_INSERT_DUPMOVET 6
2426 uint64_t
col_make_hash(
const char *
string,
int sub_len,
int *length);
2458 unsigned *out_flags);
2497 const char *property,
2520 const char *property);
2536 const char *property,
2550 const char *property,
2564 const char *property,
2565 unsigned char logical);
2577 const char *property,
2590 const char *property,
2603 const char *property,
2616 const char *property,
2629 const char *property,
2696 const char *subcollection,
2698 const char *refprop,
2745 const char *refprop,
2798 const char *subcollection,
2800 const char *refprop,
2845 const char *refprop,
2909 const char *subcollection,
2912 const char *refprop,
2959 const char *refprop,
int col_update_property(struct collection_item *ci, const char *property_to_find, int type, void *new_data, int length, int mode_flags)
Definition: collection.c:2823
int col_add_binary_property_with_ref(struct collection_item *ci, const char *subcollection, const char *property, void *binary_data, int length, struct collection_item **ret_ref)
Add a binary property to a collection.
Definition: collection_cnv.c:787
void col_unbind_iterator(struct collection_iterator *iterator)
Unbind the iterator from the collection.
Definition: collection_iter.c:188
int col_remove_item_from_current(struct collection_item *ci, int disposition, const char *refprop, int idx, int type)
Remove item from the current collection.
Definition: collection.c:877
int col_add_collection_to_collection(struct collection_item *ci, const char *sub_collection_name, const char *as_property, struct collection_item *collection_to_add, int mode)
Add collection to collection.
Definition: collection.c:2460
int col_create_collection(struct collection_item **ci, const char *name, unsigned cclass)
Create a collection.
Definition: collection.c:2197
void col_destroy_collection(struct collection_item *ci)
Destroy a collection.
Definition: collection.c:2238
int col_get_collection_count(struct collection_item *item, unsigned *count)
Get count of the elements.
Definition: collection.c:2959
int col_get_collection_class(struct collection_item *item, unsigned *cclass)
Get collection class.
Definition: collection.c:2940
int col_modify_int_item(struct collection_item *item, const char *property, int32_t number)
Modify item value to be an integer.
Definition: collection_cnv.c:1198
int col_add_str_property(struct collection_item *ci, const char *subcollection, const char *property, const char *string, int length)
Add a string property to a collection.
Definition: collection_cnv.c:544
int col_modify_unsigned_item(struct collection_item *item, const char *property, uint32_t number)
Modify item value to be an unsigned integer.
Definition: collection_cnv.c:1245
int(* col_copy_cb)(struct collection_item *item, void *ext_data, int *skip)
Copy item callback.
Definition: collection.h:510
int col_extract_item(struct collection_item *collection, const char *subcollection, int disposition, const char *refprop, int idx, int type, struct collection_item **ret_ref)
Extract item from the collection.
Definition: collection.c:783
int col_insert_int_property(struct collection_item *ci, const char *subcollection, int disposition, const char *refprop, int idx, unsigned flags, const char *property, int32_t number)
Insert an integer property.
Definition: collection_cnv.c:103
int col_insert_ulong_property(struct collection_item *ci, const char *subcollection, int disposition, const char *refprop, int idx, unsigned flags, const char *property, uint64_t number)
Insert an unsigned long property.
Definition: collection_cnv.c:195
int col_bind_iterator(struct collection_iterator **iterator, struct collection_item *ci, int mode_flags)
Bind iterator to a collection.
Definition: collection_iter.c:63
int col_insert_long_property(struct collection_item *ci, const char *subcollection, int disposition, const char *refprop, int idx, unsigned flags, const char *property, int64_t number)
Insert a long property.
Definition: collection_cnv.c:165
uint64_t col_make_hash(const char *string, int sub_len, int *length)
Calculate hash value for a string.
Definition: collection.c:3031
int col_get_item(struct collection_item *ci, const char *property_to_find, int type, int mode_flags, struct collection_item **item)
Search function to get an item.
Definition: collection.c:2776
Opaque iterator structure.
Definition: collection.h:418
int col_set_collection_class(struct collection_item *item, unsigned cclass)
Set collection class.
Definition: collection.c:2921
int col_insert_item_into_current(struct collection_item *collection, struct collection_item *item, int disposition, const char *refprop, int idx, unsigned flags)
Insert item to the current collection.
Definition: collection.c:340
int col_insert_double_property(struct collection_item *ci, const char *subcollection, int disposition, const char *refprop, int idx, unsigned flags, const char *property, double number)
Insert a property with a floating point value.
Definition: collection_cnv.c:225
int col_add_ulong_property(struct collection_item *ci, const char *subcollection, const char *property, uint64_t number)
Add an unsigned long property to a collection.
Definition: collection_cnv.c:664
int col_modify_item(struct collection_item *item, const char *property, int type, const void *data, int length)
Modify any item element.
Definition: collection.c:2853
int col_sort_collection(struct collection_item *col, unsigned cmp_flags, unsigned sort_flags)
Sort collection.
Definition: collection_cmp.c:297
int col_add_int_property_with_ref(struct collection_item *ci, const char *subcollection, const char *property, int32_t number, struct collection_item **ret_ref)
Add an integer property to a collection.
Definition: collection_cnv.c:813
int col_insert_item(struct collection_item *collection, const char *subcollection, struct collection_item *item, int disposition, const char *refprop, int idx, unsigned flags)
Insert item to the collection.
Definition: collection.c:901
int col_update_bool_property(struct collection_item *ci, const char *property, int mode_flags, unsigned char logical)
Definition: collection_cnv.c:1114
int col_insert_str_property(struct collection_item *ci, const char *subcollection, int disposition, const char *refprop, int idx, unsigned flags, const char *property, const char *string, int length)
Insert a string property.
Definition: collection_cnv.c:38
int col_remove_item(struct collection_item *ci, const char *subcollection, int disposition, const char *refprop, int idx, int type)
Remove item from the collection.
Definition: collection.c:843
int col_get_item_type(struct collection_item *ci)
Get item type.
Definition: collection.c:3003
int col_modify_str_item(struct collection_item *item, const char *property, const char *string, int length)
Modify item value to be a string.
Definition: collection_cnv.c:1146
int col_is_of_class(struct collection_item *item, unsigned cclass)
Check the class of collection.
Definition: collection.c:2980
int col_get_iterator_depth(struct collection_iterator *iterator, int *depth)
Get current depth.
Definition: collection_iter.c:152
int col_extract_item_from_current(struct collection_item *collection, int disposition, const char *refprop, int idx, int type, struct collection_item **ret_ref)
Extract item from the current collection.
Definition: collection.c:600
int col_modify_binary_item(struct collection_item *item, const char *property, void *binary_data, int length)
Modify item value to be a binary blob.
Definition: collection_cnv.c:1167
int col_insert_bool_property_with_ref(struct collection_item *ci, const char *subcollection, int disposition, const char *refprop, int idx, unsigned flags, const char *property, unsigned char logical, struct collection_item **ret_ref)
Insert a property with a Boolean value and get back a reference.
Definition: collection_cnv.c:512
int col_modify_ulong_item(struct collection_item *item, const char *property, uint64_t number)
Modify item value to be an unsigned long.
Definition: collection_cnv.c:1230
int col_insert_property_with_ref(struct collection_item *collection, const char *subcollection, int disposition, const char *refprop, int idx, unsigned flags, const char *property, int type, const void *data, int length, struct collection_item **ret_ref)
Insert property of any type and get back a reference.
Definition: collection.c:1076
int col_add_double_property(struct collection_item *ci, const char *subcollection, const char *property, double number)
Add a property of type double to a collection.
Definition: collection_cnv.c:687
int col_update_unsigned_property(struct collection_item *ci, const char *property, int mode_flags, uint32_t number)
Definition: collection_cnv.c:1045
int col_get_reference_from_item(struct collection_item *ci, struct collection_item **acceptor)
Get a reference from the item.
Definition: collection.c:2429
int col_get_item_and_do(struct collection_item *ci, const char *property_to_find, int type, int mode_flags, col_item_fn item_handler, void *custom_data)
Search and do function.
Definition: collection.c:2753
int col_add_long_property(struct collection_item *ci, const char *subcollection, const char *property, int64_t number)
Add an long property to a collection.
Definition: collection_cnv.c:640
int col_delete_property(struct collection_item *ci, const char *property_to_find, int type, int mode_flags)
Delete property.
Definition: collection.c:2798
int col_get_item_length(struct collection_item *ci)
Get value length from the item.
Definition: collection.c:3009
int col_modify_item_property(struct collection_item *item, const char *property)
Modify item property.
Definition: collection_cnv.c:1131
int col_insert_unsinged_property(struct collection_item *ci, const char *subcollection, int disposition, const char *refprop, int idx, unsigned flags, const char *property, uint32_t number)
Insert an unsigned property.
int col_update_int_property(struct collection_item *ci, const char *property, int mode_flags, int32_t number)
Definition: collection_cnv.c:1029
int col_get_item_depth(struct collection_iterator *iterator, int *depth)
Get depth of the last returned item.
Definition: collection_iter.c:169
int col_insert_ulong_property_with_ref(struct collection_item *ci, const char *subcollection, int disposition, const char *refprop, int idx, unsigned flags, const char *property, uint64_t number, struct collection_item **ret_ref)
Insert an unsigned long property and get back a reference.
Definition: collection_cnv.c:450
Opaque structure that holds one property.
int col_traverse_collection(struct collection_item *ci, int mode_flags, col_item_fn item_handler, void *custom_data)
Traverse collection.
Definition: collection.c:2697
uint64_t col_get_item_hash(struct collection_item *ci)
Get hash value from the item.
Definition: collection.c:3021
int col_get_collection_reference(struct collection_item *ci, struct collection_item **acceptor, const char *collection_to_find)
Get a reference to a collection.
Definition: collection.c:2374
int col_iterate_up(struct collection_iterator *iterator, unsigned level)
Move up.
Definition: collection_iter.c:128
int col_update_long_property(struct collection_item *ci, const char *property, int mode_flags, int64_t number)
Definition: collection_cnv.c:1062
int col_insert_unsinged_property_with_ref(struct collection_item *ci, const char *subcollection, int disposition, const char *refprop, int idx, unsigned flags, const char *property, uint32_t number, struct collection_item **ret_ref)
Insert an unsigned property and get back a reference.
int col_insert_str_property_with_ref(struct collection_item *ci, const char *subcollection, int disposition, const char *refprop, int idx, unsigned flags, const char *property, const char *string, int length, struct collection_item **ret_ref)
Insert a string property and get back a reference.
Definition: collection_cnv.c:286
int col_add_int_property(struct collection_item *ci, const char *subcollection, const char *property, int32_t number)
Add an integer property to a collection.
Definition: collection_cnv.c:594
int col_insert_int_property_with_ref(struct collection_item *ci, const char *subcollection, int disposition, const char *refprop, int idx, unsigned flags, const char *property, int32_t number, struct collection_item **ret_ref)
Insert an integer property and get back a reference.
Definition: collection_cnv.c:356
int col_update_binary_property(struct collection_item *ci, const char *property, int mode_flags, void *binary_data, int length)
Definition: collection_cnv.c:1012
int col_copy_collection(struct collection_item **collection_copy, struct collection_item *collection_to_copy, const char *name_to_use, int copy_mode)
Copy collection without data modification.
Definition: collection.c:2276
int col_is_item_in_collection(struct collection_item *ci, const char *property_to_find, int type, int mode_flags, int *found)
Is property in the collection?
Definition: collection.c:2728
int col_modify_double_item(struct collection_item *item, const char *property, double number)
Modify item value to be a floating point.
Definition: collection_cnv.c:1260
int col_update_double_property(struct collection_item *ci, const char *property, int mode_flags, double number)
Definition: collection_cnv.c:1097
int col_iterate_collection(struct collection_iterator *iterator, struct collection_item **item)
Iterate collection.
Definition: collection_iter.c:201
int col_insert_double_property_with_ref(struct collection_item *ci, const char *subcollection, int disposition, const char *refprop, int idx, unsigned flags, const char *property, double number, struct collection_item **ret_ref)
Insert a property with a floating point value and get back a reference.
Definition: collection_cnv.c:481
void * col_get_item_data(struct collection_item *ci)
Get property value from the item.
Definition: collection.c:3015
void col_pin_iterator(struct collection_iterator *iterator)
Pin iterator.
Definition: collection_iter.c:382
int col_add_any_property_with_ref(struct collection_item *ci, const char *subcollection, const char *property, int type, void *data, int length, struct collection_item **ret_ref)
Add a property of a specified type to a collection.
Definition: collection_cnv.c:963
void col_delete_item(struct collection_item *item)
Delete extracted item.
Definition: collection.c:176
int col_modify_long_item(struct collection_item *item, const char *property, int64_t number)
Modify item value to be a long integer.
Definition: collection_cnv.c:1214
int col_add_unsigned_property(struct collection_item *ci, const char *subcollection, const char *property, uint32_t number)
Add an unsigned integer property to a collection.
Definition: collection_cnv.c:617
int col_insert_binary_property_with_ref(struct collection_item *ci, const char *subcollection, int disposition, const char *refprop, int idx, unsigned flags, const char *property, void *binary_data, int length, struct collection_item **ret_ref)
Insert a binary property and get back a reference.
Definition: collection_cnv.c:324
int col_add_long_property_with_ref(struct collection_item *ci, const char *subcollection, const char *property, int64_t number, struct collection_item **ret_ref)
Add an long property to a collection.
Definition: collection_cnv.c:863
int col_insert_long_property_with_ref(struct collection_item *ci, const char *subcollection, int disposition, const char *refprop, int idx, unsigned flags, const char *property, int64_t number, struct collection_item **ret_ref)
Insert a long property and get back a reference.
Definition: collection_cnv.c:419
int col_update_ulong_property(struct collection_item *ci, const char *property, int mode_flags, uint64_t number)
Definition: collection_cnv.c:1080
int(* col_item_fn)(const char *property, int property_len, int type, void *data, int length, void *custom_dat, int *stop)
Search Callback.
Definition: collection.h:631
int col_add_double_property_with_ref(struct collection_item *ci, const char *subcollection, const char *property, double number, struct collection_item **ret_ref)
Add a property of type double to a collection.
Definition: collection_cnv.c:913
int col_update_str_property(struct collection_item *ci, const char *property, int mode_flags, char *string, int length)
Definition: collection_cnv.c:994
const char * col_get_item_property(struct collection_item *ci, int *property_len)
Get item property.
Definition: collection.c:2995
int col_insert_binary_property(struct collection_item *ci, const char *subcollection, int disposition, const char *refprop, int idx, unsigned flags, const char *property, void *binary_data, int length)
Insert a binary property.
Definition: collection_cnv.c:71
int col_add_any_property(struct collection_item *ci, const char *subcollection, const char *property, int type, void *data, int length)
Add a property of a specified type to a collection.
Definition: collection_cnv.c:733
int col_add_bool_property(struct collection_item *ci, const char *subcollection, const char *property, unsigned char logical)
Add a Boolean property to a collection.
Definition: collection_cnv.c:710
int col_insert_bool_property(struct collection_item *ci, const char *subcollection, int disposition, const char *refprop, int idx, unsigned flags, const char *property, unsigned char logical)
Insert a property with a Boolean value.
Definition: collection_cnv.c:255
int col_add_str_property_with_ref(struct collection_item *ci, const char *subcollection, const char *property, char *string, int length, struct collection_item **ret_ref)
Add a string property to a collection.
Definition: collection_cnv.c:761
int col_compare_items(struct collection_item *first, struct collection_item *second, unsigned in_flags, unsigned *out_flags)
Compare two items.
Definition: collection_cmp.c:52
int col_add_bool_property_with_ref(struct collection_item *ci, const char *subcollection, const char *property, unsigned char logical, struct collection_item **ret_ref)
Add a Boolean property to a collection.
Definition: collection_cnv.c:938
int col_add_binary_property(struct collection_item *ci, const char *subcollection, const char *property, void *binary_data, int length)
Add a binary property to a collection.
Definition: collection_cnv.c:569
int col_modify_bool_item(struct collection_item *item, const char *property, unsigned char logical)
Modify item value to be a Boolean.
Definition: collection_cnv.c:1183
int col_add_ulong_property_with_ref(struct collection_item *ci, const char *subcollection, const char *property, uint64_t number, struct collection_item **ret_ref)
Add an unsigned long property to a collection.
Definition: collection_cnv.c:888
void col_rewind_iterator(struct collection_iterator *iterator)
Rewind iterator.
Definition: collection_iter.c:411
int col_add_unsigned_property_with_ref(struct collection_item *ci, const char *subcollection, const char *property, uint32_t number, struct collection_item **ret_ref)
Add an unsigned integer property to a collection.
Definition: collection_cnv.c:838
int col_copy_collection_with_cb(struct collection_item **collection_copy, struct collection_item *collection_to_copy, const char *name_to_use, int copy_mode, col_copy_cb copy_cb, void *ext_data)
Copy collection with data modification.
Definition: collection.c:2297