[brlcad-commits] SF.net SVN: brlcad:[46883] brlcad/trunk/src/libgcv/wfobj
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: <n_...@us...> - 2011-09-23 21:55:40
|
Revision: 46883 http://brlcad.svn.sourceforge.net/brlcad/?rev=46883&view=rev Author: n_reed Date: 2011-09-23 21:55:33 +0000 (Fri, 23 Sep 2011) Log Message: ----------- interface cleanup, including hiding local functions Modified Paths: -------------- brlcad/trunk/src/libgcv/wfobj/obj_grammar.yy brlcad/trunk/src/libgcv/wfobj/obj_parser.cpp brlcad/trunk/src/libgcv/wfobj/obj_rules.re brlcad/trunk/src/libgcv/wfobj/re2c_utils.c brlcad/trunk/src/libgcv/wfobj/re2c_utils.h brlcad/trunk/src/libgcv/wfobj/tri_face.c Modified: brlcad/trunk/src/libgcv/wfobj/obj_grammar.yy =================================================================== --- brlcad/trunk/src/libgcv/wfobj/obj_grammar.yy 2011-09-23 21:48:52 UTC (rev 46882) +++ brlcad/trunk/src/libgcv/wfobj/obj_grammar.yy 2011-09-23 21:55:33 UTC (rev 46883) @@ -190,98 +190,6 @@ error = false; while ((yychar = obj_parser_lex(&yyval, scanner)) != YYEOF) { -#if 0 - /* print tokens received from scanner */ - switch(yychar) { - case EOL: - printf("EOL\n"); - break; - case FLOAT: - printf("FLOAT "); - break; - case INTEGER: - printf("INTEGER "); - break; - case VERTEX: - printf("VERTEX "); - break; - case T_VERTEX: - printf("T_VERTEX "); - break; - case N_VERTEX: - printf("N_VERTEX "); - break; - case V_REFERENCE: - printf("V_REFERENCE "); - break; - case TV_REFERENCE: - printf("TV_REFERENCE "); - break; - case NV_REFERENCE: - printf("NV_REFERENCE "); - break; - case TNV_REFERENCE: - printf("TNV_REFERENCE "); - break; - case POINT: - printf("POINT "); - break; - case LINE: - printf("LINE "); - break; - case FACE: - printf("FACE "); - break; - case GROUP: - printf("GROUP "); - break; - case SMOOTH: - printf("SMOOTH "); - break; - case OFF: - printf("OFF "); - break; - case OBJECT: - printf("OBJECT "); - break; - case ID: - printf("ID "); - break; - case USEMTL: - printf("USEMTL "); - break; - case MTLLIB: - printf("MTLLIB "); - break; - case USEMAP: - printf("USEMAP "); - break; - case MAPLIB: - printf("MAPLIB "); - break; - case SHADOW_OBJ: - printf("SHADOW_OBJ "); - break; - case TRACE_OBJ: - printf("TRACE_OBJ "); - break; - case BEVEL: - printf("BEVEL "); - break; - case C_INTERP: - printf("C_INTERP "); - break; - case D_INTERP: - printf("D_INTERP "); - break; - case LOD: - printf("LOD "); - break; - default: - printf("unrecognized (%d) ", yychar); - } -#endif - Parse(parser, yychar, yyval, scanner); } Modified: brlcad/trunk/src/libgcv/wfobj/obj_parser.cpp =================================================================== --- brlcad/trunk/src/libgcv/wfobj/obj_parser.cpp 2011-09-23 21:48:52 UTC (rev 46882) +++ brlcad/trunk/src/libgcv/wfobj/obj_parser.cpp 2011-09-23 21:55:33 UTC (rev 46883) @@ -135,12 +135,12 @@ static void destroyScanner(yyscan_t *scanner) { - freeScanner(*scanner); + scannerFree(*scanner); } static void setScannerIn(yyscan_t scanner, FILE *in) { - initScanner(scanner, in); + scannerInit(scanner, in); } static void setScannerExtra(yyscan_t scanner, detail::objCombinedState *extra) Modified: brlcad/trunk/src/libgcv/wfobj/obj_rules.re =================================================================== --- brlcad/trunk/src/libgcv/wfobj/obj_rules.re 2011-09-23 21:48:52 UTC (rev 46882) +++ brlcad/trunk/src/libgcv/wfobj/obj_rules.re 2011-09-23 21:55:33 UTC (rev 46883) @@ -75,7 +75,7 @@ void obj_parser_lex_destroy(yyscan_t scanner) { - freeScanner(scanner); + scannerFree(scanner); } int obj_parser_lex(YYSTYPE *yylval, yyscan_t scanner) Modified: brlcad/trunk/src/libgcv/wfobj/re2c_utils.c =================================================================== --- brlcad/trunk/src/libgcv/wfobj/re2c_utils.c 2011-09-23 21:48:52 UTC (rev 46882) +++ brlcad/trunk/src/libgcv/wfobj/re2c_utils.c 2011-09-23 21:55:33 UTC (rev 46883) @@ -26,19 +26,12 @@ #include "re2c_utils.h" #include "bu.h" -bu_string *newString() +/* helper to copy next line of in into buf + * returns length of copied line + */ +HIDDEN int +scannerGetNextLine(struct bu_vls *buf, FILE *in) { - struct bu_vls *string = NULL; - - BU_GETSTRUCT(string, bu_vls); - - bu_vls_init(string); - - return string; -} - -int getNextLine(bu_string *buf, FILE *in) -{ int len; bu_vls_trunc(buf, 0); @@ -54,21 +47,31 @@ return len + 1; } -int loadInput(scanner_t *scanner) +/* If scanner's input buffer is exhausted, it is refilled. + * returns new length of input buffer + */ +int +scannerLoadInput(scanner_t *scanner) { - bu_string *line = scanner->currLine; - int len = bu_vls_strlen(line); - char *lineEnd = bu_vls_addr(line) + len; + int lineLen; + char *lineEnd; + struct bu_vls *line; + line = scanner->currLine; + lineLen = bu_vls_strlen(line); + lineEnd = bu_vls_addr(line) + lineLen; + if (scanner->tokenStart >= lineEnd) { - len = getNextLine(line, scanner->in); + lineLen = scannerGetNextLine(line, scanner->in); scanner->tokenStart = bu_vls_addr(line); } - return len; + return lineLen; } -char *copyCurrTokenText(bu_string *tokenString, scanner_t *scanner) +/* copy scanner's internal string for current token to tokenString */ +char* +scannerCopyCurrTokenText(struct bu_vls *tokenString, scanner_t *scanner) { int tokenLen = *scanner->cursor_p - scanner->tokenStart; @@ -77,31 +80,42 @@ return bu_vls_addr(tokenString); } -void setStartCondition(scanner_t *scanner, const CONDTYPE sc) +/* set scanner's start condition to sc */ +void +scannerSetStartCondition(scanner_t *scanner, const CONDTYPE sc) { scanner->startCondition = sc; } -CONDTYPE getStartCondition(scanner_t *scanner) +/* get scanner's current start condition */ +CONDTYPE +scannerGetStartCondition(scanner_t *scanner) { return scanner->startCondition; } -void initScanner(scanner_t *scanner, FILE *in) +/* initialize scanner that reads from file in */ +void +scannerInit(scanner_t *scanner, FILE *in) { - setStartCondition(scanner, INITIAL); + scannerSetStartCondition(scanner, INITIAL); - scanner->tokenText = newString(); + BU_GETSTRUCT(scanner->tokenText, bu_vls); + bu_vls_init(scanner->tokenText); scanner->in = in; - scanner->currLine = newString(); - getNextLine(scanner->currLine, scanner->in); + BU_GETSTRUCT(scanner->currLine, bu_vls); + bu_vls_init(scanner->currLine); + scannerGetNextLine(scanner->currLine, scanner->in); + scanner->tokenStart = bu_vls_addr(scanner->currLine); } -void freeScanner(scanner_t *scanner) +/* free all resources associated with scanner */ +void +scannerFree(scanner_t *scanner) { bu_vls_vlsfree(scanner->currLine); bu_vls_vlsfree(scanner->tokenText); @@ -112,7 +126,7 @@ scanner->marker = NULL; scanner->cursor_p = NULL; - bu_free(scanner, "freeScanner scanner_t"); + bu_free(scanner, "scannerFree scanner_t"); } /* Modified: brlcad/trunk/src/libgcv/wfobj/re2c_utils.h =================================================================== --- brlcad/trunk/src/libgcv/wfobj/re2c_utils.h 2011-09-23 21:48:52 UTC (rev 46882) +++ brlcad/trunk/src/libgcv/wfobj/re2c_utils.h 2011-09-23 21:55:33 UTC (rev 46883) @@ -54,8 +54,8 @@ * - Your scanning function needs to return int (the token id). To return the * token id, you must use RETURN(id) rather than simply return id. * - * - A scanner_t* that you have initialized with initScanner(scanner_t*, FILE*) - * (and that you can deconstruct with freeScanner(scanner_t*)) must be + * - A scanner_t* that you have initialized with scannerInit(scanner_t*, FILE*) + * (and that you can deconstruct with scannerFree(scanner_t*)) must be * available inside your scan function. * * - You need to wrap the re2c comment block between the macros @@ -94,76 +94,78 @@ #define CONDTYPE enum YYCONDTYPE #endif -typedef struct bu_vls bu_string; - typedef struct { void *extra; /* user data - user must free */ FILE *in; /* user must close */ - bu_string *currLine; - bu_string *tokenText; + struct bu_vls *currLine; + struct bu_vls *tokenText; char *tokenStart; char *marker; char **cursor_p; CONDTYPE startCondition; } scanner_t; -void initScanner(scanner_t *scanner, FILE *in); -void freeScanner(scanner_t *scanner); +/* HELPERS */ +/* condition support */ +void +scannerSetStartCondition(scanner_t *scanner, const CONDTYPE sc); -#define YYMARKER re2c_scanner->marker +CONDTYPE +scannerGetStartCondition(scanner_t *scanner); -/* support for (f)lex "start conditions" */ -#define BEGIN(sc) setStartCondition(re2c_scanner, sc) -#define YYGETCONDITION() getStartCondition(re2c_scanner) - -void setStartCondition(scanner_t *scanner, const CONDTYPE sc); -CONDTYPE getStartCondition(scanner_t *scanner); - - /* text processing support */ -bu_string *newString(); -int getNextLine(bu_string *buf, FILE *in); -int loadInput(scanner_t *scanner); +#define YYMARKER _re2c_scanner->marker +int +scannerLoadInput(scanner_t *scanner); +#define UPDATE_START _re2c_scanner->tokenStart = *_re2c_scanner->cursor_p; -/* support for (f)lex token string */ -#define FREE_TOKEN_TEXT bu_vls_vlsfree(tokenString); -#define yytext (copyCurrTokenText(tokenString, re2c_scanner)) +char* +scannerCopyCurrTokenText(struct bu_vls *tokenString, scanner_t *scanner); +#define FREE_TOKEN_TEXT bu_vls_vlsfree(_re2c_token_string); -char *copyCurrTokenText(bu_string *tokenString, scanner_t *scanner); +/* USER FUNCTIONS */ +void +scannerInit(scanner_t *scanner, FILE *in); -/* update/save stream position */ -#define UPDATE_START re2c_scanner->tokenStart = *re2c_scanner->cursor_p; +void +scannerFree(scanner_t *scanner); +/* USER MACROS */ +/* support for (f)lex token string */ +#define yytext (scannerCopyCurrTokenText(_re2c_token_string, _re2c_scanner)) -/* use inside action to skip curr token and continue scanning */ -#define IGNORE_TOKEN \ - UPDATE_START; \ - continue; +/* support for (f)lex "start conditions" */ +#define BEGIN(sc) scannerSetStartCondition(_re2c_scanner, sc) +#define YYGETCONDITION() scannerGetStartCondition(_re2c_scanner) - /* use inside action to return tokenID to caller */ #define RETURN(tokenID) \ FREE_TOKEN_TEXT \ UPDATE_START; \ return tokenID; +/* use inside action to skip curr token and continue scanning */ +#define IGNORE_TOKEN \ + UPDATE_START; \ + continue; #define BEGIN_RE2C(scanner, yycursor) \ - /* define the stuff used by helper macros */ \ - scanner_t *re2c_scanner = scanner; \ - bu_string *tokenString; \ + /* define names used by helper macros */ \ + scanner_t *_re2c_scanner = scanner; \ + struct bu_vls *_re2c_token_string; \ char *yycursor; \ \ - if (loadInput(re2c_scanner) < 0) { \ + if (scannerLoadInput(_re2c_scanner) < 0) { \ return YYEOF; \ } \ \ - yycursor = re2c_scanner->tokenStart; \ - re2c_scanner->cursor_p = &yycursor; \ + yycursor = _re2c_scanner->tokenStart; \ + _re2c_scanner->cursor_p = &yycursor; \ \ - tokenString = newString(); \ + BU_GETSTRUCT(_re2c_token_string, bu_vls); \ + bu_vls_init(_re2c_token_string); \ \ /* create implicit label */ \ while (1) { Modified: brlcad/trunk/src/libgcv/wfobj/tri_face.c =================================================================== --- brlcad/trunk/src/libgcv/wfobj/tri_face.c 2011-09-23 21:48:52 UTC (rev 46882) +++ brlcad/trunk/src/libgcv/wfobj/tri_face.c 2011-09-23 21:55:33 UTC (rev 46883) @@ -19,12 +19,13 @@ */ /** @file tri_face.c * - * Implements triangulateFace routine for triangulating convex/concave planar N-gons. - * Uses nmg for triangulation, but accepts and returns simple arrays. + * Implements triangulateFace routine for triangulating convex/concave planar + * N-gons. Uses nmg for triangulation, but accepts and returns simple arrays. * */ #include "bu.h" +#include "common.h" #include "nmg.h" #include "raytrace.h" @@ -32,7 +33,7 @@ /* nmg access routines */ -struct shell* +HIDDEN struct shell* get_first_shell(struct model *model) { struct nmgregion *region; @@ -44,7 +45,7 @@ return shell; } -struct model* +HIDDEN struct model* get_faceuse_model(struct faceuse *fu) { return fu->s_p->r_p->m_p; @@ -52,7 +53,7 @@ /* nmg construction routines */ -struct vertex_g* +HIDDEN struct vertex_g* make_nmg_vertex_g(double x, double y, double z, long index) { struct vertex_g *vg; @@ -66,7 +67,7 @@ return vg; } -struct vertex* +HIDDEN struct vertex* make_nmg_vertex(double x, double y, double z, long index) { struct vertex *v; @@ -81,7 +82,7 @@ return v; } -void +HIDDEN void attach_face_g_plane(struct face *f) { struct face_g_plane *plane; @@ -99,7 +100,7 @@ /* builds an nmg model containing a single faceuse which represents the face * specified in points[] */ -struct model* +HIDDEN struct model* make_model_from_face(const double points[], int numPoints) { int i; @@ -158,7 +159,7 @@ * If match is found, returns the point number (starting at 0) of the match. * Otherwise returns -1. */ -int +HIDDEN int getPointReference( const double point[], const double points[], This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |