Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
gmsh
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Larry Price
gmsh
Commits
46894a41
Commit
46894a41
authored
24 years ago
by
Christophe Geuzaine
Browse files
Options
Downloads
Patches
Plain Diff
nouvelle gestion des options
parent
21c83e02
No related branches found
No related tags found
No related merge requests found
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
Common/Context.cpp
+94
-113
94 additions, 113 deletions
Common/Context.cpp
Common/Context.h
+13
-9
13 additions, 9 deletions
Common/Context.h
Parser/Gmsh.l
+18
-9
18 additions, 9 deletions
Parser/Gmsh.l
Parser/Gmsh.y
+353
-205
353 additions, 205 deletions
Parser/Gmsh.y
with
478 additions
and
336 deletions
Common/Context.cpp
+
94
−
113
View file @
46894a41
/* $Id: Context.cpp,v 1.1
3
2000-12-06
18:28:30 remacl
e Exp $ */
/* $Id: Context.cpp,v 1.1
4
2000-12-06
22:09:53 geuzain
e Exp $ */
#include
"Gmsh.h"
#include
"Const.h"
...
...
@@ -37,6 +37,15 @@ extern StringXColor PrintOptions_Color[] ;
// STRING OPTIONS
StringXString
*
Get_StringOptionCategory
(
char
*
cat
){
if
(
!
strcmp
(
cat
,
"General"
))
return
GeneralOptions_String
;
else
if
(
!
strcmp
(
cat
,
"Geometry"
))
return
GeometryOptions_String
;
else
if
(
!
strcmp
(
cat
,
"Mesh"
))
return
MeshOptions_String
;
else
if
(
!
strcmp
(
cat
,
"PostProcessing"
))
return
PostProcessingOptions_String
;
else
if
(
!
strcmp
(
cat
,
"Print"
))
return
PrintOptions_String
;
else
return
NULL
;
}
void
Set_DefaultStringOptions
(
StringXString
s
[]){
int
i
=
0
;
while
(
s
[
i
].
str
){
...
...
@@ -45,32 +54,36 @@ void Set_DefaultStringOptions(StringXString s[]){
}
}
int
S
et_StringOption
(
char
*
str
,
StringXString
s
[]
,
char
*
val
){
char
**
G
et_StringOption
(
char
*
str
,
StringXString
s
[]){
int
i
=
0
;
while
((
s
[
i
].
str
!=
NULL
)
&&
(
strcmp
(
s
[
i
].
str
,
str
)))
i
++
;
if
(
!
s
[
i
].
str
)
return
0
;
else
{
*
s
[
i
].
ptr
=
val
;
return
1
;
}
return
NULL
;
else
return
s
[
i
].
ptr
;
}
void
Print_StringOptions
(
StringXString
s
[],
FILE
*
file
){
void
Print_StringOptions
(
StringXString
s
[],
char
*
prefix
,
FILE
*
file
){
int
i
=
0
;
while
(
s
[
i
].
str
){
fprintf
(
file
,
"
%s =
\"
%s
\"
;
\n
"
,
s
[
i
].
str
,
*
s
[
i
].
ptr
)
;
fprintf
(
file
,
"
%s
%s =
\"
%s
\"
;
\n
"
,
prefix
,
s
[
i
].
str
,
*
s
[
i
].
ptr
)
;
i
++
;
}
}
// NUMBER OPTIONS
StringXNumber
*
Get_NumberOptionCategory
(
char
*
cat
){
if
(
!
strcmp
(
cat
,
"General"
))
return
GeneralOptions_Number
;
else
if
(
!
strcmp
(
cat
,
"Geometry"
))
return
GeometryOptions_Number
;
else
if
(
!
strcmp
(
cat
,
"Mesh"
))
return
MeshOptions_Number
;
else
if
(
!
strcmp
(
cat
,
"PostProcessing"
))
return
PostProcessingOptions_Number
;
else
if
(
!
strcmp
(
cat
,
"Print"
))
return
PrintOptions_Number
;
else
return
NULL
;
}
void
Set_DefaultNumberOptions
(
StringXNumber
s
[]){
int
i
=
0
;
while
(
s
[
i
].
str
){
switch
(
s
[
i
].
type
){
case
GMSH_INT
:
*
(
int
*
)
s
[
i
].
ptr
=
(
int
)
s
[
i
].
def
;
break
;
...
...
@@ -82,32 +95,27 @@ void Set_DefaultNumberOptions(StringXNumber s[]){
}
}
int
S
et_NumberOption
(
char
*
str
,
StringXNumber
s
[],
double
val
){
void
*
G
et_NumberOption
(
char
*
str
,
StringXNumber
s
[],
int
*
type
){
int
i
=
0
;
while
((
s
[
i
].
str
!=
NULL
)
&&
(
strcmp
(
s
[
i
].
str
,
str
)))
i
++
;
if
(
!
s
[
i
].
str
)
return
0
;
return
NULL
;
else
{
switch
(
s
[
i
].
type
){
case
GMSH_INT
:
*
(
int
*
)
s
[
i
].
ptr
=
(
int
)
val
;
break
;
case
GMSH_LONG
:
*
(
long
*
)
s
[
i
].
ptr
=
(
long
)
val
;
break
;
case
GMSH_FLOAT
:
*
(
float
*
)
s
[
i
].
ptr
=
(
float
)
val
;
break
;
case
GMSH_DOUBLE
:
*
(
double
*
)
s
[
i
].
ptr
=
(
double
)
val
;
break
;
}
return
1
;
*
type
=
s
[
i
].
type
;
return
s
[
i
].
ptr
;
}
}
void
Print_NumberOptions
(
StringXNumber
s
[],
FILE
*
file
){
void
Print_NumberOptions
(
StringXNumber
s
[],
char
*
prefix
,
FILE
*
file
){
int
i
=
0
;
while
(
s
[
i
].
str
){
fprintf
(
file
,
"%s%s = "
,
prefix
,
s
[
i
].
str
);
switch
(
s
[
i
].
type
){
case
GMSH_INT
:
fprintf
(
file
,
"
%s = %d;
\n
"
,
s
[
i
].
str
,
*
(
int
*
)
s
[
i
].
ptr
);
break
;
case
GMSH_LONG
:
fprintf
(
file
,
"
%s = %ld;
\n
"
,
s
[
i
].
str
,
*
(
long
*
)
s
[
i
].
ptr
);
break
;
case
GMSH_FLOAT
:
fprintf
(
file
,
"
%s = %g;
\n
"
,
s
[
i
].
str
,
*
(
float
*
)
s
[
i
].
ptr
);
break
;
case
GMSH_DOUBLE
:
fprintf
(
file
,
"
%s = %g;
\n
"
,
s
[
i
].
str
,
*
(
double
*
)
s
[
i
].
ptr
);
break
;
case
GMSH_INT
:
fprintf
(
file
,
"
%d;
\n
"
,
*
(
int
*
)
s
[
i
].
ptr
);
break
;
case
GMSH_LONG
:
fprintf
(
file
,
"
%ld;
\n
"
,
*
(
long
*
)
s
[
i
].
ptr
);
break
;
case
GMSH_FLOAT
:
fprintf
(
file
,
"
%g;
\n
"
,
*
(
float
*
)
s
[
i
].
ptr
);
break
;
case
GMSH_DOUBLE
:
fprintf
(
file
,
"
%g;
\n
"
,
*
(
double
*
)
s
[
i
].
ptr
);
break
;
}
i
++
;
}
...
...
@@ -116,6 +124,15 @@ void Print_NumberOptions(StringXNumber s[], FILE *file){
// ARRAY OPTIONS
StringXArray
*
Get_ArrayOptionCategory
(
char
*
cat
){
if
(
!
strcmp
(
cat
,
"General"
))
return
GeneralOptions_Array
;
else
if
(
!
strcmp
(
cat
,
"Geometry"
))
return
GeometryOptions_Array
;
else
if
(
!
strcmp
(
cat
,
"Mesh"
))
return
MeshOptions_Array
;
else
if
(
!
strcmp
(
cat
,
"PostProcessing"
))
return
PostProcessingOptions_Array
;
else
if
(
!
strcmp
(
cat
,
"Print"
))
return
PrintOptions_Array
;
else
return
NULL
;
}
void
Set_DefaultArrayOptions
(
StringXArray
s
[]){
int
i
=
0
;
...
...
@@ -150,48 +167,21 @@ void Set_DefaultArrayOptions(StringXArray s[]){
}
}
int
S
et_ArrayOption
(
char
*
str
,
StringXArray
s
[],
double
*
val
){
void
*
G
et_ArrayOption
(
char
*
str
,
StringXArray
s
[],
int
*
type
){
int
i
=
0
;
while
((
s
[
i
].
str
!=
NULL
)
&&
(
strcmp
(
s
[
i
].
str
,
str
)))
i
++
;
if
(
!
s
[
i
].
str
)
return
0
;
return
NULL
;
else
{
switch
(
s
[
i
].
type
){
case
GMSH_INT
:
((
int
*
)
s
[
i
].
ptr
)[
0
]
=
(
int
)
val
[
0
];
((
int
*
)
s
[
i
].
ptr
)[
1
]
=
(
int
)
val
[
1
];
((
int
*
)
s
[
i
].
ptr
)[
2
]
=
(
int
)
val
[
2
];
((
int
*
)
s
[
i
].
ptr
)[
3
]
=
(
int
)
val
[
3
];
break
;
case
GMSH_LONG
:
((
long
*
)
s
[
i
].
ptr
)[
0
]
=
(
long
)
val
[
0
];
((
long
*
)
s
[
i
].
ptr
)[
1
]
=
(
long
)
val
[
1
];
((
long
*
)
s
[
i
].
ptr
)[
2
]
=
(
long
)
val
[
2
];
((
long
*
)
s
[
i
].
ptr
)[
3
]
=
(
long
)
val
[
3
];
break
;
case
GMSH_FLOAT
:
((
float
*
)
s
[
i
].
ptr
)[
0
]
=
(
float
)
val
[
0
];
((
float
*
)
s
[
i
].
ptr
)[
1
]
=
(
float
)
val
[
1
];
((
float
*
)
s
[
i
].
ptr
)[
2
]
=
(
float
)
val
[
2
];
((
float
*
)
s
[
i
].
ptr
)[
3
]
=
(
float
)
val
[
3
];
break
;
case
GMSH_DOUBLE
:
((
double
*
)
s
[
i
].
ptr
)[
0
]
=
(
double
)
val
[
0
];
((
double
*
)
s
[
i
].
ptr
)[
1
]
=
(
double
)
val
[
1
];
((
double
*
)
s
[
i
].
ptr
)[
2
]
=
(
double
)
val
[
2
];
((
double
*
)
s
[
i
].
ptr
)[
3
]
=
(
double
)
val
[
3
];
break
;
}
return
1
;
*
type
=
s
[
i
].
type
;
return
s
[
i
].
ptr
;
}
}
void
Print_ArrayOptions
(
StringXArray
s
[],
FILE
*
file
){
void
Print_ArrayOptions
(
StringXArray
s
[],
char
*
prefix
,
FILE
*
file
){
int
i
=
0
;
while
(
s
[
i
].
str
){
fprintf
(
file
,
"
%s = {"
,
s
[
i
].
str
);
fprintf
(
file
,
"
%s
%s = {"
,
prefix
,
s
[
i
].
str
);
switch
(
s
[
i
].
type
){
case
GMSH_INT
:
fprintf
(
file
,
"%d,%d,%d,%d};
\n
"
,
...
...
@@ -221,9 +211,17 @@ void Print_ArrayOptions(StringXArray s[], FILE *file){
// COLORS
StringXColor
*
Get_ColorOptionCategory
(
char
*
cat
){
if
(
!
strcmp
(
cat
,
"General"
))
return
GeneralOptions_Color
;
else
if
(
!
strcmp
(
cat
,
"Geometry"
))
return
GeometryOptions_Color
;
else
if
(
!
strcmp
(
cat
,
"Mesh"
))
return
MeshOptions_Color
;
else
if
(
!
strcmp
(
cat
,
"PostProcessing"
))
return
PostProcessingOptions_Color
;
else
if
(
!
strcmp
(
cat
,
"Print"
))
return
PrintOptions_Color
;
else
return
NULL
;
}
void
Set_DefaultColorOptions
(
StringXColor
s
[],
int
num
){
int
i
=
0
;
while
(
s
[
i
].
str
){
switch
(
num
){
case
0
:
*
s
[
i
].
ptr
=
s
[
i
].
def1
;
break
;
...
...
@@ -234,31 +232,25 @@ void Set_DefaultColorOptions(StringXColor s[], int num){
}
}
int
S
et_ColorOption
(
char
*
str
,
StringXColor
s
[]
,
unsigned
int
val
)
{
unsigned
int
*
G
et_ColorOption
(
char
*
str
,
StringXColor
s
[])
{
int
i
=
0
;
while
((
s
[
i
].
str
!=
NULL
)
&&
(
strcmp
(
s
[
i
].
str
,
str
)))
i
++
;
if
(
!
s
[
i
].
str
)
return
0
;
else
{
*
s
[
i
].
ptr
=
val
;
return
1
;
}
return
NULL
;
else
return
s
[
i
].
ptr
;
}
void
Print_ColorOptions
(
StringXColor
s
[],
FILE
*
file
){
void
Print_ColorOptions
(
StringXColor
s
[],
char
*
prefix
,
FILE
*
file
){
int
i
=
0
;
fprintf
(
file
,
" Color {
\n
"
);
while
(
s
[
i
].
str
){
fprintf
(
file
,
"
%s = {%d,%d,%d};
\n
"
,
s
[
i
].
str
,
fprintf
(
file
,
"
%sColor.
%s = {%d,%d,%d};
\n
"
,
prefix
,
s
[
i
].
str
,
UNPACK_RED
(
*
s
[
i
].
ptr
),
UNPACK_GREEN
(
*
s
[
i
].
ptr
),
UNPACK_BLUE
(
*
s
[
i
].
ptr
));
i
++
;
}
fprintf
(
file
,
" }
\n
"
);
}
int
Get_ColorForString
(
StringX4Int
SX4I
[],
int
alpha
,
...
...
@@ -350,43 +342,32 @@ void Init_Context(void){
void
Print_Context
(
FILE
*
file
){
fprintf
(
file
,
"Options{
\n
"
);
fprintf
(
file
,
" General{
\n
"
);
Print_StringOptions
(
GeneralOptions_String
,
file
);
Print_NumberOptions
(
GeneralOptions_Number
,
file
);
Print_ArrayOptions
(
GeneralOptions_Array
,
file
);
Print_ColorOptions
(
GeneralOptions_Color
,
file
);
fprintf
(
file
,
" }
\n
"
);
fprintf
(
file
,
" Geometry{
\n
"
);
Print_StringOptions
(
GeometryOptions_String
,
file
);
Print_NumberOptions
(
GeometryOptions_Number
,
file
);
Print_ArrayOptions
(
GeometryOptions_Array
,
file
);
Print_ColorOptions
(
GeometryOptions_Color
,
file
);
fprintf
(
file
,
" }
\n
"
);
fprintf
(
file
,
" Mesh{
\n
"
);
Print_StringOptions
(
MeshOptions_String
,
file
);
Print_NumberOptions
(
MeshOptions_Number
,
file
);
Print_ArrayOptions
(
MeshOptions_Array
,
file
);
Print_ColorOptions
(
MeshOptions_Color
,
file
);
fprintf
(
file
,
" }
\n
"
);
fprintf
(
file
,
" PostProcessing{
\n
"
);
Print_StringOptions
(
PostProcessingOptions_String
,
file
);
Print_NumberOptions
(
PostProcessingOptions_Number
,
file
);
Print_ArrayOptions
(
PostProcessingOptions_Array
,
file
);
Print_ColorOptions
(
PostProcessingOptions_Color
,
file
);
fprintf
(
file
,
" }
\n
"
);
fprintf
(
file
,
" Print{
\n
"
);
Print_StringOptions
(
PrintOptions_String
,
file
);
Print_NumberOptions
(
PrintOptions_Number
,
file
);
Print_ArrayOptions
(
PrintOptions_Array
,
file
);
Print_ColorOptions
(
PrintOptions_Color
,
file
);
fprintf
(
file
,
" }
\n
"
);
fprintf
(
file
,
"Options{
\n\n
"
);
Print_StringOptions
(
GeneralOptions_String
,
" General."
,
file
);
Print_NumberOptions
(
GeneralOptions_Number
,
" General."
,
file
);
Print_ArrayOptions
(
GeneralOptions_Array
,
" General."
,
file
);
Print_ColorOptions
(
GeneralOptions_Color
,
" General."
,
file
);
fprintf
(
file
,
"
\n
"
);
Print_StringOptions
(
GeometryOptions_String
,
" Geometry."
,
file
);
Print_NumberOptions
(
GeometryOptions_Number
,
" Geometry."
,
file
);
Print_ArrayOptions
(
GeometryOptions_Array
,
" Geometry."
,
file
);
Print_ColorOptions
(
GeometryOptions_Color
,
" Geometry."
,
file
);
fprintf
(
file
,
"
\n
"
);
Print_StringOptions
(
MeshOptions_String
,
" Mesh."
,
file
);
Print_NumberOptions
(
MeshOptions_Number
,
" Mesh."
,
file
);
Print_ArrayOptions
(
MeshOptions_Array
,
" Mesh."
,
file
);
Print_ColorOptions
(
MeshOptions_Color
,
" Mesh."
,
file
);
fprintf
(
file
,
"
\n
"
);
Print_StringOptions
(
PostProcessingOptions_String
,
" PostProcessing."
,
file
);
Print_NumberOptions
(
PostProcessingOptions_Number
,
" PostProcessing."
,
file
);
Print_ArrayOptions
(
PostProcessingOptions_Array
,
" PostProcessing."
,
file
);
Print_ColorOptions
(
PostProcessingOptions_Color
,
" PostProcessing."
,
file
);
fprintf
(
file
,
"
\n
"
);
Print_StringOptions
(
PrintOptions_String
,
" Print."
,
file
);
Print_NumberOptions
(
PrintOptions_Number
,
" Print."
,
file
);
Print_ArrayOptions
(
PrintOptions_Array
,
" Print."
,
file
);
Print_ColorOptions
(
PrintOptions_Color
,
" Print."
,
file
);
fprintf
(
file
,
"
\n
"
);
fprintf
(
file
,
"}
\n
"
);
}
...
...
This diff is collapsed.
Click to expand it.
Common/Context.h
+
13
−
9
View file @
46894a41
/* $Id: Context.h,v 1.1
5
2000-12-06
18:28:30 remacl
e Exp $ */
/* $Id: Context.h,v 1.1
6
2000-12-06
22:09:53 geuzain
e Exp $ */
#ifndef _CONTEXT_H_
#define _CONTEXT_H_
...
...
@@ -180,21 +180,25 @@ typedef struct {
unsigned
int
def1
,
def2
,
def3
;
}
StringXColor
;
StringXString
*
Get_StringOptionCategory
(
char
*
cat
);
StringXNumber
*
Get_NumberOptionCategory
(
char
*
cat
);
StringXArray
*
Get_ArrayOptionCategory
(
char
*
cat
);
StringXColor
*
Get_ColorOptionCategory
(
char
*
cat
);
void
Set_DefaultStringOptions
(
StringXString
s
[]);
void
Set_DefaultNumberOptions
(
StringXNumber
s
[]);
void
Set_DefaultArrayOptions
(
StringXArray
s
[]);
void
Set_DefaultColorOptions
(
StringXColor
s
[],
int
num
);
int
S
et_StringOption
(
char
*
str
,
StringXString
s
[]
,
char
*
val
);
int
S
et_NumberOption
(
char
*
str
,
StringXNumber
s
[],
double
val
);
int
S
et_ArrayOption
(
char
*
str
,
StringXArray
s
[],
double
*
val
);
int
S
et_ColorOption
(
char
*
str
,
StringXColor
s
[]
,
unsigned
int
val
);
char
**
G
et_StringOption
(
char
*
str
,
StringXString
s
[]);
void
*
G
et_NumberOption
(
char
*
str
,
StringXNumber
s
[],
int
*
type
);
void
*
G
et_ArrayOption
(
char
*
str
,
StringXArray
s
[],
int
*
type
);
unsigned
int
*
G
et_ColorOption
(
char
*
str
,
StringXColor
s
[]);
void
Print_StringOptions
(
StringXString
s
[],
FILE
*
file
);
void
Print_NumberOptions
(
StringXNumber
s
[],
FILE
*
file
);
void
Print_ArrayOptions
(
StringXArray
s
[],
FILE
*
file
);
void
Print_ColorOptions
(
StringXArray
s
[],
FILE
*
file
);
void
Print_StringOptions
(
StringXString
s
[],
char
*
prefix
,
FILE
*
file
);
void
Print_NumberOptions
(
StringXNumber
s
[],
char
*
prefix
,
FILE
*
file
);
void
Print_ArrayOptions
(
StringXArray
s
[],
char
*
prefix
,
FILE
*
file
);
void
Print_ColorOptions
(
StringXArray
s
[],
char
*
prefix
,
FILE
*
file
);
void
Init_Colors
(
int
num
);
void
Init_Context
(
void
);
...
...
This diff is collapsed.
Click to expand it.
Parser/Gmsh.l
+
18
−
9
View file @
46894a41
%{ /* $Id: Gmsh.l,v 1.
8
2000-12-06
18:28:30 remacl
e Exp $ */
%{ /* $Id: Gmsh.l,v 1.
9
2000-12-06
22:09:53 geuzain
e Exp $ */
#include <stdio.h>
#include <stdlib.h>
...
...
@@ -69,8 +69,22 @@ stepid {dieze}({digit})*
"newreg" {yylval.d = NEWREG(); return tDOUBLE;}
"newp" {yylval.d = NEWPOINT(); return tDOUBLE;}
"=" return tAFFECT;
"+=" return tAFFECTPLUS ;
"-=" return tAFFECTMINUS ;
"*=" return tAFFECTTIMES ;
"/=" return tAFFECTDIVIDE ;
"..." return tDOTS;
":" return tDOTS ;
"/\\" return tCROSSPRODUCT ;
"||" return tOR ;
"&&" return tAND ;
"++" return tPLUSPLUS ;
"--" return tMINUSMINUS ;
"==" return tEQUAL ;
"!=" return tNOTEQUAL ;
"~=" return tAPPROXEQUAL ;
"<=" return tLESSOREQUAL ;
">=" return tGREATEROREQUAL ;
ACos return tAcos ;
ArcCos return tAcos ;
...
...
@@ -80,7 +94,6 @@ Atan return tAtan ;
ArcTan return tAtan ;
Atan2 return tAtan2 ;
ArcTan2 return tAtan2 ;
Association return tAssociation;
Attractor return tAttractor;
Bump return tBump;
...
...
@@ -111,9 +124,6 @@ Fabs return tFabs ;
Floor return tFloor ;
Fmod return tFmod ;
General return tGeneral;
Geometry return tGeometry;
Hypot return tHypot ;
Include return tInclude;
...
...
@@ -127,7 +137,6 @@ Log return tLog ;
Log10 return tLog10 ;
Layers return tLayers;
Mesh return tMesh;
Modulo return tModulo ;
Nurbs return tNurbs;
...
...
@@ -143,8 +152,7 @@ Point return tPoint;
Power return tProgression;
Progression return tProgression;
Parametric return tParametric;
PostProcessing return tPostProcessing;
Print return tPrint;
Printf return tPrintf ;
Recombine return tRecombine;
Rotate return tRotate;
...
...
@@ -157,6 +165,7 @@ Save return tPhysical;
Spline return tSpline;
Surface return tSurface;
Symmetry return tSymmetry;
Script return tScript;
Transfinite return tTransfinite;
Translate return tTranslate;
...
...
This diff is collapsed.
Click to expand it.
Parser/Gmsh.y
+
353
−
205
View file @
46894a41
%{ /* $Id: Gmsh.y,v 1.1
6
2000-12-06
18:28:30 remacl
e Exp $ */
%{ /* $Id: Gmsh.y,v 1.1
7
2000-12-06
22:09:53 geuzain
e Exp $ */
#include <stdarg.h>
...
...
@@ -40,17 +40,26 @@ static Shape TheShape;
static int i,j,k,flag,RecursionLevel=0,ImbricatedLoop = 0;
static double d;
static ExtrudeParams extr;
static StringXColor *ColorField ;
static List_T *ListOfDouble_L,*ListOfDouble2_L;
static List_T *ListOfListOfDouble_L;
static void *pNumOpt, *pArrOpt;
static char **pStrOpt;
static unsigned int *pColOpt;
static StringXString *pStrCat;
static StringXNumber *pNumCat;
static StringXArray *pArrCat;
static StringXColor *pColCat;
void yyerror (char *s);
void vyyerror (char *fmt, ...);
%}
%union {
char *c;
int i;
unsigned int u;
double d;
double v[5];
Shape s;
...
...
@@ -63,11 +72,11 @@ void vyyerror (char *fmt, ...);
%token tEND tAFFECT tDOTS tPi
%token tExp tLog tLog10 tSqrt tSin tAsin tCos tAcos tTan
%token tAtan tAtan2 tSinh tCosh tTanh tFabs tFloor tCeil
%token tFmod tModulo tHypot
%token tFmod tModulo tHypot
tPrintf
%token tPoint tCircle tEllipsis tLine tSurface tSpline tVolume
%token tCharacteristic tLength tParametric tElliptic
%token tPlane tRuled tTransfinite tComplex tPhysical
%token tUsing
tPower
tBump tProgression
tAssociation
%token tUsing tBump tProgression
%token tRotate tTranslate tSymmetry tDilate tExtrude tDuplicata
%token tLoop tInclude tRecombine tDelete tCoherence
%token tView tOffset tAttractor tLayers
...
...
@@ -77,7 +86,6 @@ void vyyerror (char *fmt, ...);
%token tScalarPoint tVectorPoint tTensorPoint
%token tBSpline tNurbs tOrder tWith tBounds tKnots
%token tColor tOptions tFor tEndFor tScript tExit tMerge
%token tGeneral tGeometry tMesh tPostProcessing tPrint
%token tB_SPLINE_SURFACE_WITH_KNOTS
%token tB_SPLINE_CURVE_WITH_KNOTS
...
...
@@ -94,17 +102,31 @@ void vyyerror (char *fmt, ...);
%token tSolid tEndSolid tVertex tFacet tNormal tOuter tLoopSTL tEndLoop tEndFacet
%type <d> FExpr FExpr_Single
%type <v> VExpr
RGBAExpr
%type <v> VExpr
VExpr_Single
%type <l> ListOfShapes Duplicata Transform MultipleShape
%type <l> ListOfStrings ListOfDouble ListOfListOfDouble
%type <s> Shape
%type <i> BoolExpr
%left '<' '>'
%type <u> Color
/* ------------------------------------------------------------------ */
/* Operators (with ascending priority) : cf. C language */
/* */
/* Notes: - evaluation order (%left, %right) */
/* - UNARYPREC is a dummy terminal to resolve ambiguous cases */
/* for + and - (which exist in both unary and binary form) */
/* ------------------------------------------------------------------ */
%left tAFFECT tAFFECTPLUS tAFFECTMINUS tAFFECTTIMES tAFFECTDIVIDE
%right '?' tDOTS
%left tAND tOR
%left tNOTEQUAL tEQUAL tAPPROXEQUAL
%left '<' '>' tLESSOREQUAL tGREATEROREQUAL
%left '+' '-'
%left '*' '/' '%'
%left UMINUS
%left tCROSSPRODUCT
%left UNARYPREC '!'
%right '^'
%left tPLUSPLUS tMINUSMINUS
%start All
...
...
@@ -341,6 +363,7 @@ GeomFormatList :
GeomFormat :
View { return 1; }
| Printf { return 1; }
| Affectation { return 1; }
| Shape { return 1; }
| Transform { return 1; }
...
...
@@ -354,9 +377,17 @@ GeomFormat :
/* | Script { return 1; }*/
| Command { return 1; }
| tOptions '{' Options '}' { return 1; }
| tScript '{' Scripts '}' { return 1; }
| error tEND { yyerrok; return 1;}
;
Printf :
tPrintf '(' tBIGSTR ',' FExpr ')' tEND
{
Msg(PARSER_INFO, $3, $5);
}
;
/* ------------
V I E W
------------ */
...
...
@@ -1429,186 +1460,209 @@ Options :
;
Option :
tGeneral '{' GeneralOptions '}'
| tGeometry '{' GeometryOptions '}'
| tMesh '{' MeshOptions '}'
| tPostProcessing '{' PostProcessingOptions '}'
| tPrint '{' PrintOptions '}'
;
GeneralOptions :
/* empty */
| GeneralOptions GeneralOption
;
GeneralOption :
tSTRING tAFFECT tBIGSTR tEND
Printf
{
if(!Set_StringOption($1, GeneralOptions_String, $3))
vyyerror("Unknown General Option (String) '%s'", $1);
}
| tSTRING tAFFECT
FExpr
tEND
| tSTRING
'.' tSTRING
tAFFECT
tBIGSTR
tEND
{
if(!Set_NumberOption($1, GeneralOptions_Number, $3))
vyyerror("Unknown General Option (Number) '%s'", $1);
if(!(pStrCat = Get_StringOptionCategory($1)))
vyyerror("Unknown String Option Class '%s'", $1);
else{
if(!(pStrOpt = Get_StringOption($3, pStrCat)))
vyyerror("Unknown String Option '%s.%s'", $1, $3);
else{
*pStrOpt = $5 ;
}
| tSTRING tAFFECT VExpr tEND
{ if(!Set_ArrayOption($1, GeneralOptions_Array, $3))
vyyerror("Unknown General Option (Array) '%s'", $1);
}
| tColor
{ ColorField = GeneralOptions_Color; }
'{' ColorAffects '}'
;
GeometryOptions :
/* empty */
| GeometryOptions GeometryOption
;
GeometryOption :
tSTRING tAFFECT tBIGSTR tEND
{
if(!Set_StringOption($1, GeometryOptions_String, $3))
vyyerror("Unknown Geometry Option (String) '%s'", $1);
}
| tSTRING tAFFECT FExpr tEND
| tSTRING
'.' tSTRING
tAFFECT FExpr tEND
{
if(!Set_NumberOption($1, GeometryOptions_Number, $3))
vyyerror("Unknown Geometry Option (Number) '%s'", $1);
if(!(pNumCat = Get_NumberOptionCategory($1)))
vyyerror("Unknown Numeric Option Class '%s'", $1);
else{
if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i)))
vyyerror("Unknown Numeric Option '%s.%s'", $1, $3);
else{
switch(i){
case GMSH_DOUBLE : *(double*)pNumOpt = $5 ; break ;
case GMSH_FLOAT : *(float*)pNumOpt = (float)$5 ; break ;
case GMSH_LONG : *(long*)pNumOpt = (long)$5 ; break ;
case GMSH_INT : *(int*)pNumOpt = (int)$5 ; break ;
}
| tSTRING tAFFECT VExpr tEND
{
if(!Set_ArrayOption($1, GeometryOptions_Array, $3))
vyyerror("Unknown Geometry Option (Array) '%s'", $1);
}
| tColor
{ ColorField = GeometryOptions_Color; }
'{' ColorAffects '}'
;
MeshOptions :
/* empty */
| MeshOptions MeshOption
;
MeshOption :
tSTRING tAFFECT tBIGSTR tEND
{
if(!Set_StringOption($1, MeshOptions_String, $3))
vyyerror("Unknown Mesh Option (String) '%s'", $1);
}
| tSTRING tAFFECT FExpr tEND
{
if(!Set_NumberOption($1, MeshOptions_Number, $3))
vyyerror("Unknown Mesh Option (Number) '%s'", $1);
}
| tSTRING tAFFECT
V
Expr tEND
| tSTRING
'.' tSTRING
tAFFECT
PLUS F
Expr tEND
{
if(!Set_ArrayOption($1, MeshOptions_Array, $3))
vyyerror("Unknown Mesh Option (Array) '%s'", $1);
if(!(pNumCat = Get_NumberOptionCategory($1)))
vyyerror("Unknown Numeric Option Class '%s'", $1);
else{
if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i)))
vyyerror("Unknown Numeric Option '%s.%s'", $1, $3);
else{
switch(i){
case GMSH_DOUBLE : *(double*)pNumOpt += $5 ; break ;
case GMSH_FLOAT : *(float*)pNumOpt += (float)$5 ; break ;
case GMSH_LONG : *(long*)pNumOpt += (long)$5 ; break ;
case GMSH_INT : *(int*)pNumOpt += (int)$5 ; break ;
}
| tColor
{ ColorField = MeshOptions_Color; }
'{' ColorAffects '}'
;
PostProcessingOptions :
/* empty */
| PostProcessingOptions PostProcessingOption
;
PostProcessingOption :
tSTRING tAFFECT tBIGSTR tEND
}
}
}
| tSTRING '.' tSTRING tAFFECTMINUS FExpr tEND
{
if(!Set_StringOption($1, PostProcessingOptions_String, $3))
vyyerror("Unknown PostProcessing Option (String) '%s'", $1);
if(!(pNumCat = Get_NumberOptionCategory($1)))
vyyerror("Unknown Numeric Option Class '%s'", $1);
else{
if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i)))
vyyerror("Unknown Numeric Option '%s.%s'", $1, $3);
else{
switch(i){
case GMSH_DOUBLE : *(double*)pNumOpt -= $5 ; break ;
case GMSH_FLOAT : *(float*)pNumOpt -= (float)$5 ; break ;
case GMSH_LONG : *(long*)pNumOpt -= (long)$5 ; break ;
case GMSH_INT : *(int*)pNumOpt -= (int)$5 ; break ;
}
}
| tSTRING tAFFECT FExpr tEND
}
}
| tSTRING '.' tSTRING tAFFECTTIMES FExpr tEND
{
if(!Set_NumberOption($1, PostProcessingOptions_Number, $3))
vyyerror("Unknown PostProcessing Option (Number) '%s'", $1);
if(!(pNumCat = Get_NumberOptionCategory($1)))
vyyerror("Unknown Numeric Option Class '%s'", $1);
else{
if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i)))
vyyerror("Unknown Numeric Option '%s.%s'", $1, $3);
else{
switch(i){
case GMSH_DOUBLE : *(double*)pNumOpt *= $5 ; break ;
case GMSH_FLOAT : *(float*)pNumOpt *= (float)$5 ; break ;
case GMSH_LONG : *(long*)pNumOpt *= (long)$5 ; break ;
case GMSH_INT : *(int*)pNumOpt *= (int)$5 ; break ;
}
}
| tSTRING tAFFECT VExpr tEND
}
}
| tSTRING '.' tSTRING tAFFECTDIVIDE FExpr tEND
{
if(!Set_ArrayOption($1, PostProcessingOptions_Array, $3))
vyyerror("Unknown PostProcessing (Array) Option '%s'", $1);
if(!(pNumCat = Get_NumberOptionCategory($1)))
vyyerror("Unknown Numeric Option Class '%s'", $1);
else{
if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i)))
vyyerror("Unknown Numeric Option '%s.%s'", $1, $3);
else{
switch(i){
case GMSH_DOUBLE : *(double*)pNumOpt /= $5 ; break ;
case GMSH_FLOAT : *(float*)pNumOpt /= (float)$5 ; break ;
case GMSH_LONG : *(long*)pNumOpt /= (long)$5 ; break ;
case GMSH_INT : *(int*)pNumOpt /= (int)$5 ; break ;
}
| tColor
{ ColorField = PostProcessingOptions_Color; }
'{' ColorAffects '}'
;
PrintOptions :
/* empty */
| PrintOptions PrintOption
;
PrintOption :
tSTRING tAFFECT tBIGSTR tEND
}
}
}
| tSTRING '.' tSTRING tPLUSPLUS tEND
{
if(!Set_StringOption($1, PrintOptions_String, $3))
vyyerror("Unknown Print Option (String) '%s'", $1);
if(!(pNumCat = Get_NumberOptionCategory($1)))
vyyerror("Unknown Numeric Option Class '%s'", $1);
else{
if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i)))
vyyerror("Unknown Numeric Option '%s.%s'", $1, $3);
else{
switch(i){
case GMSH_DOUBLE : *(double*)pNumOpt += 1. ; break ;
case GMSH_FLOAT : *(float*)pNumOpt += 1. ; break ;
case GMSH_LONG : *(long*)pNumOpt += 1 ; break ;
case GMSH_INT : *(int*)pNumOpt += 1 ; break ;
}
| tSTRING tAFFECT FExpr tEND
}
}
}
| tSTRING '.' tSTRING tMINUSMINUS tEND
{
if(!Set_NumberOption($1, PrintOptions_Number, $3))
vyyerror("Unknown Print Option (Number) '%s'", $1);
if(!(pNumCat = Get_NumberOptionCategory($1)))
vyyerror("Unknown Numeric Option Class '%s'", $1);
else{
if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i)))
vyyerror("Unknown Numeric Option '%s.%s'", $1, $3);
else{
switch(i){
case GMSH_DOUBLE : *(double*)pNumOpt -= 1. ; break ;
case GMSH_FLOAT : *(float*)pNumOpt -= 1. ; break ;
case GMSH_LONG : *(long*)pNumOpt -= 1 ; break ;
case GMSH_INT : *(int*)pNumOpt -= 1 ; break ;
}
| tSTRING tAFFECT VExpr tEND
}
}
}
| tSTRING '.' tSTRING tAFFECT VExpr tEND
{
if(!Set_ArrayOption($1, PrintOptions_Array, $3))
vyyerror("Unknown Print Option (Array) '%s'", $1);
if(!(pArrCat = Get_ArrayOptionCategory($1)))
vyyerror("Unknown Array Option Class '%s'", $1);
else{
if(!(pArrOpt = Get_ArrayOption($3, pArrCat, &i)))
vyyerror("Unknown Array Option '%s.%s'", $1, $3);
else{
switch(i){
case GMSH_DOUBLE :
((double*)pNumOpt)[0] = $5[0] ;
((double*)pNumOpt)[1] = $5[1] ;
((double*)pNumOpt)[2] = $5[2] ;
((double*)pNumOpt)[3] = $5[3] ;
break ;
case GMSH_FLOAT :
((float*)pNumOpt)[0] = (float)$5[0] ;
((float*)pNumOpt)[1] = (float)$5[1] ;
((float*)pNumOpt)[2] = (float)$5[2] ;
((float*)pNumOpt)[3] = (float)$5[3] ;
break ;
case GMSH_LONG :
((long*)pNumOpt)[0] = (long)$5[0] ;
((long*)pNumOpt)[1] = (long)$5[1] ;
((long*)pNumOpt)[2] = (long)$5[2] ;
((long*)pNumOpt)[3] = (long)$5[3] ;
break ;
case GMSH_INT :
((int*)pNumOpt)[0] = (int)$5[0] ;
((int*)pNumOpt)[1] = (int)$5[1] ;
((int*)pNumOpt)[2] = (int)$5[2] ;
((int*)pNumOpt)[3] = (int)$5[3] ;
break ;
}
}
}
}
| tSTRING '.' tColor '.' tSTRING tAFFECT Color tEND
{
if(!(pColCat = Get_ColorOptionCategory($1)))
vyyerror("Unknown Color Option Class '%s'", $1);
else{
if(!(pColOpt = Get_ColorOption($5, pColCat)))
vyyerror("Unknown Color Option '%s.%s'", $1, $5);
else{
*pColOpt = $7 ;
}
}
}
| tColor
{ ColorField = PrintOptions_Color; }
'{' ColorAffects '}'
;
ColorAffects :
/* ---------------
S C R I P T S
--------------- */
Scripts :
/* empty */
|
ColorAffect ColorAffects
|
Scripts Script
;
ColorAffect :
tSTRING tAFFECT tSTRING tEND
{
i = Get_ColorForString(ColorString, -1, $3, &flag);
if(flag) vyyerror("Unknown Color '%s'", $3);
if(!Set_ColorOption($1, ColorField, i))
vyyerror("Unknown Color Field '%s'", $1);
}
| tSTRING tAFFECT '{' tSTRING ',' FExpr '}' tEND
{
i = Get_ColorForString(ColorString, (int)$6, $4, &flag);
if(flag) vyyerror("Unknown Color '%s'", $4);
if(!Set_ColorOption($1, ColorField, i))
vyyerror("Unknown Color Field '%s'", $1);
}
| tSTRING tAFFECT RGBAExpr tEND
{
if(!Set_ColorOption($1, ColorField,
PACK_COLOR((int)$3[0], (int)$3[1], (int)$3[2], (int)$3[3])))
vyyerror("Unknown Color Field '%s'", $1);
}
Script :
Option
/*
| Action
| Loop
| Test
*/
;
RGBAExpr :
'{' FExpr ',' FExpr ',' FExpr ',' FExpr '}'
{
$$[0]=$2;
$$[1]=$4;
$$[2]=$6;
$$[3]=$8;
}
| '{' FExpr ',' FExpr ',' FExpr '}'
{
$$[0]=$2;
$$[1]=$4;
$$[2]=$6;
$$[3]=255.;
}
;
/* ---------------
G E N E R A L
...
...
@@ -1626,13 +1680,24 @@ BoolExpr :
FExpr :
FExpr_Single { $$ = $1; }
| '(' FExpr ')' { $$ = $2 ; }
| '-' FExpr %prec UNARYPREC { $$ = -$2 ; }
| '+' FExpr %prec UNARYPREC { $$ = $2; }
| '!' FExpr { $$ = !$2 ; }
| FExpr '-' FExpr { $$ = $1 - $3 ; }
| FExpr '+' FExpr { $$ = $1 + $3 ; }
| FExpr '*' FExpr { $$ = $1 * $3 ; }
| FExpr '/' FExpr { $$ = $1 / $3 ; }
| FExpr '%' FExpr { $$ = (int)$1 % (int)$3 ; }
| FExpr '^' FExpr { $$ = pow($1,$3) ; }
| '-' FExpr %prec UMINUS { $$ = - $2; }
| '+' FExpr %prec UMINUS { $$ = $2; }
| FExpr '<' FExpr { $$ = $1 < $3 ; }
| FExpr '>' FExpr { $$ = $1 > $3 ; }
| FExpr tLESSOREQUAL FExpr { $$ = $1 <= $3 ; }
| FExpr tGREATEROREQUAL FExpr { $$ = $1 >= $3 ; }
| FExpr tEQUAL FExpr { $$ = $1 == $3 ; }
| FExpr tNOTEQUAL FExpr { $$ = $1 != $3 ; }
| FExpr tAND FExpr { $$ = $1 && $3 ; }
| FExpr tOR FExpr { $$ = $1 || $3 ; }
| FExpr '?' FExpr tDOTS FExpr { $$ = $1? $3 : $5 ; }
| tExp '(' FExpr ')' { $$ = exp($3); }
| tLog '(' FExpr ')' { $$ = log($3); }
| tLog10 '(' FExpr ')' { $$ = log10($3); }
...
...
@@ -1667,6 +1732,57 @@ FExpr_Single :
else $$ = TheSymbol.val ;
Free($1);
}
| tSTRING '.' tSTRING
{
if(!(pNumCat = Get_NumberOptionCategory($1)))
vyyerror("Unknown Numeric Option Class '%s'", $1);
else{
if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i)))
vyyerror("Unknown Numeric Option '%s.%s'", $1, $3);
else{
switch(i){
case GMSH_DOUBLE : $$ = *(double*)pNumOpt ; break ;
case GMSH_FLOAT : $$ = (double)(*(float*)pNumOpt) ; break ;
case GMSH_LONG : $$ = (double)(*(long*)pNumOpt) ; break ;
case GMSH_INT : $$ = (double)(*(int*)pNumOpt) ; break ;
}
}
}
}
| tSTRING '.' tSTRING tPLUSPLUS
{
if(!(pNumCat = Get_NumberOptionCategory($1)))
vyyerror("Unknown Numeric Option Class '%s'", $1);
else{
if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i)))
vyyerror("Unknown Numeric Option '%s.%s'", $1, $3);
else{
switch(i){
case GMSH_DOUBLE : $$ = (*(double*)pNumOpt += 1.) ; break ;
case GMSH_FLOAT : $$ = (double)(*(float*)pNumOpt += 1.) ; break ;
case GMSH_LONG : $$ = (double)(*(long*)pNumOpt += 1) ; break ;
case GMSH_INT : $$ = (double)(*(int*)pNumOpt += 1) ; break ;
}
}
}
}
| tSTRING '.' tSTRING tMINUSMINUS
{
if(!(pNumCat = Get_NumberOptionCategory($1)))
vyyerror("Unknown Numeric Option Class '%s'", $1);
else{
if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i)))
vyyerror("Unknown Numeric Option '%s.%s'", $1, $3);
else{
switch(i){
case GMSH_DOUBLE : $$ = (*(double*)pNumOpt -= 1.) ; break ;
case GMSH_FLOAT : $$ = (double)(*(float*)pNumOpt -= 1.) ; break ;
case GMSH_LONG : $$ = (double)(*(long*)pNumOpt -= 1) ; break ;
case GMSH_INT : $$ = (double)(*(int*)pNumOpt -= 1) ; break ;
}
}
}
}
;
FExpr_Range :
...
...
@@ -1690,37 +1806,43 @@ FExpr_Range :
;
VExpr :
VExpr_Single
{
$$ = $1;
}
| '-' VExpr %prec UNARYPREC
{
for(i=0 ; i<6 ; i++) $$[i] = -$2[i] ;
}
| '+' VExpr %prec UNARYPREC
{
$$ = $2;
}
| VExpr '-' VExpr
{
for(i=0 ; i<6 ; i++) $$[i] = $1[i] - $3[i] ;
}
| VExpr '+' VExpr
{
for(i=0 ; i<6 ; i++) $$[i] = $1[i] + $3[i] ;
}
VExpr_Single :
'{' FExpr ',' FExpr ',' FExpr ',' FExpr ',' FExpr '}'
{
$$[0]=$2;
$$[1]=$4;
$$[2]=$6;
$$[3]=$8;
$$[4]=$10;
$$[0]=$2; $$[1]=$4; $$[2]=$6; $$[3]=$8; $$[4]=$10;
}
| '{' FExpr ',' FExpr ',' FExpr ',' FExpr '}'
{
$$[0]=$2;
$$[1]=$4;
$$[2]=$6;
$$[3]=$8;
$$[4]=1.0;
$$[0]=$2; $$[1]=$4; $$[2]=$6; $$[3]=$8; $$[4]=1.0;
}
| '{' FExpr ',' FExpr ',' FExpr '}'
{
$$[0]=$2;
$$[1]=$4;
$$[2]=$6;
$$[3]=0.0;
$$[4]=1.0;
$$[0]=$2; $$[1]=$4; $$[2]=$6; $$[3]=0.0; $$[4]=1.0;
}
| '(' FExpr ',' FExpr ',' FExpr ')'
{
$$[0]=$2;
$$[1]=$4;
$$[2]=$6;
$$[3]=0.0;
$$[4]=1.0;
$$[0]=$2; $$[1]=$4; $$[2]=$6; $$[3]=0.0; $$[4]=1.0;
}
;
...
...
@@ -1782,12 +1904,6 @@ ListOfDouble :
{
$$=ListOfDouble_L;
}
/*
| '(' RecursiveListOfDouble ')'
{
$$=ListOfDouble_L;
}
*/
;
...
...
@@ -1820,6 +1936,38 @@ RecursiveListOfDouble :
}
;
Color :
'{' FExpr ',' FExpr ',' FExpr ',' FExpr '}'
{
$$ = PACK_COLOR((int)$2, (int)$4, (int)$6, (int)$8);
}
| '{' FExpr ',' FExpr ',' FExpr '}'
{
$$ = PACK_COLOR((int)$2, (int)$4, (int)$6, 255);
}
| '{' tSTRING ',' FExpr '}'
{
$$ = Get_ColorForString(ColorString, (int)$4, $2, &flag);
if(flag) vyyerror("Unknown Color '%s'", $2);
}
| tSTRING
{
$$ = Get_ColorForString(ColorString, -1, $1, &flag);
if(flag) vyyerror("Unknown Color '%s'", $1);
}
| tSTRING '.' tColor '.' tSTRING
{
if(!(pColCat = Get_ColorOptionCategory($1)))
vyyerror("Unknown Color Option Class '%s'", $1);
else{
if(!(pColOpt = Get_ColorOption($5, pColCat)))
vyyerror("Unknown Color Option '%s.%s'", $1, $5);
else{
$$ = *pColOpt ;
}
}
}
;
%%
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment