libplist  2.0.0
Macros | Typedefs | Enumerations | Functions
plist.h File Reference

Main include of libplist. More...

#include <stdint.h>
#include <sys/types.h>
#include <stdarg.h>

Macros

#define PLIST_WARN_DEPRECATED(x)
 
#define _PLIST_IS_TYPE(__plist, __plist_type)   (__plist && (plist_get_node_type(__plist) == PLIST_##__plist_type))
 
#define PLIST_IS_BOOLEAN(__plist)   _PLIST_IS_TYPE(__plist, BOOLEAN)
 
#define PLIST_IS_UINT(__plist)   _PLIST_IS_TYPE(__plist, UINT)
 
#define PLIST_IS_REAL(__plist)   _PLIST_IS_TYPE(__plist, REAL)
 
#define PLIST_IS_STRING(__plist)   _PLIST_IS_TYPE(__plist, STRING)
 
#define PLIST_IS_ARRAY(__plist)   _PLIST_IS_TYPE(__plist, ARRAY)
 
#define PLIST_IS_DICT(__plist)   _PLIST_IS_TYPE(__plist, DICT)
 
#define PLIST_IS_DATE(__plist)   _PLIST_IS_TYPE(__plist, DATE)
 
#define PLIST_IS_DATA(__plist)   _PLIST_IS_TYPE(__plist, DATA)
 
#define PLIST_IS_KEY(__plist)   _PLIST_IS_TYPE(__plist, KEY)
 
#define PLIST_IS_UID(__plist)   _PLIST_IS_TYPE(__plist, UID)
 

Typedefs

typedef void * plist_t
 The basic plist abstract data type.
 
typedef void * plist_dict_iter
 The plist dictionary iterator.
 

Enumerations

enum  plist_type {
  PLIST_BOOLEAN,
  PLIST_UINT,
  PLIST_REAL,
  PLIST_STRING,
  PLIST_ARRAY,
  PLIST_DICT,
  PLIST_DATE,
  PLIST_DATA,
  PLIST_KEY,
  PLIST_UID,
  PLIST_NONE
}
 The enumeration of plist node types. More...
 

Functions

plist_t plist_new_dict (void)
 Create a new root plist_t type PLIST_DICT. More...
 
plist_t plist_new_array (void)
 Create a new root plist_t type PLIST_ARRAY. More...
 
plist_t plist_new_string (const char *val)
 Create a new plist_t type PLIST_STRING. More...
 
plist_t plist_new_bool (uint8_t val)
 Create a new plist_t type PLIST_BOOLEAN. More...
 
plist_t plist_new_uint (uint64_t val)
 Create a new plist_t type PLIST_UINT. More...
 
plist_t plist_new_real (double val)
 Create a new plist_t type PLIST_REAL. More...
 
plist_t plist_new_data (const char *val, uint64_t length)
 Create a new plist_t type PLIST_DATA. More...
 
plist_t plist_new_date (int32_t sec, int32_t usec)
 Create a new plist_t type PLIST_DATE. More...
 
plist_t plist_new_uid (uint64_t val)
 Create a new plist_t type PLIST_UID. More...
 
void plist_free (plist_t plist)
 Destruct a plist_t node and all its children recursively. More...
 
plist_t plist_copy (plist_t node)
 Return a copy of passed node and it's children. More...
 
uint32_t plist_array_get_size (plist_t node)
 Get size of a PLIST_ARRAY node. More...
 
plist_t plist_array_get_item (plist_t node, uint32_t n)
 Get the nth item in a PLIST_ARRAY node. More...
 
uint32_t plist_array_get_item_index (plist_t node)
 Get the index of an item. More...
 
void plist_array_set_item (plist_t node, plist_t item, uint32_t n)
 Set the nth item in a PLIST_ARRAY node. More...
 
void plist_array_append_item (plist_t node, plist_t item)
 Append a new item at the end of a PLIST_ARRAY node. More...
 
void plist_array_insert_item (plist_t node, plist_t item, uint32_t n)
 Insert a new item at position n in a PLIST_ARRAY node. More...
 
void plist_array_remove_item (plist_t node, uint32_t n)
 Remove an existing position in a PLIST_ARRAY node. More...
 
uint32_t plist_dict_get_size (plist_t node)
 Get size of a PLIST_DICT node. More...
 
