87 #define NMG_INDEX_VALUE(_tab, _index) ((_tab)[_index])
88 #define NMG_INDEX_TEST(_tab, _p) ((_tab)[(_p)->index])
89 #define NMG_INDEX_SET(_tab, _p) {(_tab)[(_p)->index] = 1;}
90 #define NMG_INDEX_CLEAR(_tab, _p) {(_tab)[(_p)->index] = 0;}
91 #define NMG_INDEX_TEST_AND_SET(_tab, _p) ((_tab)[(_p)->index] == 0 ? ((_tab)[(_p)->index] = 1) : 0)
92 #define NMG_INDEX_IS_SET(_tab, _p) NMG_INDEX_TEST(_tab, _p)
93 #define NMG_INDEX_FIRST_TIME(_tab, _p) NMG_INDEX_TEST_AND_SET(_tab, _p)
94 #define NMG_INDEX_ASSIGN(_tab, _p, _val) {(_tab)[(_p)->index] = _val;}
95 #define NMG_INDEX_GET(_tab, _p) ((_tab)[(_p)->index])
96 #define NMG_INDEX_GETP(_ty, _tab, _p) ((struct _ty *)((_tab)[(_p)->index]))
97 #define NMG_INDEX_OR(_tab, _p, _val) {(_tab)[(_p)->index] |= _val;}
98 #define NMG_INDEX_AND(_tab, _p, _val) {(_tab)[(_p)->index] &= _val;}
99 #define NMG_INDEX_RETURN_IF_SET_ELSE_SET(_tab, _index) { \
100 if ((_tab)[_index]) return; \
101 else (_tab)[_index] = 1; \
105 #define NMG_0MANIFOLD 1
106 #define NMG_1MANIFOLD 2
107 #define NMG_2MANIFOLD 4
108 #define NMG_DANGLING 8
109 #define NMG_3MANIFOLD 16
111 #define NMG_SET_MANIFOLD(_t, _p, _v) NMG_INDEX_OR(_t, _p, _v)
112 #define NMG_MANIFOLDS(_t, _p) NMG_INDEX_VALUE(_t, (_p)->index)
113 #define NMG_CP_MANIFOLD(_t, _p, _q) (_t)[(_p)->index] = (_t)[(_q)->index]
118 const struct model *m);
Header file for the BRL-CAD common definitions.
int nmg_index_of_struct(const uint32_t *p)
void nmg_vls_struct_counts(struct bu_vls *str, const struct nmg_struct_counts *ctr)
void nmg_pr_struct_counts(const struct nmg_struct_counts *ctr, const char *str)
void nmg_pr_m_struct_counts(const struct model *m, const char *str)
uint32_t ** nmg_m_struct_count(struct nmg_struct_counts *ctr, const struct model *m)
fundamental vector, matrix, quaternion math macros