Home | History | Annotate | Line # | Download | only in ppath
      1 /* $Id: ppath.h,v 1.1 2011/08/25 16:15:29 dyoung Exp $ */
      2 
      3 /* Copyright (c) 2010 David Young.  All rights reserved. */
      4 
      5 #ifndef _PPATH_H
      6 #define _PPATH_H
      7 
      8 #include <prop/proplib.h>
      9 
     10 #define	PPATH_MAX_COMPONENTS	16
     11 
     12 struct _ppath;
     13 struct _ppath_component;
     14 typedef struct _ppath ppath_t;
     15 typedef struct _ppath_component ppath_component_t;
     16 
     17 ppath_component_t *ppath_idx(unsigned int);
     18 ppath_component_t *ppath_key(const char *);
     19 
     20 ppath_component_t *ppath_component_retain(ppath_component_t *);
     21 void ppath_component_release(ppath_component_t *);
     22 
     23 ppath_t *ppath_create(void);
     24 unsigned int ppath_length(const ppath_t *);
     25 int ppath_component_idx(const ppath_component_t *);
     26 const char *ppath_component_key(const ppath_component_t *);
     27 ppath_t *ppath_pop(ppath_t *, ppath_component_t **);
     28 ppath_t *ppath_push(ppath_t *, ppath_component_t *);
     29 ppath_component_t *ppath_component_at(const ppath_t *, unsigned int);
     30 ppath_t *ppath_subpath(const ppath_t *, unsigned int, unsigned int);
     31 ppath_t *ppath_push_idx(ppath_t *, unsigned int);
     32 ppath_t *ppath_push_key(ppath_t *, const char *);
     33 ppath_t *ppath_replace_idx(ppath_t *, unsigned int);
     34 ppath_t *ppath_replace_key(ppath_t *, const char *);
     35 
     36 ppath_t *ppath_copy(const ppath_t *);
     37 ppath_t *ppath_retain(ppath_t *);
     38 void ppath_release(ppath_t *);
     39 
     40 prop_object_t ppath_lookup(prop_object_t, const ppath_t *);
     41 
     42 int ppath_copydel_object(prop_object_t, prop_object_t *, const ppath_t *);
     43 int ppath_copyset_object(prop_object_t, prop_object_t *, const ppath_t *,
     44     prop_object_t);
     45 int ppath_create_object(prop_object_t, const ppath_t *, prop_object_t);
     46 int ppath_set_object(prop_object_t, const ppath_t *, prop_object_t);
     47 int ppath_get_object(prop_object_t, const ppath_t *, prop_object_t *);
     48 int ppath_delete_object(prop_object_t, const ppath_t *);
     49 
     50 int ppath_copydel_bool(prop_object_t, prop_object_t *, const ppath_t *);
     51 int ppath_copyset_bool(prop_object_t, prop_object_t *, const ppath_t *, bool);
     52 int ppath_create_bool(prop_object_t, const ppath_t *, bool);
     53 int ppath_create_int64(prop_object_t, const ppath_t *, int64_t);
     54 int ppath_create_uint64(prop_object_t, const ppath_t *, uint64_t);
     55 int ppath_create_data(prop_object_t, const ppath_t *, const void *, size_t);
     56 int ppath_create_string(prop_object_t, const ppath_t *, const char *);
     57 int ppath_set_bool(prop_object_t, const ppath_t *, bool);
     58 int ppath_get_bool(prop_object_t, const ppath_t *, bool *);
     59 int ppath_delete_bool(prop_object_t, const ppath_t *);
     60 
     61 int ppath_copydel_data(prop_object_t, prop_object_t *, const ppath_t *);
     62 int ppath_copyset_data(prop_object_t, prop_object_t *, const ppath_t *,
     63     const void *, size_t);
     64 int ppath_set_data(prop_object_t, const ppath_t *, const void *, size_t);
     65 int ppath_get_data(prop_object_t, const ppath_t *, const void **, size_t *);
     66 int ppath_dup_data(prop_object_t, const ppath_t *, void **, size_t *);
     67 int ppath_delete_data(prop_object_t, const ppath_t *);
     68 
     69 int ppath_copydel_int64(prop_object_t, prop_object_t *, const ppath_t *);
     70 int ppath_copyset_int64(prop_object_t, prop_object_t *, const ppath_t *,
     71     int64_t);
     72 int ppath_set_int64(prop_object_t, const ppath_t *, int64_t);
     73 int ppath_get_int64(prop_object_t, const ppath_t *, int64_t *);
     74 int ppath_delete_int64(prop_object_t, const ppath_t *);
     75 
     76 int ppath_copydel_string(prop_object_t, prop_object_t *, const ppath_t *);
     77 int ppath_copyset_string(prop_object_t, prop_object_t *, const ppath_t *,
     78     const char *);
     79 int ppath_set_string(prop_object_t, const ppath_t *, const char *);
     80 int ppath_get_string(prop_object_t, const ppath_t *, const char **);
     81 int ppath_dup_string(prop_object_t, const ppath_t *, char **);
     82 int ppath_delete_string(prop_object_t, const ppath_t *);
     83 
     84 int ppath_copydel_uint64(prop_object_t, prop_object_t *, const ppath_t *);
     85 int ppath_copyset_uint64(prop_object_t, prop_object_t *, const ppath_t *,
     86     uint64_t);
     87 int ppath_set_uint64(prop_object_t, const ppath_t *, uint64_t);
     88 int ppath_get_uint64(prop_object_t, const ppath_t *, uint64_t *);
     89 int ppath_delete_uint64(prop_object_t, const ppath_t *);
     90 
     91 #endif /* _PPATH_H */
     92