void plist_dict_new_iter (plist_t node, plist_dict_iter *iter)
 Create an iterator of a PLIST_DICT node. More...
 
void plist_dict_next_item (plist_t node, plist_dict_iter iter, char **key, plist_t *val)
 Increment iterator of a PLIST_DICT node. More...
 
void plist_dict_get_item_key (plist_t node, char **key)
 Get key associated to an item. More...
 
plist_t plist_dict_get_item (plist_t node, const char *key)
 Get the nth item in a PLIST_DICT node. More...
 
void plist_dict_set_item (plist_t node, const char *key, plist_t item)
 Set item identified by key in a PLIST_DICT node. More...
 
void plist_dict_insert_item (plist_t node, const char *key, plist_t item)
 Insert a new item into a PLIST_DICT node. More...
 
void plist_dict_remove_item (plist_t node, const char *key)
 Remove an existing position in a PLIST_DICT node. More...
 
void plist_dict_merge (plist_t *target, plist_t source)
 Merge a dictionary into another. More...
 
plist_t plist_get_parent (plist_t node)
 Get the parent of a node. More...
 
plist_type plist_get_node_type (plist_t node)
 Get the plist_type of a node. More...
 
void plist_get_key_val (plist_t node, char **val)
 Get the value of a PLIST_KEY node. More...
 
void plist_get_string_val (plist_t node, char **val)
 Get the value of a PLIST_STRING node. More...
 
void plist_get_bool_val (plist_t node, uint8_t *val)
 Get the value of a PLIST_BOOLEAN node. More...
 
void plist_get_uint_val (plist_t node, uint64_t *val)
 Get the value of a PLIST_UINT node. More...
 
void plist_get_real_val (plist_t node, double *val)
 Get the value of a PLIST_REAL node. More...
 
void plist_get_data_val (plist_t node, char **val, uint64_t *length)
 Get the value of a PLIST_DATA node. More...
 
void plist_get_date_val (plist_t node, int32_t *sec, int32_t *usec)
 Get the value of a PLIST_DATE node. More...
 
void plist_get_uid_val (plist_t node, uint64_t *val)
 Get the value of a PLIST_UID node. More...
 
void plist_set_key_val (plist_t node, const char *val)
 Set the value of a node. More...
 
void plist_set_string_val (plist_t node, const char *val)
 Set the value of a node. More...
 
void plist_set_bool_val (plist_t node, uint8_t val)
 Set the value of a node. More...
 
void plist_set_uint_val (plist_t node, uint64_t val)
 Set the value of a node. More...
 
void plist_set_real_val (plist_t node, double val)
 Set the value of a node. More...
 
void plist_set_data_val (plist_t node, const char *val, uint64_t length)
 Set the value of a node. More...
 
void plist_set_date_val (plist_t node, int32_t sec, int32_t usec)
 Set the value of a node. More...
 
void plist_set_uid_val (plist_t node, uint64_t val)
 Set the value of a node. More...
 
void plist_to_xml (plist_t plist, char **plist_xml, uint32_t *length)
 Export the plist_t structure to XML format. More...
 
void plist_to_bin (plist_t plist, char **plist_bin, uint32_t *length)
 Export the plist_t structure to binary format. More...
 
void plist_from_xml (const char *plist_xml, uint32_t length, plist_t *plist)
 Import the plist_t structure from XML format. More...
 
void plist_from_bin (const char *plist_bin, uint32_t length, plist_t *plist)
 Import the plist_t structure from binary format. More...
 
void plist_from_memory (const char *plist_data, uint32_t length, plist_t *plist)
 Import the plist_t structure from memory data. More...
 
int plist_is_binary (const char *plist_data, uint32_t length)
 Test if in-memory plist data is binary or XML This method will look at the first bytes of plist_data to determine if plist_data contains a binary or XML plist. More...
 
plist_t plist_access_path (plist_t plist, uint32_t length,...)
 Get a node from its path. More...
 
plist_t plist_access_pathv (plist_t plist, uint32_t length, va_list v)
 Variadic version of plist_access_path. More...
 
char plist_compare_node_value (plist_t node_l, plist_t node_r)
 Compare two node values. More...
 

Detailed Description

Main include of libplist.