From: <kin...@us...> - 2009-10-11 19:31:50
|
Revision: 4276 http://teem.svn.sourceforge.net/teem/?rev=4276&view=rev Author: kindlmann Date: 2009-10-11 19:31:36 +0000 (Sun, 11 Oct 2009) Log Message: ----------- API NEW: added airEnumPrint to print contents of an airEnum, to help debug problems in things associated with gageKinds Modified Paths: -------------- teem/trunk/src/air/air.h teem/trunk/src/air/enum.c Modified: teem/trunk/src/air/air.h =================================================================== --- teem/trunk/src/air/air.h 2009-10-11 19:30:17 UTC (rev 4275) +++ teem/trunk/src/air/air.h 2009-10-11 19:31:36 UTC (rev 4276) @@ -141,7 +141,9 @@ AIR_EXPORT int airEnumVal(const airEnum *enm, const char *str); AIR_EXPORT char *airEnumFmtDesc(const airEnum *enm, int val, int canon, const char *fmt); +AIR_EXPORT void airEnumPrint(FILE *file, const airEnum *enm); + /* ******** airEndian enum ** Modified: teem/trunk/src/air/enum.c =================================================================== --- teem/trunk/src/air/enum.c 2009-10-11 19:30:17 UTC (rev 4275) +++ teem/trunk/src/air/enum.c 2009-10-11 19:31:36 UTC (rev 4276) @@ -207,3 +207,57 @@ } return buff; } + +static void +_enumPrintVal(FILE *file, const airEnum *enm, unsigned int ii) { + + if (enm->desc) { + fprintf(file, "desc: %s\n", enm->desc[ii]); + } + if (enm->strEqv) { + unsigned int jj=0; + fprintf(file, "eqv:"); + while (enm->strEqv[jj]) { + if (enm->val[ii] == enm->valEqv[jj]) { + fprintf(file, " \"%s\"", enm->strEqv[jj]); + } + jj++; + } + fprintf(file, "\n"); + } +} + +void +airEnumPrint(FILE *file, const airEnum *enm) { + unsigned int ii; + + if (!(file && enm)) { + return; + } + + if (airStrlen(enm->name)) { + fprintf(file, "airEnum \"%s\":\n", enm->name); + } else { + fprintf(file, "airEnum (NO NAME!):\n"); + } + fprintf(file, "(%s case sensitive)\n", (enm->sense ? "yes, is" : "is not")); + if (enm->val) { + fprintf(file, "Values (%u valid) given explicitly\n", enm->M); + fprintf(file, "--- (0) %u: \"%s\"\n", enm->val[0], enm->str[0]); + for (ii=1; ii<=enm->M; ii++) { + fprintf(file, "--- (%u) %u: \"%s\" == \"%s\"\n", ii, enm->val[ii], enm->str[ii], + airEnumStr(enm, enm->val[ii])); + _enumPrintVal(file, enm, ii); + } + } else { + /* enm->val NULL */ + fprintf(file, "Values implicit; [1,%u] valid\n", enm->M); + fprintf(file, "--- 0: \"%s\"\n", enm->str[0]); + for (ii=1; ii<=enm->M; ii++) { + fprintf(file, "--- %u: %s == %s\n", ii, enm->str[ii], + airEnumStr(enm, ii)); + _enumPrintVal(file, enm, ii); + } + } + return; +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |