1 #ifndef _STATEFS_UTIL_H_
2 #define _STATEFS_UTIL_H_
7 #define container_of(ptr, type, member) \
8 ((type *)( (char *)(ptr) - offsetof(type, member) ))
13 #define STATEFS_META(name, type, value) { name, STATEFS_##type(value) }
14 #define STATEFS_META_END { NULL, {} }
16 static inline void statefs_node_release(
struct statefs_node *node)
25 statefs_node_release(&ns->node);
31 statefs_ns_release(&p->root);
34 static inline intptr_t statefs_first(
struct statefs_branch const*
self)
36 return (self->first ? self->first(
self) : 0);
39 static inline void statefs_next(
struct statefs_branch const*
self, intptr_t *p)
47 static inline void statefs_branch_release
50 if (
self && self->release)
51 self->release(
self, p);
57 return (self->get ? self->get(
self, p) : NULL);
64 return (n && n->
type == statefs_node_prop
72 return (n && n->
type | statefs_node_ns
80 return statefs_node2ns(statefs_get(
self, iter));
86 struct statefs_node *res =
self->branch.find(&self->branch, name);
87 return ( (res && res->
type == statefs_node_prop)
95 struct statefs_node *res =
self->branch.find(&self->branch, name);
96 return ( (res && res->
type | statefs_node_ns)
101 static inline char const* statefs_prop_name(
struct statefs_property const* p)
108 #endif // _STATEFS_UTIL_H_