Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/ElmerGUI/netgen/libsrc/csg/csgparser.hpp
3206 views
1
#ifndef _CSGPARSER_HPP
2
#define _CSGPARSER_HPP
3
4
5
6
7
//namespace netgen
8
//{
9
enum TOKEN_TYPE
10
{
11
TOK_MINUS = '-', TOK_LP = '(', OK_RP = ')', TOK_LSP = '[', TOK_RSP = ']',
12
TOK_EQU = '=', TOK_COMMA = ',', TOK_SEMICOLON = ';',
13
TOK_NUM = 100, TOK_STRING, TOK_NAMED_SOLID, TOK_PRIMITIVE,
14
TOK_OR, TOK_AND, TOK_NOT,
15
TOK_SINGULAR, TOK_EDGE, TOK_POINT, TOK_FACE, TOK_IDENTIFY, TOK_CLOSESURFACES,
16
TOK_CLOSEEDGES, TOK_PERIODIC,
17
TOK_SOLID, TOK_RECO, TOK_TLO, TOK_CURVE2D, TOK_CURVE3D, TOK_BOUNDINGBOX,
18
TOK_BOUNDARYCONDITION, TOK_BOUNDARYCONDITIONNAME,
19
TOK_DEFINE, TOK_CONSTANT,
20
TOK_END };
21
22
struct kwstruct
23
{
24
TOKEN_TYPE kw;
25
const char * name;
26
};
27
28
enum PRIMITIVE_TYPE
29
{
30
TOK_SPHERE = 1, TOK_CYLINDER, TOK_PLANE, TOK_ELLIPTICCYLINDER,
31
TOK_ELLIPSOID, TOK_CONE,
32
TOK_ORTHOBRICK, TOK_POLYHEDRON,
33
TOK_TORUS,
34
TOK_TUBE, TOK_GENCYL, TOK_EXTRUSION, TOK_REVOLUTION,
35
36
TOK_TRANSLATE, TOK_MULTITRANSLATE, TOK_ROTATE, TOK_MULTIROTATE
37
};
38
39
struct primstruct
40
{
41
PRIMITIVE_TYPE kw;
42
const char * name;
43
};
44
45
46
class CSGScanner
47
{
48
TOKEN_TYPE token;
49
PRIMITIVE_TYPE prim_token;
50
double num_value;
51
string string_value;
52
53
int linenum;
54
istream * scanin;
55
56
public:
57
58
CSGScanner (istream & ascanin);
59
60
TOKEN_TYPE GetToken() const
61
{ return token; }
62
63
double GetNumValue() const
64
{ return num_value; }
65
66
const string & GetStringValue() const
67
{ return string_value; }
68
69
char GetCharValue() const
70
{ return string_value[0]; }
71
72
PRIMITIVE_TYPE GetPrimitiveToken() const
73
{ return prim_token; }
74
75
void ReadNext();
76
77
/*
78
CSGScanner & Parse (char ch);
79
CSGScanner & Parse (int & i);
80
CSGScanner & Parse (double & d);
81
CSGScanner & Parse (Point<3> & p);
82
CSGScanner & Parse (Vec<3> & p);
83
*/
84
void Error (const string & err);
85
};
86
87
88
89
CSGScanner & operator>> (CSGScanner & scan, char ch);
90
CSGScanner & operator>> (CSGScanner & scan, double & d);
91
CSGScanner & operator>> (CSGScanner & scan, int & i);
92
CSGScanner & operator>> (CSGScanner & scan, Point<3> & p);
93
CSGScanner & operator>> (CSGScanner & scan, Vec<3> & v);
94
95
96
97
//}
98
99
100
101
102
103
104
105
106
107
#endif // _CSGPARSER_HPP
108
109