Revision: 76232 http://sourceforge.net/p/brlcad/code/76232 Author: brlcad Date: 2020-06-27 06:57:31 +0000 (Sat, 27 Jun 2020) Log Message: ----------- provide a macro for getting the number of path/dp entries and protect against crashing if there aren't any (e.g. '/') in DB_FULL_PATH_CUR_DIR. these macros need some help.
Modified Paths: -------------- brlcad/trunk/include/rt/db_fullpath.h Modified: brlcad/trunk/include/rt/db_fullpath.h =================================================================== --- brlcad/trunk/include/rt/db_fullpath.h 2020-06-27 05:59:39 UTC (rev 76231) +++ brlcad/trunk/include/rt/db_fullpath.h 2020-06-27 06:57:31 UTC (rev 76232) @@ -58,19 +58,23 @@ struct directory ** fp_names; /**< @brief array of dir pointers */ int * fp_bool; /**< @brief array of boolean flags */ }; +#define RT_CK_FULL_PATH(_p) BU_CKMAG(_p, DB_FULL_PATH_MAGIC, "db_full_path") + +#define DB_FULL_PATH_CUR_DIR(_pp) (((_pp)->fp_len > 0) ? (_pp)->fp_names[(_pp)->fp_len-1] : NULL) +#define DB_FULL_PATH_CUR_BOOL(_pp) ((_pp)->fp_bool[(_pp)->fp_len-1]) +#define DB_FULL_PATH_SET_CUR_BOOL(_pp, _i) ((_pp)->fp_bool[(_pp)->fp_len-1]) = _i + +#define DB_FULL_PATH_LEN(_pp) ((_pp)->fp_len) #define DB_FULL_PATH_POP(_pp) ((_pp)->fp_len > 0) ? (_pp)->fp_len-- : (_pp)->fp_len -#define DB_FULL_PATH_CUR_DIR(_pp) ((_pp)->fp_names[(_pp)->fp_len-1]) -#define DB_FULL_PATH_CUR_BOOL(_pp) ((_pp)->fp_bool[(_pp)->fp_len-1]) -#define DB_FULL_PATH_SET_CUR_BOOL(_pp, _i) ((_pp)->fp_bool[(_pp)->fp_len-1] = _i) -#define DB_FULL_PATH_ROOT_DIR(_pp) ((_pp)->fp_names[0]) #define DB_FULL_PATH_GET(_pp, _i) ((_pp)->fp_names[(_i)]) #define DB_FULL_PATH_GET_BOOL(_pp, _i) ((_pp)->fp_bool[(_i)]) #define DB_FULL_PATH_SET_BOOL(_pp, _i, _j) ((_pp)->fp_bool[(_i)] = _j) -#define RT_CK_FULL_PATH(_p) BU_CKMAG(_p, DB_FULL_PATH_MAGIC, "db_full_path") +#define DB_FULL_PATH_ROOT_DIR(_pp) ((_pp)->fp_names[0]) + /* db_fullpath.c */ RT_EXPORT extern void db_full_path_init(struct db_full_path *pathp); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. _______________________________________________ BRL-CAD Source Commits mailing list brlcad-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/brlcad-commits