Path: blob/devel/ElmerGUI/netgen/libsrc/csg/csgparser.hpp
3206 views
#ifndef _CSGPARSER_HPP1#define _CSGPARSER_HPP23456//namespace netgen7//{8enum TOKEN_TYPE9{10TOK_MINUS = '-', TOK_LP = '(', OK_RP = ')', TOK_LSP = '[', TOK_RSP = ']',11TOK_EQU = '=', TOK_COMMA = ',', TOK_SEMICOLON = ';',12TOK_NUM = 100, TOK_STRING, TOK_NAMED_SOLID, TOK_PRIMITIVE,13TOK_OR, TOK_AND, TOK_NOT,14TOK_SINGULAR, TOK_EDGE, TOK_POINT, TOK_FACE, TOK_IDENTIFY, TOK_CLOSESURFACES,15TOK_CLOSEEDGES, TOK_PERIODIC,16TOK_SOLID, TOK_RECO, TOK_TLO, TOK_CURVE2D, TOK_CURVE3D, TOK_BOUNDINGBOX,17TOK_BOUNDARYCONDITION, TOK_BOUNDARYCONDITIONNAME,18TOK_DEFINE, TOK_CONSTANT,19TOK_END };2021struct kwstruct22{23TOKEN_TYPE kw;24const char * name;25};2627enum PRIMITIVE_TYPE28{29TOK_SPHERE = 1, TOK_CYLINDER, TOK_PLANE, TOK_ELLIPTICCYLINDER,30TOK_ELLIPSOID, TOK_CONE,31TOK_ORTHOBRICK, TOK_POLYHEDRON,32TOK_TORUS,33TOK_TUBE, TOK_GENCYL, TOK_EXTRUSION, TOK_REVOLUTION,3435TOK_TRANSLATE, TOK_MULTITRANSLATE, TOK_ROTATE, TOK_MULTIROTATE36};3738struct primstruct39{40PRIMITIVE_TYPE kw;41const char * name;42};434445class CSGScanner46{47TOKEN_TYPE token;48PRIMITIVE_TYPE prim_token;49double num_value;50string string_value;5152int linenum;53istream * scanin;5455public:5657CSGScanner (istream & ascanin);5859TOKEN_TYPE GetToken() const60{ return token; }6162double GetNumValue() const63{ return num_value; }6465const string & GetStringValue() const66{ return string_value; }6768char GetCharValue() const69{ return string_value[0]; }7071PRIMITIVE_TYPE GetPrimitiveToken() const72{ return prim_token; }7374void ReadNext();7576/*77CSGScanner & Parse (char ch);78CSGScanner & Parse (int & i);79CSGScanner & Parse (double & d);80CSGScanner & Parse (Point<3> & p);81CSGScanner & Parse (Vec<3> & p);82*/83void Error (const string & err);84};85868788CSGScanner & operator>> (CSGScanner & scan, char ch);89CSGScanner & operator>> (CSGScanner & scan, double & d);90CSGScanner & operator>> (CSGScanner & scan, int & i);91CSGScanner & operator>> (CSGScanner & scan, Point<3> & p);92CSGScanner & operator>> (CSGScanner & scan, Vec<3> & v);93949596//}979899100101102103104105106#endif // _CSGPARSER_HPP107108109