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)
uint32_t ** nmg_m_struct_count(struct nmg_struct_counts *ctr, const struct model *m)
void nmg_pr_m_struct_counts(const struct model *m, const char *str)
fundamental vector, matrix, quaternion math macros