00001 /* vim: set sw=8 ts=8 sts=8 expandtab: */ 00002 #ifndef CMAID_CONTAINER_FUNCDEF_H 00003 #define CMAID_CONTAINER_FUNCDEF_H 00004 00005 #include <stdlib.h> 00006 00012 #define CMAID_CONTAINER_FUNC(c) ((c)->interface) 00013 00022 CMAID_INLINE int 00023 cmaid_container_count(const Cmaid_Container *c) 00024 { 00025 CMAID_CHECK_CONTAINER_RET(c, 0); 00026 return c->count; 00027 } 00028 00033 CMAID_INLINE int 00034 cmaid_container_empty_is(const Cmaid_Container *c) 00035 { 00036 CMAID_CHECK_CONTAINER_RET(c, 1); 00037 return c->count == 0; 00038 } 00039 00049 CMAID_INLINE void 00050 cmaid_container_clear(Cmaid_Container *c) 00051 { 00052 CMAID_CHECK_CONTAINER(c); 00053 CMAID_CONTAINER_FUNC(c)->clear(c); 00054 } 00055 00077 CMAID_INLINE void 00078 cmaid_container_iter_attach(Cmaid_Container *c, Cmaid_Iter *it) 00079 { 00080 CMAID_CHECK_CONTAINER(c); 00081 CMAID_CONTAINER_FUNC(c)->iter_attach(c, it); 00082 } 00083 00094 CMAID_INLINE void 00095 cmaid_container_iter_detach(Cmaid_Container *c, Cmaid_Iter *it) 00096 { 00097 CMAID_CHECK_CONTAINER(c); 00098 CMAID_CONTAINER_FUNC(c)->iter_detach(c, it); 00099 it->container = NULL; 00100 it->interface = NULL; 00101 } 00102 00111 CMAID_INLINE void 00112 cmaid_container_destroy(Cmaid_Container *c) 00113 { 00114 CMAID_CHECK_CONTAINER(c); 00115 CMAID_CONTAINER_FUNC(c)->destroy(c); 00116 } 00117 00118 #endif /* CMAID_CONTAINER_FUNCDEF_H */
1.5.8