xref: /minix/common/include/ppath/ppath.h (revision 84d9c625)
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