diff --git a/Box/Main.cpp b/Box/Main.cpp new file mode 100644 index 0000000000000000000000000000000000000000..9937cb5b2b4bc965fe2e986173650f549244a737 --- /dev/null +++ b/Box/Main.cpp @@ -0,0 +1,195 @@ +// $Id: Main.cpp,v 1.1 2001-02-17 22:08:53 geuzaine Exp $ + +#include <signal.h> + +#include "Gmsh.h" +#include "GmshVersion.h" +#include "Const.h" +#include "Geo.h" +#include "Mesh.h" +#include "Views.h" +#include "Parser.h" +#include "Context.h" +#include "OpenFile.h" +#include "GetOptions.h" +#include "MinMax.h" +#include "Static.h" + +/* dummy defs for link purposes */ + +void AddViewInUI(int, char *, int){} +void draw_polygon_2d (double, double, double, int, double *, double *, double *){} +void set_r(int, double){} +void Draw(void){} +void DrawUI(void){} +void Replot(void){} +void CreateOutputFile(char *, int){} + +/* ------------------------------------------------------------------------ */ +/* I n f o */ +/* ------------------------------------------------------------------------ */ + +void Info (int level, char *arg0){ + switch(level){ + case 0 : + fprintf(stderr, "%s\n", gmsh_progname); + fprintf(stderr, "%s\n", gmsh_copyright); + Print_Options(arg0); + exit(1); + case 1: + fprintf(stderr, "%.2f\n", GMSH_VERSION); + exit(1) ; + case 2: + fprintf(stderr, "%s%.2f\n", gmsh_version, GMSH_VERSION); + fprintf(stderr, "%s\n", gmsh_os); + fprintf(stderr, "%s\n", gmsh_date); + fprintf(stderr, "%s\n", gmsh_host); + fprintf(stderr, "%s\n", gmsh_packager); + fprintf(stderr, "%s\n", gmsh_url); + fprintf(stderr, "%s\n", gmsh_email); + exit(1) ; + default : + break; + } +} + +/* ------------------------------------------------------------------------ */ +/* m a i n */ +/* ------------------------------------------------------------------------ */ + +int main(int argc, char *argv[]){ + int i, nbf; + + Init_Context(0); + Get_Options(argc, argv, &nbf); + + signal(SIGINT, Signal); + signal(SIGSEGV, Signal); + signal(SIGFPE, Signal); + + OpenProblem(CTX.filename); + if(yyerrorstate) + exit(1); + else{ + if(nbf>1){ + for(i=1;i<nbf;i++) MergeProblem(TheFileNameTab[i]); + } + if(TheBgmFileName){ + MergeProblem(TheBgmFileName); + if(List_Nbr(Post_ViewList)) + BGMWithView((Post_View*)List_Pointer(Post_ViewList, List_Nbr(Post_ViewList)-1)); + else + fprintf(stderr, ERROR_STR "Invalid BGM (no view)\n"); exit(1); + } + if(CTX.interactive > 0){ + mai3d(THEM, CTX.interactive); + Print_Mesh(THEM,NULL,CTX.mesh.format); + } + exit(1); + } + +} + + +/* ------------------------------------------------------------------------ */ +/* S i g n a l */ +/* ------------------------------------------------------------------------ */ + + +void Signal (int sig_num){ + + switch (sig_num){ + case SIGSEGV : Msg(FATAL, "Segmentation Violation (Invalid Memory Reference)"); break; + case SIGFPE : Msg(FATAL, "Floating Point Exception (Division by Zero?)"); break; + case SIGINT : Msg(FATAL, "Interrupt (Generated from Terminal Special Char)"); break; + default : Msg(FATAL, "Unknown Signal"); break; + } +} + + +/* ------------------------------------------------------------------------ */ +/* M s g */ +/* ------------------------------------------------------------------------ */ + +void Msg(int level, char *fmt, ...){ + va_list args; + int abort=0; + int nb, nbvis; + + va_start (args, fmt); + + switch(level){ + + case FATAL : + case FATAL1 : + case FATAL2 : + case FATAL3 : + fprintf(stderr, FATAL_STR); + vfprintf(stderr, fmt, args); fprintf(stderr, "\n"); + abort = 1 ; + break ; + + case GERROR : + case GERROR1 : + case GERROR2 : + case GERROR3 : + fprintf(stderr, ERROR_STR); + vfprintf(stderr, fmt, args); fprintf(stderr, "\n"); + abort = 1 ; + break ; + + case WARNING : + case WARNING1 : + case WARNING2 : + case WARNING3 : + fprintf(stderr, WARNING_STR); + vfprintf(stderr, fmt,args); fprintf(stderr, "\n"); + break; + + case PARSER_ERROR : + fprintf(stderr, PARSER_ERROR_STR); + vfprintf(stderr, fmt, args); fprintf(stderr, "\n"); + break ; + + case PARSER_INFO : + if(CTX.verbosity == 5){ + fprintf(stderr, PARSER_INFO_STR); + vfprintf(stderr, fmt, args); fprintf(stderr, "\n"); + } + break ; + + case DIRECT : + vfprintf(stderr, fmt, args); fprintf(stderr, "\n"); + break; + + default : + if(CTX.verbosity == 5){ + fprintf(stderr, INFO_STR); + vfprintf(stderr, fmt, args); fprintf(stderr, "\n"); + } + break; + } + + va_end (args); + + if(abort) exit(1); + +} + +/* ------------------------------------------------------------------------ */ +/* C p u */ +/* ------------------------------------------------------------------------ */ + +double Cpu(void){ + return 0.; +} + +/* ------------------------------------------------------------------------ */ +/* P r o g r e s s */ +/* ------------------------------------------------------------------------ */ + +void Progress(int i){ +} + +void AddALineInTheEditGeometryForm (char* line){ +}; diff --git a/Box/Makefile b/Box/Makefile index 7b05a6d3bee5f651b6fc641cac8ff3ccedaa5a75..242ee9bccd8d3c4d08480ea936ef5e27fd27226f 100644 --- a/Box/Makefile +++ b/Box/Makefile @@ -1,6 +1,6 @@ -# $Id: Makefile,v 1.6 2001-02-12 17:38:02 geuzaine Exp $ +# $Id: Makefile,v 1.7 2001-02-17 22:08:53 geuzaine Exp $ # -# Makefile for ".a" +# Makefile for "libBox.a" # .IGNORE: @@ -20,7 +20,7 @@ VERSION_FLAGS = RMFLAGS = -f CFLAGS = $(C_FLAGS) $(OS_FLAGS) $(VERSION_FLAGS) $(INCLUDE) -SRC = Box.cpp +SRC = Main.cpp OBJ = $(SRC:.cpp=.o) @@ -48,11 +48,11 @@ depend: $(RM) $(RMFLAGS) Makefile.new # DO NOT DELETE THIS LINE -Box.o: Box.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \ - ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \ - ../Common/GmshVersion.h ../Common/Const.h ../Geo/Geo.h ../Mesh/Mesh.h \ - ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \ - ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Common/Views.h \ - ../Common/ColorTable.h ../Parser/Parser.h ../Common/Context.h \ - ../Parser/OpenFile.h ../Common/GetOptions.h ../Geo/MinMax.h \ - ../Common/Static.h +Main.o: Main.cpp ../Common/Gmsh.h ../Common/Message.h \ + ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ + ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshVersion.h \ + ../Common/Const.h ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h \ + ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \ + ../Mesh/Metric.h ../Common/Views.h ../Common/ColorTable.h \ + ../Parser/Parser.h ../Common/Context.h ../Parser/OpenFile.h \ + ../Common/GetOptions.h ../Geo/MinMax.h ../Common/Static.h diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h index 73a84b3d19026badb2f54dddbad188361514b4b1..232f652686fe9ab1e74c527025789fe72ae676f8 100644 --- a/Common/DefaultOptions.h +++ b/Common/DefaultOptions.h @@ -2,426 +2,451 @@ #define _DEFAULT_OPTIONS_H_ // Option Database (General, Geometry, Mesh, Post, View, Print), with -// default values +// default values. The first number defines the level of saving: O +// for the option file, S for the session file and F for the full +// listing: + +#define S GMSH_SESSIONRC +#define O GMSH_OPTIONSRC +#define F GMSH_FULLRC // STRINGS StringXString GeneralOptions_String[] = { - { "Display" , opt_general_display , "" }, - { NULL , NULL , NULL } + { F, "Display" , opt_general_display , "" }, + { 0, "SessionFileName" , opt_general_session_filename , ".gmshrc" }, + { F|S, "DefaultFileName" , opt_general_default_filename , "unnamed.geo" }, + { F|S, "TmpFileName" , opt_general_tmp_filename , ".gmsh-tmp" }, + { F|S, "ErrorFileName" , opt_general_error_filename , ".gmsh-errors" }, + { F|S, "OptionsFileName" , opt_general_options_filename , ".gmsh-options" }, + { 0, NULL , NULL , NULL } } ; StringXString GeometryOptions_String[] = { - { NULL , NULL , NULL } + { 0, NULL , NULL , NULL } } ; StringXString MeshOptions_String[] = { - { NULL , NULL , NULL } + { 0, NULL , NULL , NULL } } ; StringXString PostProcessingOptions_String[] = { - { NULL , NULL , NULL } + { 0, NULL , NULL , NULL } } ; StringXString ViewOptions_String[] = { - { "Name" , opt_view_name , "" }, - { "Format" , opt_view_format , "%.3e" }, - { "FileName" , opt_view_filename , "" }, - { NULL , NULL , NULL } + { F, "Name" , opt_view_name , "" }, + { F|O, "Format" , opt_view_format , "%.3e" }, + { F, "FileName" , opt_view_filename , "" }, + { 0, NULL , NULL , NULL } } ; StringXString PrintOptions_String[] = { - { "Font" , opt_print_font , "Courier" }, - { NULL , NULL , NULL } + { F|O, "Font" , opt_print_font , "Courier" }, + { 0, NULL , NULL , NULL } } ; // NUMBERS StringXNumber GeneralOptions_Number[] = { - { "Viewport0" , opt_general_viewport0 , 0. }, - { "Viewport1" , opt_general_viewport1 , 0. }, - { "Viewport2" , opt_general_viewport2 , 700. }, - { "Viewport3" , opt_general_viewport3 , 500. }, - { "GraphicsPosition0" , opt_general_graphics_position0 , 20. }, - { "GraphicsPosition1" , opt_general_graphics_position1 , 30. }, - { "GraphicsFontSize" , opt_general_graphics_fontsize , 11. }, - { "MenuPosition0" , opt_general_menu_position0 , 800. }, - { "MenuPosition1" , opt_general_menu_position1 , 50. }, - { "MenuFontSize" , opt_general_menu_fontsize , 12. }, - { "CenterWindows" , opt_general_center_windows , 1. }, - { "Rotation0" , opt_general_rotation0 , 0.0 }, - { "Rotation1" , opt_general_rotation1 , 0.0 }, - { "Rotation2" , opt_general_rotation2 , 0.0 }, - { "TrackballQuaternion0" , opt_general_quaternion0 , 0.0 }, - { "TrackballQuaternion1" , opt_general_quaternion1 , 0.0 }, - { "TrackballQuaternion2" , opt_general_quaternion2 , 0.0 }, - { "TrackballQuaternion3" , opt_general_quaternion3 , 1.0 }, - { "Translation0" , opt_general_translation0 , 0.0 }, - { "Translation1" , opt_general_translation1 , 0.0 }, - { "Translation2" , opt_general_translation2 , 0.0 }, - { "Scale0" , opt_general_scale0 , 1.0 }, - { "Scale1" , opt_general_scale1 , 1.0 }, - { "Scale2" , opt_general_scale2 , 1.0 }, - { "Shininess" , opt_general_shine , 0.4 }, - { "ColorScheme" , opt_general_color_scheme , 0. }, - { "Verbosity" , opt_general_verbosity , 2. }, - { "Terminal" , opt_general_terminal , 1. }, - { "Orthographic" , opt_general_orthographic , 1. }, - { "FastRedraw" , opt_general_fast_redraw , 1. }, - { "Axes" , opt_general_axes , 1. }, - { "SmallAxes" , opt_general_small_axes , 1. }, - { "DisplayLists" , opt_general_display_lists , 0. }, - { "AlphaBlending" , opt_general_alpha_blending , 0. }, - { "Trackball" , opt_general_trackball , 1. }, - { "ZoomFactor" , opt_general_zoom_factor , 1.1 }, - { "Clip0" , opt_general_clip0 , 0. }, - { "Clip0a" , opt_general_clip0a , 0.0 }, - { "Clip0b" , opt_general_clip0b , 0.0 }, - { "Clip0c" , opt_general_clip0c , 0.0 }, - { "Clip0d" , opt_general_clip0d , 0.0 }, - { "Clip1" , opt_general_clip1 , 0. }, - { "Clip1a" , opt_general_clip1a , 0.0 }, - { "Clip1b" , opt_general_clip1b , 0.0 }, - { "Clip1c" , opt_general_clip1c , 0.0 }, - { "Clip1d" , opt_general_clip1d , 0.0 }, - { "Clip2" , opt_general_clip2 , 0. }, - { "Clip2a" , opt_general_clip2a , 0.0 }, - { "Clip2b" , opt_general_clip2b , 0.0 }, - { "Clip2c" , opt_general_clip2c , 0.0 }, - { "Clip2d" , opt_general_clip2d , 0.0 }, - { "Clip3" , opt_general_clip3 , 0. }, - { "Clip3a" , opt_general_clip3a , 0.0 }, - { "Clip3b" , opt_general_clip3b , 0.0 }, - { "Clip3c" , opt_general_clip3c , 0.0 }, - { "Clip3d" , opt_general_clip3d , 0.0 }, - { "Clip4" , opt_general_clip4 , 0. }, - { "Clip4a" , opt_general_clip4a , 0.0 }, - { "Clip4b" , opt_general_clip4b , 0.0 }, - { "Clip4c" , opt_general_clip4c , 0.0 }, - { "Clip4d" , opt_general_clip4d , 0.0 }, - { "Clip5" , opt_general_clip5 , 0. }, - { "Clip5a" , opt_general_clip5a , 0.0 }, - { "Clip5b" , opt_general_clip5b , 0.0 }, - { "Clip5c" , opt_general_clip5c , 0.0 }, - { "Clip5d" , opt_general_clip5d , 0.0 }, - { "Light0" , opt_general_light0 , 1. }, - { "Light00" , opt_general_light00 , 0.5 }, - { "Light01" , opt_general_light01 , 0.3 }, - { "Light02" , opt_general_light02 , 1.0 }, - { "Light1" , opt_general_light1 , 0. }, - { "Light10" , opt_general_light10 , 0.5 }, - { "Light11" , opt_general_light11 , 0.3 }, - { "Light12" , opt_general_light12 , 1.0 }, - { "Light2" , opt_general_light2 , 0. }, - { "Light20" , opt_general_light20 , 0.5 }, - { "Light21" , opt_general_light21 , 0.3 }, - { "Light22" , opt_general_light22 , 1.0 }, - { "Light3" , opt_general_light3 , 0. }, - { "Light30" , opt_general_light30 , 0.5 }, - { "Light31" , opt_general_light31 , 0.3 }, - { "Light32" , opt_general_light32 , 1.0 }, - { "Light4" , opt_general_light4 , 0. }, - { "Light40" , opt_general_light40 , 0.5 }, - { "Light41" , opt_general_light41 , 0.3 }, - { "Light42" , opt_general_light42 , 1.0 }, - { "Light5" , opt_general_light5 , 0. }, - { "Light50" , opt_general_light50 , 0.5 }, - { "Light51" , opt_general_light51 , 0.3 }, - { "Light52" , opt_general_light52 , 1.0 }, - { NULL , NULL , 0. } + { F|S, "SaveSession" , opt_general_session_save, 1. }, + { F|S, "SaveOptions" , opt_general_options_save, 0. }, + { F|S, "FontSize" , opt_general_fontsize , 12. }, + { F|S, "GraphicsFontSize" , opt_general_graphics_fontsize , 11. }, + { F|S, "GraphicsPositionX" , opt_general_graphics_position0 , 20. }, + { F|S, "GraphicsPositionY" , opt_general_graphics_position1 , 30. }, + { F|S, "GraphicsWidth" , opt_general_viewport2 , 700. }, + { F|S, "GraphicsHeight" , opt_general_viewport3 , 500. }, + { F|S, "MenuPositionX" , opt_general_menu_position0 , 800. }, + { F|S, "MenuPositionY" , opt_general_menu_position1 , 50. }, + { F|S, "MessagePositionX" , opt_general_message_position0 , 650. }, + { F|S, "MessagePositionY" , opt_general_message_position1 , 150. }, + { F|S, "MessageWidth" , opt_general_message_size0 , 450. }, + { F|S, "MessageHeight" , opt_general_message_size1 , 350. }, + { F|O, "CenterWindows" , opt_general_center_windows , 1. }, + { F, "RotationX" , opt_general_rotation0 , 0.0 }, + { F, "RotationY" , opt_general_rotation1 , 0.0 }, + { F, "RotationZ" , opt_general_rotation2 , 0.0 }, + { F, "TrackballQuaternion0" , opt_general_quaternion0 , 0.0 }, + { F, "TrackballQuaternion1" , opt_general_quaternion1 , 0.0 }, + { F, "TrackballQuaternion2" , opt_general_quaternion2 , 0.0 }, + { F, "TrackballQuaternion3" , opt_general_quaternion3 , 1.0 }, + { F, "TranslationX" , opt_general_translation0 , 0.0 }, + { F, "TranslationY" , opt_general_translation1 , 0.0 }, + { F, "TranslationZ" , opt_general_translation2 , 0.0 }, + { F, "ScaleX" , opt_general_scale0 , 1.0 }, + { F, "ScaleY" , opt_general_scale1 , 1.0 }, + { F, "ScaleZ" , opt_general_scale2 , 1.0 }, + { F|O, "Shininess" , opt_general_shine , 0.4 }, + { F|O, "ColorScheme", opt_general_color_scheme , 0. }, + { F|O, "Verbosity" , opt_general_verbosity , 2. }, +#ifdef _FLTK + { F|O, "Terminal" , opt_general_terminal , 0. }, +#else + { F|O, "Terminal" , opt_general_terminal , 1. }, +#endif + { F|O, "Orthographic" , opt_general_orthographic , 1. }, + { F|O, "FastRedraw" , opt_general_fast_redraw , 1. }, + { F|O, "Axes" , opt_general_axes , 1. }, + { F|O, "SmallAxes" , opt_general_small_axes , 1. }, + { F|O, "DisplayLists" , opt_general_display_lists , 0. }, + { F|O, "AlphaBlending" , opt_general_alpha_blending , 0. }, + { F|O, "Trackball" , opt_general_trackball , 1. }, + { F|O, "ZoomFactor" , opt_general_zoom_factor , 1.1 }, + { F, "Clip0" , opt_general_clip0 , 0. }, + { F, "Clip0A" , opt_general_clip0a , 0.0 }, + { F, "Clip0B" , opt_general_clip0b , 0.0 }, + { F, "Clip0C" , opt_general_clip0c , 0.0 }, + { F, "Clip0D" , opt_general_clip0d , 0.0 }, + { F, "Clip1" , opt_general_clip1 , 0. }, + { F, "Clip1A" , opt_general_clip1a , 0.0 }, + { F, "Clip1B" , opt_general_clip1b , 0.0 }, + { F, "Clip1C" , opt_general_clip1c , 0.0 }, + { F, "Clip1D" , opt_general_clip1d , 0.0 }, + { F, "Clip2" , opt_general_clip2 , 0. }, + { F, "Clip2A" , opt_general_clip2a , 0.0 }, + { F, "Clip2B" , opt_general_clip2b , 0.0 }, + { F, "Clip2C" , opt_general_clip2c , 0.0 }, + { F, "Clip2D" , opt_general_clip2d , 0.0 }, + { F, "Clip3" , opt_general_clip3 , 0. }, + { F, "Clip3A" , opt_general_clip3a , 0.0 }, + { F, "Clip3B" , opt_general_clip3b , 0.0 }, + { F, "Clip3C" , opt_general_clip3c , 0.0 }, + { F, "Clip3D" , opt_general_clip3d , 0.0 }, + { F, "Clip4" , opt_general_clip4 , 0. }, + { F, "Clip4A" , opt_general_clip4a , 0.0 }, + { F, "Clip4B" , opt_general_clip4b , 0.0 }, + { F, "Clip4C" , opt_general_clip4c , 0.0 }, + { F, "Clip4D" , opt_general_clip4d , 0.0 }, + { F, "Clip5" , opt_general_clip5 , 0. }, + { F, "Clip5A" , opt_general_clip5a , 0.0 }, + { F, "Clip5B" , opt_general_clip5b , 0.0 }, + { F, "Clip5C" , opt_general_clip5c , 0.0 }, + { F, "Clip5D" , opt_general_clip5d , 0.0 }, + { F|O, "MovingLight" , opt_general_moving_light , 0. }, + { F|O, "Light0" , opt_general_light0 , 1. }, + { F|O, "Light0X" , opt_general_light00 , 0.5 }, + { F|O, "Light0Y" , opt_general_light01 , 0.3 }, + { F|O, "Light0Z" , opt_general_light02 , 1.0 }, + { F|O, "Light1" , opt_general_light1 , 0. }, + { F|O, "Light1X" , opt_general_light10 , 0.5 }, + { F|O, "Light1Y" , opt_general_light11 , 0.3 }, + { F|O, "Light1Z" , opt_general_light12 , 1.0 }, + { F|O, "Light2" , opt_general_light2 , 0. }, + { F|O, "Light2X" , opt_general_light20 , 0.5 }, + { F|O, "Light2Y" , opt_general_light21 , 0.3 }, + { F|O, "Light2Z" , opt_general_light22 , 1.0 }, + { F|O, "Light3" , opt_general_light3 , 0. }, + { F|O, "Light3X" , opt_general_light30 , 0.5 }, + { F|O, "Light3Y" , opt_general_light31 , 0.3 }, + { F|O, "Light3Z" , opt_general_light32 , 1.0 }, + { F|O, "Light4" , opt_general_light4 , 0. }, + { F|O, "Light4X" , opt_general_light40 , 0.5 }, + { F|O, "Light4Y" , opt_general_light41 , 0.3 }, + { F|O, "Light4Z" , opt_general_light42 , 1.0 }, + { F|O, "Light5" , opt_general_light5 , 0. }, + { F|O, "Light5X" , opt_general_light50 , 0.5 }, + { F|O, "Light5Y" , opt_general_light51 , 0.3 }, + { F|O, "Light5Z" , opt_general_light52 , 1.0 }, + { 0, NULL , NULL , 0. } } ; StringXNumber GeometryOptions_Number[] = { - { "Normals" , opt_geometry_normals , 0. }, - { "Tangents" , opt_geometry_tangents , 0. }, - { "Points" , opt_geometry_points , 1. }, - { "Lines" , opt_geometry_lines , 1. }, - { "Surfaces" , opt_geometry_surfaces , 0. }, - { "Volumes" , opt_geometry_volumes , 0. }, - { "PointsNumbers" , opt_geometry_points_num , 0. }, - { "LinesNumbers" , opt_geometry_lines_num , 0. }, - { "SurfacesNumbers" , opt_geometry_surfaces_num , 0. }, - { "VolumesNumbers" , opt_geometry_volumes_num , 0. }, - { "HiddenLines" , opt_geometry_hidden , 0. }, - { "Shading" , opt_geometry_shade , 0. }, - { "Highlight" , opt_geometry_highlight , 1. }, - { "OldCircle" , opt_geometry_old_circle , 0. }, - { "ScalingFactor" , opt_geometry_scaling_factor , 1.0 }, - { NULL , NULL , 0. } + { F|O, "Normals" , opt_geometry_normals , 0. }, + { F|O, "Tangents" , opt_geometry_tangents , 0. }, + { F|O, "Points" , opt_geometry_points , 1. }, + { F|O, "Lines" , opt_geometry_lines , 1. }, + { F|O, "Surfaces" , opt_geometry_surfaces , 0. }, + { F|O, "Volumes" , opt_geometry_volumes , 0. }, + { F|O, "PointsNumbers" , opt_geometry_points_num , 0. }, + { F|O, "LinesNumbers" , opt_geometry_lines_num , 0. }, + { F|O, "SurfacesNumbers" , opt_geometry_surfaces_num , 0. }, + { F|O, "VolumesNumbers" , opt_geometry_volumes_num , 0. }, + { F|O, "Aspect" , opt_geometry_aspect , 0. }, + { F|O, "Highlight" , opt_geometry_highlight , 1. }, + { F|O, "OldCircle" , opt_geometry_old_circle , 0. }, + { F|O, "ScalingFactor" , opt_geometry_scaling_factor , 1.0 }, + { F|O, "ColorScheme" , opt_geometry_color_scheme , 0. }, + { 0, NULL , NULL , 0. } } ; StringXNumber MeshOptions_Number[] = { - { "Quality" , opt_mesh_quality , 0.0 }, - { "Normals" , opt_mesh_normals , 0.0 }, - { "Tangents" , opt_mesh_tangents , 0.0 }, - { "Explode" , opt_mesh_explode , 1.0 }, - { "ScalingFactor" , opt_mesh_scaling_factor , 1.0 }, - { "CharacteristicLengthFactor" , opt_mesh_lc_factor , 1.0 }, - { "RandomFactor" , opt_mesh_rand_factor , 1.e-5 }, - { "GammaLimit" , opt_mesh_limit_gamma , 0.0 }, - { "EtaLimit" , opt_mesh_limit_eta , 0.0 }, - { "RhoLimit" , opt_mesh_limit_rho , 0.0 }, - { "Points" , opt_mesh_points , 1. }, - { "Lines" , opt_mesh_lines , 1. }, - { "Surfaces" , opt_mesh_surfaces , 1. }, - { "Volumes" , opt_mesh_volumes , 1. }, - { "PointsNumbers" , opt_mesh_points_num , 0. }, - { "LinesNumbers" , opt_mesh_lines_num , 0. }, - { "SurfacesNumbers" , opt_mesh_surfaces_num , 0. }, - { "VolumesNumbers" , opt_mesh_volumes_num , 0. }, - { "HiddenLines" , opt_mesh_hidden , 0. }, - { "Shading" , opt_mesh_shade , 0. }, - { "Format" , opt_mesh_format , FORMAT_MSH }, - { "Smoothing" , opt_mesh_nb_smoothing , 0. }, - { "Algorithm" , opt_mesh_algo , DELAUNAY_OLDALGO }, - { "PointInsertion" , opt_mesh_point_insertion, CENTER_CIRCCIRC }, - { "SpeedMax" , opt_mesh_speed_max , 0. }, - { "MinimumCirclePoints" , opt_mesh_min_circ_points, 7. }, - { "Degree" , opt_mesh_degree , 1. }, - { "Dual" , opt_mesh_dual , 0. }, - { "Interactive" , opt_mesh_interactive , 0. }, - { "use_cut_plane" , opt_mesh_use_cut_plane , 0 }, - { "cut_planea" , opt_mesh_cut_planea , 1. }, - { "cut_planeb" , opt_mesh_cut_planeb , 0. }, - { "cut_planec" , opt_mesh_cut_planec , 0. }, - { "cut_planed" , opt_mesh_cut_planed , 0. }, - { NULL , NULL , 0. } + { F|O, "Quality" , opt_mesh_quality , 0.0 }, + { F|O, "Normals" , opt_mesh_normals , 0.0 }, + { F|O, "Tangents" , opt_mesh_tangents , 0.0 }, + { F|O, "Explode" , opt_mesh_explode , 1.0 }, + { F|O, "ScalingFactor" , opt_mesh_scaling_factor , 1.0 }, + { F|O, "CharacteristicLengthFactor" , opt_mesh_lc_factor , 1.0 }, + { F|O, "RandomFactor" , opt_mesh_rand_factor , 1.e-4 }, + { F|O, "GammaLimit" , opt_mesh_limit_gamma , 0.0 }, + { F|O, "EtaLimit" , opt_mesh_limit_eta , 0.0 }, + { F|O, "RhoLimit" , opt_mesh_limit_rho , 0.0 }, + { F|O, "Points" , opt_mesh_points , 1. }, + { F|O, "Lines" , opt_mesh_lines , 1. }, + { F|O, "Surfaces" , opt_mesh_surfaces , 1. }, + { F|O, "Volumes" , opt_mesh_volumes , 1. }, + { F|O, "PointsNumbers" , opt_mesh_points_num , 0. }, + { F|O, "LinesNumbers" , opt_mesh_lines_num , 0. }, + { F|O, "SurfacesNumbers" , opt_mesh_surfaces_num , 0. }, + { F|O, "VolumesNumbers" , opt_mesh_volumes_num , 0. }, + { F|O, "Aspect" , opt_mesh_aspect , 0. }, + { F|O, "Format" , opt_mesh_format , FORMAT_MSH }, + { F|O, "Smoothing" , opt_mesh_nb_smoothing , 0. }, + { F|O, "Algorithm" , opt_mesh_algo , DELAUNAY_OLDALGO }, + { F|O, "PointInsertion" , opt_mesh_point_insertion, CENTER_CIRCCIRC }, + { F|O, "SpeedMax" , opt_mesh_speed_max , 0. }, + { F|O, "MinimumCirclePoints" , opt_mesh_min_circ_points, 7. }, + { F|O, "Degree" , opt_mesh_degree , 1. }, + { F|O, "Dual" , opt_mesh_dual , 0. }, + { F|O, "Interactive" , opt_mesh_interactive , 0. }, + { F|O, "ColorScheme" , opt_mesh_color_scheme , 0. }, + { F|O, "ColorCarousel" , opt_mesh_color_carousel , 1. }, + { F, "use_cut_plane" , opt_mesh_use_cut_plane , 0 }, + { F, "cut_planea" , opt_mesh_cut_planea , 1. }, + { F, "cut_planeb" , opt_mesh_cut_planeb , 0. }, + { F, "cut_planec" , opt_mesh_cut_planec , 0. }, + { F, "cut_planed" , opt_mesh_cut_planed , 0. }, + { 0, NULL , NULL , 0. } } ; StringXNumber PostProcessingOptions_Number[] = { - { "Scales" , opt_post_scales , 1. }, - { "Link" , opt_post_link , 0. }, - { "Smoothing" , opt_post_smooth , 1. }, - { "AnimationDelay" , opt_post_anim_delay , 0.25 }, - { "NbViews" , opt_post_nb_views , 0. }, - { NULL , NULL , 0. } + { F|O, "Scales" , opt_post_scales , 1. }, + { F|O, "Link" , opt_post_link , 0. }, + { F|O, "Smoothing" , opt_post_smooth , 0. }, + { F|O, "AnimationDelay" , opt_post_anim_delay , 0.25 }, + { F, "NbViews" , opt_post_nb_views , 0. }, + { 0, NULL , NULL , 0. } } ; StringXNumber ViewOptions_Number[] = { - { "NbTimeStep" , opt_view_nb_timestep , 1. }, - { "TimeStep" , opt_view_timestep , 0. }, - { "Min" , opt_view_min , 1.e200 }, - { "Max" , opt_view_max , -1.e200 }, - { "CustomMin" , opt_view_custom_min , 0. }, - { "CustomMax" , opt_view_custom_max , 0. }, - { "Offset0" , opt_view_offset0 , 0. }, - { "Offset1" , opt_view_offset1 , 0. }, - { "Offset2" , opt_view_offset2 , 0. }, - { "Raise0" , opt_view_raise0 , 0. }, - { "Raise1" , opt_view_raise1 , 0. }, - { "Raise2" , opt_view_raise2 , 0. }, - { "ArrowScale" , opt_view_arrow_scale , 100. }, - { "Visible" , opt_view_visible , 1. }, - { "IntervalsType" , opt_view_intervals_type , DRAW_POST_ISO }, - { "NbIso" , opt_view_nb_iso , 15. }, - { "Light" , opt_view_light , 0. }, - { "ShowElement" , opt_view_show_element , 0. }, - { "ShowTime" , opt_view_show_time , 1. }, - { "ShowScale" , opt_view_show_scale , 1. }, - { "TransparentScale" , opt_view_transparent_scale , 1. }, - { "ScaleType" , opt_view_scale_type , DRAW_POST_LINEAR }, - { "RangeType" , opt_view_range_type , DRAW_POST_DEFAULT }, - { "ArrowType" , opt_view_arrow_type , DRAW_POST_ARROW }, - { "ArrowLocation" , opt_view_arrow_location , DRAW_POST_LOCATE_COG }, - { NULL , NULL , 0. } + { F, "NbTimeStep" , opt_view_nb_timestep , 1. }, + { F, "TimeStep" , opt_view_timestep , 0. }, + { F, "Min" , opt_view_min , 1.e200 }, + { F, "Max" , opt_view_max , -1.e200 }, + { F, "CustomMin" , opt_view_custom_min , 0. }, + { F, "CustomMax" , opt_view_custom_max , 0. }, + { F, "OffsetX" , opt_view_offset0 , 0. }, + { F, "OffsetY" , opt_view_offset1 , 0. }, + { F, "OffsetZ" , opt_view_offset2 , 0. }, + { F, "RaiseX" , opt_view_raise0 , 0. }, + { F, "RaiseY" , opt_view_raise1 , 0. }, + { F, "RaiseZ" , opt_view_raise2 , 0. }, + { F|O, "ArrowScale" , opt_view_arrow_scale , 100. }, + { F, "Visible" , opt_view_visible , 1. }, + { F|O, "IntervalsType" , opt_view_intervals_type , DRAW_POST_ISO }, + { F|O, "NbIso" , opt_view_nb_iso , 15. }, + { F|O, "Light" , opt_view_light , 0. }, + { F|O, "ShowElement" , opt_view_show_element , 0. }, + { F|O, "ShowTime" , opt_view_show_time , 1. }, + { F|O, "ShowScale" , opt_view_show_scale , 1. }, + { F|O, "TransparentScale" , opt_view_transparent_scale , 1. }, + { F|O, "ScaleType" , opt_view_scale_type , DRAW_POST_LINEAR }, + { F|O, "RangeType" , opt_view_range_type , DRAW_POST_DEFAULT }, + { F|O, "ArrowType" , opt_view_arrow_type , DRAW_POST_ARROW }, + { F|O, "ArrowLocation" , opt_view_arrow_location , DRAW_POST_LOCATE_COG }, + { 0, NULL , NULL , 0. } } ; StringXNumber PrintOptions_Number[] = { - { "Format" , opt_print_format , FORMAT_AUTO }, - { "EpsQuality" , opt_print_eps_quality , 1 }, - { "JpegQuality" , opt_print_jpeg_quality , 85 }, - { "GifDither" , opt_print_gif_dither , 0 }, - { "GifSort" , opt_print_gif_sort , 1 }, - { "GifInterlace" , opt_print_gif_interlace , 0 }, - { "GifTransparent" , opt_print_gif_transparent , 0 }, - { "FontSize" , opt_print_font_size , 12. }, - { NULL , NULL , 0. } + { F|O, "Format" , opt_print_format , FORMAT_AUTO }, + { F|O, "EpsQuality" , opt_print_eps_quality , 1 }, + { F|O, "JpegQuality" , opt_print_jpeg_quality , 85 }, + { F|O, "GifDither" , opt_print_gif_dither , 0 }, + { F|O, "GifSort" , opt_print_gif_sort , 1 }, + { F|O, "GifInterlace" , opt_print_gif_interlace , 0 }, + { F|O, "GifTransparent" , opt_print_gif_transparent , 0 }, + { F|O, "FontSize" , opt_print_font_size , 12. }, + { 0, NULL , NULL , 0. } } ; // COLORS StringXColor GeneralOptions_Color[] = { - { "Background" , opt_general_color_background , + { F|O, "Background" , opt_general_color_background , PACK_COLOR(0, 0, 0, 255), PACK_COLOR(255, 255, 255, 255), PACK_COLOR(255, 255, 255, 255) }, - { "Foreground" , opt_general_color_foreground , + { F|O, "Foreground" , opt_general_color_foreground , PACK_COLOR(255, 255, 255, 255), PACK_COLOR(0, 0, 0, 255), PACK_COLOR(0, 0, 0, 255) }, - { "Text" , opt_general_color_text , + { F|O, "Text" , opt_general_color_text , PACK_COLOR(255, 255, 255, 255), PACK_COLOR(0, 0, 0, 255), PACK_COLOR(0, 0, 0, 255) }, - { "Axes" , opt_general_color_axes , + { F|O, "Axes" , opt_general_color_axes , PACK_COLOR(255, 255, 0, 255), PACK_COLOR(128, 128, 128, 255), PACK_COLOR(0, 0, 0, 255) }, - { "SmallAxes" , opt_general_color_small_axes , + { F|O, "SmallAxes" , opt_general_color_small_axes , PACK_COLOR(255, 255, 255, 255), PACK_COLOR(0, 0, 0, 255), PACK_COLOR(0, 0, 0, 255) }, - { NULL , NULL , 0, 0, 0 } + { 0, NULL , NULL , 0, 0, 0 } } ; StringXColor GeometryOptions_Color[] = { - { "Points" , opt_geometry_color_points , + { F|O, "Points" , opt_geometry_color_points , PACK_COLOR(178, 182, 129, 255) , PACK_COLOR(178, 182, 129, 255) , PACK_COLOR(0, 0, 0, 255) }, - { "Lines" , opt_geometry_color_lines , + { F|O, "Lines" , opt_geometry_color_lines , PACK_COLOR(0, 0, 255, 255), PACK_COLOR(0, 0, 255, 255), PACK_COLOR(0, 0, 0, 255) }, - { "Surfaces" , opt_geometry_color_surfaces , + { F|O, "Surfaces" , opt_geometry_color_surfaces , PACK_COLOR(128, 128, 128, 255), PACK_COLOR(128, 128, 128, 255), PACK_COLOR(0, 0, 0, 255) }, - { "Volumes" , opt_geometry_color_volumes , + { F|O, "Volumes" , opt_geometry_color_volumes , PACK_COLOR(128, 128, 128, 255), PACK_COLOR(128, 128, 128, 255), PACK_COLOR(0, 0, 0, 255) }, - { "PointsSelect" , opt_geometry_color_points_select , + { F|O, "PointsSelect" , opt_geometry_color_points_select , PACK_COLOR(255, 0, 0, 255), PACK_COLOR(255, 0, 0, 255), PACK_COLOR(0, 0, 0, 255) }, - { "LinesSelect" , opt_geometry_color_lines_select , + { F|O, "LinesSelect" , opt_geometry_color_lines_select , PACK_COLOR(255, 0, 0, 255), PACK_COLOR(255, 0, 0, 255), PACK_COLOR(0, 0, 0, 255) }, - { "SurfacesSelect" , opt_geometry_color_surfaces_select , + { F|O, "SurfacesSelect" , opt_geometry_color_surfaces_select , PACK_COLOR(255, 0, 0, 255), PACK_COLOR(255, 0, 0, 255), PACK_COLOR(0, 0, 0, 255) }, - { "VolumesSelect" , opt_geometry_color_volumes_select , + { F|O, "VolumesSelect" , opt_geometry_color_volumes_select , PACK_COLOR(255, 0, 0, 255), PACK_COLOR(255, 0, 0, 255), PACK_COLOR(0, 0, 0, 255) }, - { "PointsHighlight" , opt_geometry_color_points_highlight , + { F|O, "PointsHighlight" , opt_geometry_color_points_highlight , PACK_COLOR(0, 255, 0, 255), PACK_COLOR(0, 255, 0, 255), PACK_COLOR(0, 0, 0, 255) }, - { "LinesHighlight" , opt_geometry_color_lines_highlight , + { F|O, "LinesHighlight" , opt_geometry_color_lines_highlight , PACK_COLOR(0, 0, 255, 255), PACK_COLOR(0, 0, 255, 255), PACK_COLOR(0, 0, 0, 255) }, - { "SurfacesHighlight" , opt_geometry_color_surfaces_highlight , + { F|O, "SurfacesHighlight" , opt_geometry_color_surfaces_highlight , PACK_COLOR(128, 128, 128, 255), PACK_COLOR(128, 128, 128, 255), PACK_COLOR(0, 0, 0, 255) }, - { "VolumesHighlight" , opt_geometry_color_volumes_highlight , + { F|O, "VolumesHighlight" , opt_geometry_color_volumes_highlight , PACK_COLOR(128, 128, 128, 255), PACK_COLOR(128, 128, 128, 255), PACK_COLOR(0, 0, 0, 255) }, - { "Tangents" , opt_geometry_color_tangents , + { F|O, "Tangents" , opt_geometry_color_tangents , PACK_COLOR(255, 255, 0, 255), PACK_COLOR(255, 255, 0, 255), PACK_COLOR(0, 0, 0, 255) }, - { "Normals" , opt_geometry_color_normals , + { F|O, "Normals" , opt_geometry_color_normals , PACK_COLOR(255, 0, 0, 255), PACK_COLOR(255, 0, 0, 255), PACK_COLOR(0, 0, 0, 255) }, - { NULL , NULL , 0, 0, 0 } + { 0, NULL , NULL , 0, 0, 0 } } ; StringXColor MeshOptions_Color[] = { - { "Points" , opt_mesh_color_points , + { F|O, "Points" , opt_mesh_color_points , PACK_COLOR(0 , 123, 59 , 255), PACK_COLOR(0 , 123, 59 , 255), }, - { "PointsSupp" , opt_mesh_color_points_supp , + { F|O, "PointsSupp" , opt_mesh_color_points_supp , PACK_COLOR(255, 0, 255, 255), PACK_COLOR(255, 0, 255, 255), PACK_COLOR(0, 0, 0, 255) }, - { "Lines" , opt_mesh_color_lines , - PACK_COLOR(0, 255, 0, 255), - PACK_COLOR(0, 255, 0, 255), - PACK_COLOR(0, 0, 0, 255) }, - { "Triangles" , opt_mesh_color_triangles , + { F|O, "Lines" , opt_mesh_color_lines , PACK_COLOR(0, 255, 0, 255), PACK_COLOR(0, 255, 0, 255), PACK_COLOR(0, 0, 0, 255) }, - { "Quadrangles" , opt_mesh_color_quadrangles , - PACK_COLOR(0, 255, 0, 255), - PACK_COLOR(0, 255, 0, 255), - PACK_COLOR(0, 0, 0, 255) }, - { "Tetrahedra" , opt_mesh_color_tetrahedra , + { F|O, "Triangles" , opt_mesh_color_triangles , + PACK_COLOR(153, 143, 255, 255), + PACK_COLOR(153, 143, 255, 255), + PACK_COLOR(255, 255, 255, 255) }, + { F|O, "Quadrangles" , opt_mesh_color_quadrangles , + PACK_COLOR(182, 92, 255, 255), + PACK_COLOR(182, 92, 255, 255), + PACK_COLOR(255, 255, 255, 255) }, + { F|O, "Tetrahedra" , opt_mesh_color_tetrahedra , PACK_COLOR(0, 255, 0, 255), PACK_COLOR(0, 255, 0, 255), - PACK_COLOR(0, 0, 0, 255) }, - { "Hexahedra" , opt_mesh_color_hexahedra , + PACK_COLOR(255, 255, 255, 255) }, + { F|O, "Hexahedra" , opt_mesh_color_hexahedra , PACK_COLOR(128, 255, 0, 255), PACK_COLOR(128, 255, 0, 255), - PACK_COLOR(0, 0, 0, 255) }, - { "Prisms" , opt_mesh_color_prisms , + PACK_COLOR(255, 255, 255, 255) }, + { F|O, "Prisms" , opt_mesh_color_prisms , PACK_COLOR(0, 255, 128, 255), PACK_COLOR(0, 255, 128, 255), - PACK_COLOR(0, 0, 0, 255) }, - { "Pyramids" , opt_mesh_color_pyramid , + PACK_COLOR(255, 255, 255, 255) }, + { F|O, "Pyramids" , opt_mesh_color_pyramid , PACK_COLOR(128, 255, 128, 255), PACK_COLOR(128, 255, 128, 255), - PACK_COLOR(0, 0, 0, 255) }, - { "Tangents" , opt_mesh_color_tangents , + PACK_COLOR(255, 255, 255, 255) }, + { F|O, "Tangents" , opt_mesh_color_tangents , PACK_COLOR(128, 128, 128, 255), PACK_COLOR(128, 128, 128, 255), PACK_COLOR(0, 0, 0, 255) }, - { "Normals" , opt_mesh_color_normals , + { F|O, "Normals" , opt_mesh_color_normals , PACK_COLOR(128, 128, 128, 255), PACK_COLOR(128, 128, 128, 255), PACK_COLOR(0, 0, 0, 255) }, - { "One" , opt_mesh_color_1 , + { F|O, "One" , opt_mesh_color_1 , PACK_COLOR(0 , 82 , 138, 255), PACK_COLOR(0 , 82 , 138, 255), PACK_COLOR(255, 255, 255, 255) }, - { "Two" , opt_mesh_color_2 , + { F|O, "Two" , opt_mesh_color_2 , PACK_COLOR(255, 0 , 0 , 255), PACK_COLOR(255, 0 , 0 , 255), PACK_COLOR(255, 255, 255, 255) }, - { "Three" , opt_mesh_color_3 , + { F|O, "Three" , opt_mesh_color_3 , PACK_COLOR(31 , 110, 171, 255), PACK_COLOR(31 , 110, 171, 255), PACK_COLOR(255, 255, 255, 255) }, - { "Four" , opt_mesh_color_4 , + { F|O, "Four" , opt_mesh_color_4 , PACK_COLOR(255, 255, 0 , 255), PACK_COLOR(255, 255, 0 , 255), PACK_COLOR(255, 255, 255, 255) }, - { "Five" , opt_mesh_color_5 , + { F|O, "Five" , opt_mesh_color_5 , PACK_COLOR(255, 0 , 255, 255), PACK_COLOR(255, 0 , 255, 255), PACK_COLOR(255, 255, 255, 255) }, - { "Six" , opt_mesh_color_6 , + { F|O, "Six" , opt_mesh_color_6 , PACK_COLOR(128, 128, 0 , 255), PACK_COLOR(128, 128, 0 , 255), PACK_COLOR(255, 255, 255, 255) }, - { "Seven" , opt_mesh_color_7 , + { F|O, "Seven" , opt_mesh_color_7 , PACK_COLOR(128, 0 , 255, 255), PACK_COLOR(128, 0 , 255, 255), PACK_COLOR(255, 255, 255, 255) }, - { "Eight" , opt_mesh_color_8 , + { F|O, "Eight" , opt_mesh_color_8 , PACK_COLOR(128, 128, 255, 255), PACK_COLOR(128, 128, 255, 255), PACK_COLOR(255, 255, 255, 255) }, - { "Nine" , opt_mesh_color_9 , + { F|O, "Nine" , opt_mesh_color_9 , PACK_COLOR(128, 128, 255, 255), PACK_COLOR(128, 128, 255, 255), PACK_COLOR(255, 255, 255, 255) }, - { "Ten" , opt_mesh_color_10 , + { F|O, "Ten" , opt_mesh_color_10 , PACK_COLOR(0 , 0 , 255, 255), PACK_COLOR(0 , 0 , 255, 255), PACK_COLOR(255, 255, 255, 255) }, - { NULL , NULL , 0, 0, 0 } + { 0, NULL , NULL , 0, 0, 0 } } ; StringXColor PostProcessingOptions_Color[] = { - { NULL , NULL , 0, 0, 0 } + { 0, NULL , NULL , 0, 0, 0 } } ; StringXColor ViewOptions_Color[] = { - { NULL , NULL , 0, 0, 0 } + { 0, NULL , NULL , 0, 0, 0 } } ; StringXColor PrintOptions_Color[] = { - { NULL , NULL , 0, 0, 0 } + { 0, NULL , NULL , 0, 0, 0 } } ; +#undef S +#undef O +#undef F + #endif diff --git a/Common/Options.cpp b/Common/Options.cpp index d5bfface088d9d1f5e446038401250fece973922..12f8dc07f0da390fc9db0124abbf1dbb9b0c3dc7 100644 --- a/Common/Options.cpp +++ b/Common/Options.cpp @@ -1,4 +1,4 @@ -// $Id: Options.cpp,v 1.1 2001-02-12 17:39:39 geuzaine Exp $ +// $Id: Options.cpp,v 1.2 2001-02-17 22:13:03 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -17,7 +17,30 @@ extern Context_T CTX ; extern GUI *WID ; #endif -#define NOVIEW Msg(WARNING, "View[%d] does not exist", num) +#define GET_VIEW(error_val) \ + Post_View *v; \ + if(!Post_ViewList) \ + v = Post_ViewReference ; \ + else{ \ + if(!(v = (Post_View*)List_Pointer_Test(Post_ViewList, num))){ \ + Msg(WARNING, "View[%d] does not exist", num) ; \ + return (error_val) ; \ + } \ + } + +#if defined(WIN32) && !defined(__CYGWIN__) +#define SLASH "\\" +#else +#define SLASH "/" +#endif + +#define GET_PATH(path_val) \ + char *tmp; \ + if ((tmp = getenv("HOME"))) strcpy(path_val, tmp); \ + else if((tmp = getenv("TMP"))) strcpy(path_val, tmp); \ + else if((tmp = getenv("TEMP"))) strcpy(path_val, tmp); \ + else strcpy(path_val, ""); \ + if(strlen(path_val)) strcat(path_val, SLASH); //******************* Strings *********************************** @@ -25,26 +48,75 @@ char * opt_general_display(OPT_ARGS_STR){ if(action & GMSH_SET) CTX.display = val; return CTX.display; } +char * opt_general_default_filename(OPT_ARGS_STR){ + if(action & GMSH_SET) CTX.default_filename = val; +#ifdef _FLTK + if(WID && (action & GMSH_GUI)) + WID->gen_input[0]->value(CTX.default_filename); +#endif + return CTX.default_filename; +} +char * opt_general_tmp_filename(OPT_ARGS_STR){ + if(action & GMSH_SET) CTX.tmp_filename = val; +#ifdef _FLTK + if(WID && (action & GMSH_GUI)) + WID->gen_input[1]->value(CTX.tmp_filename); +#endif + return CTX.tmp_filename; +} +char * opt_general_error_filename(OPT_ARGS_STR){ + if(action & GMSH_SET) CTX.error_filename = val; +#ifdef _FLTK + if(WID && (action & GMSH_GUI)) + WID->gen_input[2]->value(CTX.error_filename); +#endif + return CTX.error_filename; +} +char * opt_general_session_filename(OPT_ARGS_STR){ + if(action & GMSH_SET){ + CTX.session_filename = val; + GET_PATH(CTX.sessionrc_filename); + strcat(CTX.sessionrc_filename, CTX.session_filename); + } + return CTX.session_filename; +} +char * opt_general_options_filename(OPT_ARGS_STR){ + if(action & GMSH_SET){ + CTX.options_filename = val; + GET_PATH(CTX.optionsrc_filename); + strcat(CTX.optionsrc_filename, CTX.options_filename); + } +#ifdef _FLTK + if(WID && (action & GMSH_GUI)) + WID->gen_input[3]->value(CTX.options_filename); +#endif + return CTX.options_filename; +} char * opt_view_name(OPT_ARGS_STR){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return NULL; } - if(action & GMSH_SET) + GET_VIEW(NULL) ; + if(action & GMSH_SET){ strcpy(v->Name, val); +#ifdef _FLTK + if(WID){ + WID->m_toggle_butt[num]->label(v->Name); + WID->m_toggle_butt[num]->redraw(); + } +#endif + } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)){ WID->view_input[0]->value(v->Name); - WID->m_toggle_butt[num]->label(v->Name); } #endif return v->Name; } char * opt_view_format(OPT_ARGS_STR){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return NULL; } - if(action & GMSH_SET) + GET_VIEW(NULL) ; + if(action & GMSH_SET){ strcpy(v->Format, val); + } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)) WID->view_input[1]->value(v->Format); @@ -52,8 +124,7 @@ char * opt_view_format(OPT_ARGS_STR){ return v->Format; } char * opt_view_filename(OPT_ARGS_STR){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return NULL; } + GET_VIEW(NULL) ; if(action & GMSH_SET) strcpy(v->FileName, val); return v->FileName; @@ -69,13 +140,13 @@ char * opt_print_font(OPT_ARGS_STR){ //******************* Numbers *********************************** -double opt_general_viewport0(OPT_ARGS_NUM){ - if(action & GMSH_SET) CTX.viewport[0] = (int)val; - return CTX.viewport[0]; +double opt_general_fontsize(OPT_ARGS_NUM){ + if(action & GMSH_SET) CTX.fontsize = (int)val; + return CTX.fontsize; } -double opt_general_viewport1(OPT_ARGS_NUM){ - if(action & GMSH_SET) CTX.viewport[1] = (int)val; - return CTX.viewport[1]; +double opt_general_graphics_fontsize(OPT_ARGS_NUM){ + if(action & GMSH_SET) CTX.gl_fontsize = (int)val; + return CTX.gl_fontsize; } double opt_general_viewport2(OPT_ARGS_NUM){ if(action & GMSH_SET) CTX.viewport[2] = (int)val; @@ -93,10 +164,6 @@ double opt_general_graphics_position1(OPT_ARGS_NUM){ if(action & GMSH_SET) CTX.gl_position[1] = (int)val; return CTX.gl_position[1]; } -double opt_general_graphics_fontsize(OPT_ARGS_NUM){ - if(action & GMSH_SET) CTX.gl_fontsize = (int)val; - return CTX.gl_fontsize; -} double opt_general_menu_position0(OPT_ARGS_NUM){ if(action & GMSH_SET) CTX.position[0] = (int)val; return CTX.position[0]; @@ -105,14 +172,42 @@ double opt_general_menu_position1(OPT_ARGS_NUM){ if(action & GMSH_SET) CTX.position[1] = (int)val; return CTX.position[1]; } -double opt_general_menu_fontsize(OPT_ARGS_NUM){ - if(action & GMSH_SET) CTX.fontsize = (int)val; - return CTX.fontsize; +double opt_general_message_position0(OPT_ARGS_NUM){ + if(action & GMSH_SET) CTX.msg_position[0] = (int)val; + return CTX.msg_position[0]; +} +double opt_general_message_position1(OPT_ARGS_NUM){ + if(action & GMSH_SET) CTX.msg_position[1] = (int)val; + return CTX.msg_position[1]; +} +double opt_general_message_size0(OPT_ARGS_NUM){ + if(action & GMSH_SET) CTX.msg_size[0] = (int)val; + return CTX.msg_size[0]; +} +double opt_general_message_size1(OPT_ARGS_NUM){ + if(action & GMSH_SET) CTX.msg_size[1] = (int)val; + return CTX.msg_size[1]; } double opt_general_center_windows(OPT_ARGS_NUM){ if(action & GMSH_SET) CTX.center_windows = (int)val; return CTX.center_windows; } +double opt_general_session_save(OPT_ARGS_NUM){ + if(action & GMSH_SET) CTX.session_save = (int)val; +#ifdef _FLTK + if(WID && (action & GMSH_GUI)) + WID->gen_butt[7]->value(CTX.session_save); +#endif + return CTX.session_save; +} +double opt_general_options_save(OPT_ARGS_NUM){ + if(action & GMSH_SET) CTX.options_save = (int)val; +#ifdef _FLTK + if(WID && (action & GMSH_GUI)) + WID->gen_butt[8]->value(CTX.options_save); +#endif + return CTX.options_save; +} double opt_general_rotation0(OPT_ARGS_NUM){ if(action & GMSH_SET) CTX.r[0] = val; return CTX.r[0]; @@ -177,11 +272,19 @@ double opt_general_shine(OPT_ARGS_NUM){ double opt_general_verbosity(OPT_ARGS_NUM){ if(action & GMSH_SET) CTX.verbosity = (int)val; +#ifdef _FLTK + if(WID && (action & GMSH_GUI)) + WID->gen_value[5]->value(CTX.verbosity); +#endif return CTX.verbosity; } double opt_general_terminal(OPT_ARGS_NUM){ if(action & GMSH_SET) CTX.terminal = (int)val; +#ifdef _FLTK + if(WID && (action & GMSH_GUI)) + WID->gen_butt[6]->value(CTX.terminal); +#endif return CTX.terminal; } double opt_general_orthographic(OPT_ARGS_NUM){ @@ -189,8 +292,8 @@ double opt_general_orthographic(OPT_ARGS_NUM){ CTX.ortho = (int)val; #ifdef _FLTK if(WID && (action & GMSH_GUI)){ - WID->gen_butt[6]->value(CTX.ortho); - WID->gen_butt[7]->value(!CTX.ortho); + WID->gen_butt[9]->value(CTX.ortho); + WID->gen_butt[10]->value(!CTX.ortho); } #endif return CTX.ortho; @@ -244,7 +347,8 @@ double opt_general_color_scheme(OPT_ARGS_NUM){ if(action & GMSH_SET){ CTX.color_scheme = (int)val; if(CTX.color_scheme>2) CTX.color_scheme=0; - Init_Colors(0); + Set_DefaultColorOptions(0, GeneralOptions_Color, CTX.color_scheme); + Set_ColorOptions_GUI(0, GeneralOptions_Color); } #ifdef _FLTK if(WID && (action & GMSH_GUI)) @@ -385,6 +489,14 @@ double opt_general_clip5d(OPT_ARGS_NUM){ if(action & GMSH_SET) CTX.clip_plane[5][3] = val; return CTX.clip_plane[5][3]; } +double opt_general_moving_light(OPT_ARGS_NUM){ + if(action & GMSH_SET) CTX.moving_light = (int)val; +#ifdef _FLTK + if(WID && (action & GMSH_GUI)) + WID->gen_butt[11]->value(CTX.moving_light); +#endif + return CTX.moving_light; +} double opt_general_light0(OPT_ARGS_NUM){ if(action & GMSH_SET) CTX.light[0] = (int)val; return CTX.light[0]; @@ -586,15 +698,17 @@ double opt_geometry_volumes_num(OPT_ARGS_NUM){ #endif return CTX.geom.volumes_num; } -double opt_geometry_hidden(OPT_ARGS_NUM){ - if(action & GMSH_SET) - CTX.geom.hidden = (int)val; - return CTX.geom.hidden; -} -double opt_geometry_shade(OPT_ARGS_NUM){ - if(action & GMSH_SET) - CTX.geom.shade = (int)val; - return CTX.geom.shade; +double opt_geometry_aspect(OPT_ARGS_NUM){ + if(action & GMSH_SET){ + switch((int)val){ + case 1 : CTX.geom.hidden = 1; CTX.geom.shade = 0; break ; + case 2 : CTX.geom.hidden = 1; CTX.geom.shade = 1; break ; + default : CTX.geom.hidden = CTX.geom.shade = 0; break ; + } + } + if(CTX.geom.hidden && !CTX.geom.shade) return 1; + else if(CTX.geom.hidden && CTX.geom.shade) return 2; + else return 0; } double opt_geometry_highlight(OPT_ARGS_NUM){ if(action & GMSH_SET) @@ -611,6 +725,19 @@ double opt_geometry_scaling_factor(OPT_ARGS_NUM){ CTX.geom.scaling_factor = (int)val; return CTX.geom.scaling_factor; } +double opt_geometry_color_scheme(OPT_ARGS_NUM){ + if(action & GMSH_SET){ + CTX.geom.color_scheme = (int)val; + if(CTX.geom.color_scheme>2) CTX.geom.color_scheme=0; + Set_DefaultColorOptions(0, GeometryOptions_Color, CTX.geom.color_scheme); + Set_ColorOptions_GUI(0, GeometryOptions_Color); + } +#ifdef _FLTK + if(WID && (action & GMSH_GUI)) + WID->geo_value[2]->value(CTX.geom.color_scheme); +#endif + return CTX.geom.color_scheme; +} double opt_mesh_quality(OPT_ARGS_NUM){ @@ -763,23 +890,24 @@ double opt_mesh_volumes_num(OPT_ARGS_NUM){ #endif return CTX.mesh.volumes_num; } -double opt_mesh_hidden(OPT_ARGS_NUM){ - if(action & GMSH_SET) - CTX.mesh.hidden = (int)val; -#ifdef _FLTK - if(WID && (action & GMSH_GUI)) - WID->mesh_butt[11]->value(!CTX.mesh.hidden); -#endif - return CTX.mesh.hidden; -} -double opt_mesh_shade(OPT_ARGS_NUM){ - if(action & GMSH_SET) - CTX.mesh.shade = (int)val; +double opt_mesh_aspect(OPT_ARGS_NUM){ + if(action & GMSH_SET){ + switch((int)val){ + case 1 : CTX.mesh.hidden = 1; CTX.mesh.shade = 0; break ; + case 2 : CTX.mesh.hidden = 1; CTX.mesh.shade = 1; break ; + default : CTX.mesh.hidden = CTX.mesh.shade = 0; break ; + } + } #ifdef _FLTK - if(WID && (action & GMSH_GUI)) - WID->mesh_butt[13]->value(CTX.mesh.shade); + if(WID && (action & GMSH_GUI)){ + WID->mesh_butt[11]->value(!CTX.mesh.hidden && !CTX.mesh.shade); + WID->mesh_butt[12]->value(CTX.mesh.hidden && !CTX.mesh.shade); + WID->mesh_butt[13]->value(CTX.mesh.hidden && CTX.mesh.shade); + } #endif - return CTX.mesh.shade; + if(CTX.mesh.hidden && !CTX.mesh.shade) return 1; + else if(CTX.mesh.hidden && CTX.mesh.shade) return 2; + else return 0; } double opt_mesh_format(OPT_ARGS_NUM){ if(action & GMSH_SET) @@ -867,6 +995,28 @@ double opt_mesh_cut_planed(OPT_ARGS_NUM){ CTX.mesh.cut_planed = val; return CTX.mesh.cut_planed; } +double opt_mesh_color_scheme(OPT_ARGS_NUM){ + if(action & GMSH_SET){ + CTX.mesh.color_scheme = (int)val; + if(CTX.mesh.color_scheme>2) CTX.mesh.color_scheme=0; + Set_DefaultColorOptions(0, MeshOptions_Color, CTX.mesh.color_scheme); + Set_ColorOptions_GUI(0, MeshOptions_Color); + } +#ifdef _FLTK + if(WID && (action & GMSH_GUI)) + WID->mesh_value[7]->value(CTX.mesh.color_scheme); +#endif + return CTX.mesh.color_scheme; +} +double opt_mesh_color_carousel(OPT_ARGS_NUM){ + if(action & GMSH_SET) + CTX.mesh.color_carousel = (int)val; +#ifdef _FLTK + if(WID && (action & GMSH_GUI)) + WID->mesh_butt[14]->value(CTX.mesh.color_carousel); +#endif + return CTX.mesh.color_carousel; +} @@ -914,21 +1064,25 @@ double opt_post_nb_views(OPT_ARGS_NUM){ double opt_view_nb_timestep(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } + GET_VIEW(0.) ; if(action & GMSH_SET) v->NbTimeStep = (int)val; #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)) WID->view_value[9]->maximum(v->NbTimeStep-1); + if(WID && (action & GMSH_GUI) && v->NbTimeStep > 1) + WID->g_status_butt[5]->activate(); #endif return v->NbTimeStep; } double opt_view_timestep(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } - if(action & GMSH_SET) + GET_VIEW(0.) ; + if(action & GMSH_SET){ v->TimeStep = (int)val; + if(v->TimeStep > v->NbTimeStep-1 || v->TimeStep < 0) + v->TimeStep = 0 ; + v->Changed = 1; + } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)) WID->view_value[9]->value(v->TimeStep); @@ -936,24 +1090,27 @@ double opt_view_timestep(OPT_ARGS_NUM){ return v->TimeStep; } double opt_view_min(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } - if(action & GMSH_SET) + GET_VIEW(0.) ; + if(action & GMSH_SET){ v->Min = val; + v->Changed = 1; + } return v->Min; } double opt_view_max(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } - if(action & GMSH_SET) + GET_VIEW(0.) ; + if(action & GMSH_SET){ v->Max = val; + v->Changed = 1; + } return v->Max; } double opt_view_custom_min(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } - if(action & GMSH_SET) + GET_VIEW(0.) ; + if(action & GMSH_SET){ v->CustomMin = val; + v->Changed = 1; + } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)){ WID->view_value[0]->value(v->CustomMin); @@ -962,10 +1119,11 @@ double opt_view_custom_min(OPT_ARGS_NUM){ return v->CustomMin; } double opt_view_custom_max(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } - if(action & GMSH_SET) + GET_VIEW(0.) ; + if(action & GMSH_SET){ v->CustomMax = val; + v->Changed = 1; + } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)) WID->view_value[1]->value(v->CustomMax); @@ -973,10 +1131,11 @@ double opt_view_custom_max(OPT_ARGS_NUM){ return v->CustomMax; } double opt_view_offset0(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } - if(action & GMSH_SET) + GET_VIEW(0.) ; + if(action & GMSH_SET){ v->Offset[0] = val; + v->Changed = 1; + } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)) WID->view_value[3]->value(v->Offset[0]); @@ -984,10 +1143,11 @@ double opt_view_offset0(OPT_ARGS_NUM){ return v->Offset[0]; } double opt_view_offset1(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } - if(action & GMSH_SET) + GET_VIEW(0.) ; + if(action & GMSH_SET){ v->Offset[1] = val; + v->Changed = 1; + } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)) WID->view_value[4]->value(v->Offset[1]); @@ -995,10 +1155,11 @@ double opt_view_offset1(OPT_ARGS_NUM){ return v->Offset[1]; } double opt_view_offset2(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } - if(action & GMSH_SET) + GET_VIEW(0.) ; + if(action & GMSH_SET){ v->Offset[2] = val; + v->Changed = 1; + } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)) WID->view_value[5]->value(v->Offset[2]); @@ -1006,10 +1167,11 @@ double opt_view_offset2(OPT_ARGS_NUM){ return v->Offset[2]; } double opt_view_raise0(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } - if(action & GMSH_SET) + GET_VIEW(0.) ; + if(action & GMSH_SET){ v->Raise[0] = val; + v->Changed = 1; + } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)) WID->view_value[6]->value(v->Raise[0]); @@ -1017,10 +1179,11 @@ double opt_view_raise0(OPT_ARGS_NUM){ return v->Raise[0]; } double opt_view_raise1(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } - if(action & GMSH_SET) + GET_VIEW(0.) ; + if(action & GMSH_SET){ v->Raise[1] = val; + v->Changed = 1; + } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)) WID->view_value[7]->value(v->Raise[1]); @@ -1028,10 +1191,11 @@ double opt_view_raise1(OPT_ARGS_NUM){ return v->Raise[1]; } double opt_view_raise2(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } - if(action & GMSH_SET) + GET_VIEW(0.) ; + if(action & GMSH_SET){ v->Raise[2] = val; + v->Changed = 1; + } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)) WID->view_value[8]->value(v->Raise[2]); @@ -1039,10 +1203,11 @@ double opt_view_raise2(OPT_ARGS_NUM){ return v->Raise[2]; } double opt_view_arrow_scale(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } - if(action & GMSH_SET) + GET_VIEW(0.) ; + if(action & GMSH_SET){ v->ArrowScale = val; + v->Changed = 1; + } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)) WID->view_value[10]->value(v->ArrowScale); @@ -1050,36 +1215,43 @@ double opt_view_arrow_scale(OPT_ARGS_NUM){ return v->ArrowScale; } double opt_view_visible(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } - if(action & GMSH_SET) + GET_VIEW(0.) ; + if(action & GMSH_SET){ v->Visible = (int)val; + } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)) WID->m_toggle_butt[num]->value(v->Visible); #endif + Msg(DEBUG1, "View %d", v->Num); + Msg(DEBUG2, " -> Name '%s'", v->Name); + Msg(DEBUG2, " -> FileName '%s'", v->FileName); + Msg(DEBUG2, " -> DuplicateOf %d", v->DuplicateOf); + Msg(DEBUG3, " -> Links %d", v->Links); return v->Visible; } double opt_view_intervals_type(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } - if(action & GMSH_SET) + GET_VIEW(0.) ; + if(action & GMSH_SET){ v->IntervalsType = (int)val; + v->Changed = 1; + } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)){ - WID->view_butt[6]->value(v->IntervalsType==DRAW_POST_ISO); - WID->view_butt[7]->value(v->IntervalsType==DRAW_POST_DISCRETE); - WID->view_butt[8]->value(v->IntervalsType==DRAW_POST_CONTINUOUS); - WID->view_butt[9]->value(v->IntervalsType==DRAW_POST_NUMERIC); + WID->view_butt[3]->value(v->IntervalsType==DRAW_POST_ISO); + WID->view_butt[4]->value(v->IntervalsType==DRAW_POST_DISCRETE); + WID->view_butt[5]->value(v->IntervalsType==DRAW_POST_CONTINUOUS); + WID->view_butt[6]->value(v->IntervalsType==DRAW_POST_NUMERIC); } #endif return v->IntervalsType; } double opt_view_nb_iso(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } - if(action & GMSH_SET) + GET_VIEW(0.) ; + if(action & GMSH_SET){ v->NbIso = (int)val; + v->Changed = 1; + } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)) WID->view_value[2]->value(v->NbIso); @@ -1087,100 +1259,114 @@ double opt_view_nb_iso(OPT_ARGS_NUM){ return v->NbIso; } double opt_view_light(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } - if(action & GMSH_SET) + GET_VIEW(0.) ; + if(action & GMSH_SET){ v->Light = (int)val; + v->Changed = 1; + } +#ifdef _FLTK + if(WID && (action & GMSH_GUI) && (num == WID->view_number)) + WID->view_butt[17]->value(v->Light); +#endif return v->Light; } double opt_view_show_element(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } - if(action & GMSH_SET) + GET_VIEW(0.) ; + if(action & GMSH_SET){ v->ShowElement = (int)val; + v->Changed = 1; + } +#ifdef _FLTK + if(WID && (action & GMSH_GUI) && (num == WID->view_number)) + WID->view_butt[13]->value(v->ShowElement); +#endif return v->ShowElement; } double opt_view_show_time(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } - if(action & GMSH_SET) + GET_VIEW(0.) ; + if(action & GMSH_SET){ v->ShowTime = (int)val; + } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)) - WID->view_butt[1]->value(v->ShowTime); + WID->view_butt[15]->value(v->ShowTime); #endif return v->ShowTime; } double opt_view_show_scale(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } - if(action & GMSH_SET) + GET_VIEW(0.) ; + if(action & GMSH_SET){ v->ShowScale = (int)val; + } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)) - WID->view_butt[0]->value(v->ShowScale); + WID->view_butt[14]->value(v->ShowScale); #endif return v->ShowScale; } double opt_view_transparent_scale(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } - if(action & GMSH_SET) + GET_VIEW(0.) ; + if(action & GMSH_SET){ v->TransparentScale = (int)val; + } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)) - WID->view_butt[2]->value(v->TransparentScale); + WID->view_butt[16]->value(v->TransparentScale); #endif return v->TransparentScale; } double opt_view_scale_type(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } - if(action & GMSH_SET) + GET_VIEW(0.) ; + if(action & GMSH_SET){ v->ScaleType = (int)val; + v->Changed = 1; + } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)){ - WID->view_butt[4]->value(v->ScaleType==DRAW_POST_LINEAR); - WID->view_butt[5]->value(v->ScaleType==DRAW_POST_LOGARITHMIC); + WID->view_butt[1]->value(v->ScaleType==DRAW_POST_LINEAR); + WID->view_butt[2]->value(v->ScaleType==DRAW_POST_LOGARITHMIC); } #endif return v->ScaleType; } double opt_view_range_type(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } - if(action & GMSH_SET) + GET_VIEW(0.) ; + if(action & GMSH_SET){ v->RangeType = (int)val; + v->Changed = 1; + } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)) - WID->view_butt[3]->value(v->RangeType==DRAW_POST_CUSTOM); + WID->view_butt[0]->value(v->RangeType==DRAW_POST_CUSTOM); #endif return v->RangeType; } double opt_view_arrow_type(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } - if(action & GMSH_SET) + GET_VIEW(0.) ; + if(action & GMSH_SET){ v->ArrowType = (int)val; + v->Changed = 1; + } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)){ - WID->view_butt[10]->value(v->ArrowType==DRAW_POST_SEGMENT); - WID->view_butt[11]->value(v->ArrowType==DRAW_POST_ARROW); - WID->view_butt[12]->value(v->ArrowType==DRAW_POST_CONE); - WID->view_butt[13]->value(v->ArrowType==DRAW_POST_DISPLACEMENT); + WID->view_butt[7]->value(v->ArrowType==DRAW_POST_SEGMENT); + WID->view_butt[8]->value(v->ArrowType==DRAW_POST_ARROW); + WID->view_butt[9]->value(v->ArrowType==DRAW_POST_CONE); + WID->view_butt[10]->value(v->ArrowType==DRAW_POST_DISPLACEMENT); } #endif return v->ArrowType; } double opt_view_arrow_location(OPT_ARGS_NUM){ - Post_View *v = (Post_View*)List_Pointer_Test(Post_ViewList, num); - if(!v){ NOVIEW; return 0.; } - if(action & GMSH_SET) + GET_VIEW(0.) ; + if(action & GMSH_SET){ v->ArrowLocation = (int)val; + v->Changed = 1; + } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)){ - WID->view_butt[14]->value(v->ArrowLocation==DRAW_POST_LOCATE_COG); - WID->view_butt[15]->value(v->ArrowLocation==DRAW_POST_LOCATE_VERTEX); + WID->view_butt[11]->value(v->ArrowLocation==DRAW_POST_LOCATE_COG); + WID->view_butt[12]->value(v->ArrowLocation==DRAW_POST_LOCATE_VERTEX); } #endif return v->ArrowLocation; @@ -1231,204 +1417,339 @@ double opt_print_font_size(OPT_ARGS_NUM){ //******************* Colors *********************************** +#ifdef _FLTK +#define CCC(col,but) \ + if(WID && (action & GMSH_GUI)){ \ + Fl_Color c = fl_color_cube(UNPACK_RED(col)*FL_NUM_RED/256, \ + UNPACK_GREEN(col)*FL_NUM_GREEN/256, \ + UNPACK_BLUE(col)*FL_NUM_BLUE/256); \ + (but)->color(c); \ + (but)->labelcolor(contrast(FL_BLACK,c)); \ + (but)->redraw(); \ + } +#endif unsigned int opt_general_color_background(OPT_ARGS_COL){ - if(action & GMSH_SET) + if(action & GMSH_SET){ CTX.color.bg = val; +#ifdef _FLTK + if(WID) WID->view_colorbar_window->redraw(); +#endif + } +#ifdef _FLTK + CCC(CTX.color.bg,WID->gen_col[0]); +#endif return CTX.color.bg; } unsigned int opt_general_color_foreground(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.fg = val; +#ifdef _FLTK + CCC(CTX.color.fg,WID->gen_col[1]); +#endif return CTX.color.fg; } unsigned int opt_general_color_text(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.text = val; +#ifdef _FLTK + CCC(CTX.color.text,WID->gen_col[2]); +#endif return CTX.color.text; } unsigned int opt_general_color_axes(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.axes = val; +#ifdef _FLTK + CCC(CTX.color.axes,WID->gen_col[3]); +#endif return CTX.color.axes; } unsigned int opt_general_color_small_axes(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.small_axes = val; +#ifdef _FLTK + CCC(CTX.color.small_axes,WID->gen_col[4]); +#endif return CTX.color.small_axes; } unsigned int opt_geometry_color_points(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.geom.point = val; +#ifdef _FLTK + CCC(CTX.color.geom.point,WID->geo_col[0]); +#endif return CTX.color.geom.point; } unsigned int opt_geometry_color_lines(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.geom.line = val; +#ifdef _FLTK + CCC(CTX.color.geom.line,WID->geo_col[1]); +#endif return CTX.color.geom.line; } unsigned int opt_geometry_color_surfaces(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.geom.surface = val; +#ifdef _FLTK + CCC(CTX.color.geom.surface,WID->geo_col[2]); +#endif return CTX.color.geom.surface; } unsigned int opt_geometry_color_volumes(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.geom.volume = val; +#ifdef _FLTK + CCC(CTX.color.geom.volume,WID->geo_col[3]); +#endif return CTX.color.geom.volume; } unsigned int opt_geometry_color_points_select(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.geom.point_sel = val; +#ifdef _FLTK + CCC(CTX.color.geom.point_sel,WID->geo_col[4]); +#endif return CTX.color.geom.point_sel; } unsigned int opt_geometry_color_lines_select(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.geom.line_sel = val; +#ifdef _FLTK + CCC(CTX.color.geom.line_sel,WID->geo_col[5]); +#endif return CTX.color.geom.line_sel; } unsigned int opt_geometry_color_surfaces_select(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.geom.surface_sel = val; +#ifdef _FLTK + CCC(CTX.color.geom.surface_sel,WID->geo_col[6]); +#endif return CTX.color.geom.surface_sel; } unsigned int opt_geometry_color_volumes_select(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.geom.volume_sel = val; +#ifdef _FLTK + CCC(CTX.color.geom.volume_sel,WID->geo_col[7]); +#endif return CTX.color.geom.volume_sel; } unsigned int opt_geometry_color_points_highlight(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.geom.point_hlt = val; +#ifdef _FLTK + CCC(CTX.color.geom.point_hlt,WID->geo_col[8]); +#endif return CTX.color.geom.point_hlt; } unsigned int opt_geometry_color_lines_highlight(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.geom.line_hlt = val; +#ifdef _FLTK + CCC(CTX.color.geom.line_hlt,WID->geo_col[9]); +#endif return CTX.color.geom.line_hlt; } unsigned int opt_geometry_color_surfaces_highlight(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.geom.surface_hlt = val; +#ifdef _FLTK + CCC(CTX.color.geom.surface_hlt,WID->geo_col[10]); +#endif return CTX.color.geom.surface_hlt; } unsigned int opt_geometry_color_volumes_highlight(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.geom.volume_hlt = val; +#ifdef _FLTK + CCC(CTX.color.geom.volume_hlt,WID->geo_col[11]); +#endif return CTX.color.geom.volume_hlt; } unsigned int opt_geometry_color_tangents(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.geom.tangents = val; +#ifdef _FLTK + CCC(CTX.color.geom.tangents,WID->geo_col[12]); +#endif return CTX.color.geom.tangents; } unsigned int opt_geometry_color_normals(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.geom.normals = val; +#ifdef _FLTK + CCC(CTX.color.geom.normals,WID->geo_col[13]); +#endif return CTX.color.geom.normals; } unsigned int opt_mesh_color_points(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.mesh.vertex = val; +#ifdef _FLTK + CCC(CTX.color.mesh.vertex,WID->mesh_col[0]); +#endif return CTX.color.mesh.vertex; } unsigned int opt_mesh_color_points_supp(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.mesh.vertex_supp = val; +#ifdef _FLTK + CCC(CTX.color.mesh.vertex_supp,WID->mesh_col[1]); +#endif return CTX.color.mesh.vertex_supp; } unsigned int opt_mesh_color_lines(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.mesh.line = val; +#ifdef _FLTK + CCC(CTX.color.mesh.line,WID->mesh_col[2]); +#endif return CTX.color.mesh.line; } unsigned int opt_mesh_color_triangles(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.mesh.triangle = val; +#ifdef _FLTK + CCC(CTX.color.mesh.triangle,WID->mesh_col[3]); +#endif return CTX.color.mesh.triangle; } unsigned int opt_mesh_color_quadrangles(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.mesh.quadrangle = val; +#ifdef _FLTK + CCC(CTX.color.mesh.quadrangle,WID->mesh_col[4]); +#endif return CTX.color.mesh.quadrangle; } unsigned int opt_mesh_color_tetrahedra(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.mesh.tetrahedron = val; +#ifdef _FLTK + CCC(CTX.color.mesh.tetrahedron,WID->mesh_col[5]); +#endif return CTX.color.mesh.tetrahedron; } unsigned int opt_mesh_color_hexahedra(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.mesh.hexahedron = val; +#ifdef _FLTK + CCC(CTX.color.mesh.hexahedron,WID->mesh_col[6]); +#endif return CTX.color.mesh.hexahedron; } unsigned int opt_mesh_color_prisms(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.mesh.prism = val; +#ifdef _FLTK + CCC(CTX.color.mesh.prism,WID->mesh_col[7]); +#endif return CTX.color.mesh.prism; } unsigned int opt_mesh_color_pyramid(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.mesh.pyramid = val; +#ifdef _FLTK + CCC(CTX.color.mesh.pyramid,WID->mesh_col[8]); +#endif return CTX.color.mesh.pyramid; } unsigned int opt_mesh_color_tangents(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.mesh.tangents = val; +#ifdef _FLTK + CCC(CTX.color.mesh.tangents,WID->mesh_col[9]); +#endif return CTX.color.mesh.tangents; } unsigned int opt_mesh_color_normals(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.mesh.normals = val; +#ifdef _FLTK + CCC(CTX.color.mesh.normals,WID->mesh_col[10]); +#endif return CTX.color.mesh.normals; } unsigned int opt_mesh_color_1(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.mesh.carousel[0] = val; +#ifdef _FLTK + CCC(CTX.color.mesh.carousel[0],WID->mesh_col[11]); +#endif return CTX.color.mesh.carousel[0]; } unsigned int opt_mesh_color_2(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.mesh.carousel[1] = val; +#ifdef _FLTK + CCC(CTX.color.mesh.carousel[1],WID->mesh_col[12]); +#endif return CTX.color.mesh.carousel[1]; } unsigned int opt_mesh_color_3(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.mesh.carousel[2] = val; +#ifdef _FLTK + CCC(CTX.color.mesh.carousel[2],WID->mesh_col[13]); +#endif return CTX.color.mesh.carousel[2]; } unsigned int opt_mesh_color_4(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.mesh.carousel[3] = val; +#ifdef _FLTK + CCC(CTX.color.mesh.carousel[3],WID->mesh_col[14]); +#endif return CTX.color.mesh.carousel[3]; } unsigned int opt_mesh_color_5(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.mesh.carousel[4] = val; +#ifdef _FLTK + CCC(CTX.color.mesh.carousel[4],WID->mesh_col[15]); +#endif return CTX.color.mesh.carousel[4]; } unsigned int opt_mesh_color_6(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.mesh.carousel[5] = val; +#ifdef _FLTK + CCC(CTX.color.mesh.carousel[5],WID->mesh_col[16]); +#endif return CTX.color.mesh.carousel[5]; } unsigned int opt_mesh_color_7(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.mesh.carousel[6] = val; +#ifdef _FLTK + CCC(CTX.color.mesh.carousel[6],WID->mesh_col[17]); +#endif return CTX.color.mesh.carousel[6]; } unsigned int opt_mesh_color_8(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.mesh.carousel[7] = val; +#ifdef _FLTK + CCC(CTX.color.mesh.carousel[7],WID->mesh_col[18]); +#endif return CTX.color.mesh.carousel[7]; } unsigned int opt_mesh_color_9(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.mesh.carousel[8] = val; +#ifdef _FLTK + CCC(CTX.color.mesh.carousel[8],WID->mesh_col[19]); +#endif return CTX.color.mesh.carousel[8]; } unsigned int opt_mesh_color_10(OPT_ARGS_COL){ if(action & GMSH_SET) CTX.color.mesh.carousel[9] = val; +#ifdef _FLTK + CCC(CTX.color.mesh.carousel[9],WID->mesh_col[20]); +#endif return CTX.color.mesh.carousel[9]; } diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp index 1d9ee8328cb604ff442387239db4416733823084..d11e324aa153d0bcdcd2814a7f6baf6f86c97f05 100644 --- a/Fltk/Callbacks.cpp +++ b/Fltk/Callbacks.cpp @@ -1,4 +1,4 @@ -// $Id: Callbacks.cpp,v 1.30 2001-02-16 20:16:40 remacle Exp $ +// $Id: Callbacks.cpp,v 1.31 2001-02-17 22:02:17 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -11,6 +11,7 @@ #include "Visibility.h" #include "CreateFile.h" #include "OpenFile.h" +#include "GetOptions.h" #include "Context.h" #include "Options.h" #include "GUI.h" @@ -27,82 +28,11 @@ extern Context_T CTX; int AddViewInUI(int i, char *Name, int Num){ if(i > NB_BUTT_MAX -1) return 1; - if(WID->get_context() == 2) + if(WID && (WID->get_context() == 2)) WID->set_context(menu_post,0); return 0; } -void MarkAllViewsChanged(int action){ - int i; - Post_View *v; - - for(i = 0 ; i< List_Nbr(Post_ViewList) ; i++){ - v = (Post_View*)List_Pointer(Post_ViewList, i); - switch(action){ - case 1: // toggle drawing mode - if(v->IntervalsType == DRAW_POST_ISO) - v->IntervalsType = DRAW_POST_DISCRETE ; - else if(v->IntervalsType == DRAW_POST_DISCRETE) - v->IntervalsType = DRAW_POST_CONTINUOUS ; - else - v->IntervalsType = DRAW_POST_ISO ; - break; - case 2: // time step++ - if(v->TimeStep < v->NbTimeStep-1) - v->TimeStep++ ; - else - v->TimeStep = 0 ; - break; - case 3: // time step-- - if(v->TimeStep > 0) - v->TimeStep-- ; - else - v->TimeStep = v->NbTimeStep-1 ; - } - v->Changed = 1 ; - } -} - -#ifdef _USETHREADS - -#include <pthread.h> - -int MeshDim ; -pthread_t MeshThread ; - -void* StartMeshThread(void * data){ - pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); - mai3d(&M,MeshDim); - Msg(STATUS3N,"Ready"); - CTX.mesh.draw = 1; - CTX.threads_lock = 0; - XtSetSensitive(WID.G.Butt[6], 0); - Draw(); - pthread_exit(NULL); - return NULL ; -} - -void CancelMeshThread(void){ - if(CTX.threads){ - pthread_cancel(MeshThread); - CTX.mesh.draw = 1; - CTX.threads_lock = 0; - XtSetSensitive(WID.G.Butt[6], 0); - Msg(STATUS2,"Mesh Aborted"); - mesh_event_handler(MESH_DELETE); - Msg(STATUS3N,"Ready"); - Draw(); - } -} - -#else - -void CancelMeshThread(void){ - -} - -#endif - int SetGlobalShortcut(int event){ return WID->global_shortcuts(event); } @@ -142,8 +72,6 @@ int SelectContour (int type, int num, List_T *Liste1){ return k; } -/////////////////////////////////////////////////////////////////////////////// - // Common callbacks @@ -151,6 +79,17 @@ void cancel_cb(CALLBACK_ARGS){ if(data) ((Fl_Window*)data)->hide(); } +void color_cb(CALLBACK_ARGS){ + unsigned int (*fct) (int, int, unsigned int); + fct = (unsigned int (*) (int, int, unsigned int))data ; + uchar r = UNPACK_RED(fct(0,GMSH_GET,0)) ; + uchar g = UNPACK_GREEN(fct(0,GMSH_GET,0)) ; + uchar b = UNPACK_BLUE(fct(0,GMSH_GET,0)) ; + if (fl_color_chooser("Color Chooser",r,g,b)) + fct(0,GMSH_SET|GMSH_GUI,PACK_COLOR(r,g,b,255)); + Draw(); +} + // Graphical window void status_xyz1p_cb(CALLBACK_ARGS){ @@ -184,7 +123,8 @@ void status_xyz1p_cb(CALLBACK_ARGS){ Draw(); break; case 4 : - Print_Context(0,NULL); + Print_Context(0,GMSH_FULLRC,NULL); + WID->create_message_window(); break ; } } @@ -192,6 +132,7 @@ void status_xyz1p_cb(CALLBACK_ARGS){ static int stop_anim ; void status_play_cb(CALLBACK_ARGS){ static long anim_time ; + int i; WID->set_anim(0); stop_anim = 0 ; anim_time = GetTime(); @@ -199,7 +140,8 @@ void status_play_cb(CALLBACK_ARGS){ if(stop_anim) break ; if(GetTime() - anim_time > 1.e6*CTX.post.anim_delay){ anim_time = GetTime(); - MarkAllViewsChanged(2); + for(i=0 ; i<List_Nbr(Post_ViewList) ; i++) + opt_view_timestep(i, GMSH_SET|GMSH_GUI, opt_view_timestep(i, GMSH_GET, 0)+1); Draw(); } WID->check(); @@ -212,33 +154,41 @@ void status_pause_cb(CALLBACK_ARGS){ } void status_cancel_cb(CALLBACK_ARGS){ - CancelMeshThread(); } // File Menu void file_open_cb(CALLBACK_ARGS) { char *newfile; + int n = List_Nbr(Post_ViewList); newfile = fl_file_chooser("Open File", "*.geo", NULL); if (newfile != NULL) { OpenProblem(newfile); Draw(); } + if(n != List_Nbr(Post_ViewList)) + WID->set_context(menu_post, 0); } void file_merge_cb(CALLBACK_ARGS) { char *newfile; + int n = List_Nbr(Post_ViewList); newfile = fl_file_chooser("Merge File", "*", NULL); if (newfile != NULL) { MergeProblem(newfile); Draw(); } + if(n != List_Nbr(Post_ViewList)) + WID->set_context(menu_post, 0); } -void file_save_cb(CALLBACK_ARGS) { +void file_save_mesh_cb(CALLBACK_ARGS) { Print_Mesh(&M, NULL, CTX.mesh.format); } +void file_save_options_cb(CALLBACK_ARGS) { + Print_Context(0,GMSH_OPTIONSRC, CTX.optionsrc_filename); +} void file_save_as_auto_cb(CALLBACK_ARGS) { char *newfile; @@ -255,7 +205,7 @@ void file_save_as_geo_cb(CALLBACK_ARGS) { void file_save_as_geo_options_cb(CALLBACK_ARGS) { char *newfile; if((newfile = fl_file_chooser("Save Options File", "*", NULL))) - Print_Context(0,newfile); + Print_Context(0,GMSH_FULLRC, newfile); } void file_save_as_msh_cb(CALLBACK_ARGS) { @@ -328,28 +278,6 @@ void file_save_as_yuv_cb(CALLBACK_ARGS) { CreateOutputFile(newfile, CTX.print.format = FORMAT_YUV); } -static int RELOAD_ALL_VIEWS = 0 ; - -void file_reload_all_views_cb(CALLBACK_ARGS) { - if(!Post_ViewList) return; - RELOAD_ALL_VIEWS = 1; - for(int i = 0 ; i<List_Nbr(Post_ViewList) ; i++) - view_reload_cb(NULL, (void *)i); - RELOAD_ALL_VIEWS = 0; - Draw(); -} - -static int REMOVE_ALL_VIEWS = 0 ; - -void file_remove_all_views_cb(CALLBACK_ARGS) { - if(!Post_ViewList) return; - REMOVE_ALL_VIEWS = 1; - while(List_Nbr(Post_ViewList)) - view_remove_cb(NULL, (void*)0); - REMOVE_ALL_VIEWS = 0; - Draw(); -} - void file_quit_cb(CALLBACK_ARGS) { Exit(0); } @@ -359,6 +287,10 @@ void file_quit_cb(CALLBACK_ARGS) { void opt_general_cb(CALLBACK_ARGS) { WID->create_general_options_window(); } +void opt_general_color_scheme_cb(CALLBACK_ARGS){ + opt_general_color_scheme(0,GMSH_SET, WID->gen_value[0]->value()); + Draw(); +} void opt_general_ok_cb(CALLBACK_ARGS){ opt_general_axes(0, GMSH_SET, WID->gen_butt[0]->value()); opt_general_small_axes(0, GMSH_SET, WID->gen_butt[1]->value()); @@ -366,13 +298,22 @@ void opt_general_ok_cb(CALLBACK_ARGS){ opt_general_display_lists(0, GMSH_SET, WID->gen_butt[3]->value()); opt_general_alpha_blending(0, GMSH_SET, WID->gen_butt[4]->value()); opt_general_trackball(0, GMSH_SET, WID->gen_butt[5]->value()); - opt_general_orthographic(0, GMSH_SET, WID->gen_butt[6]->value()); + opt_general_terminal(0, GMSH_SET, WID->gen_butt[6]->value()); + opt_general_session_save(0, GMSH_SET, WID->gen_butt[7]->value()); + opt_general_options_save(0, GMSH_SET, WID->gen_butt[8]->value()); + opt_general_orthographic(0, GMSH_SET, WID->gen_butt[9]->value()); + opt_general_moving_light(0, GMSH_SET, WID->gen_butt[11]->value()); - opt_general_color_scheme(0,GMSH_SET, WID->gen_value[0]->value()); opt_general_shine(0, GMSH_SET, WID->gen_value[1]->value()); opt_general_light00(0, GMSH_SET, WID->gen_value[2]->value()); opt_general_light01(0, GMSH_SET, WID->gen_value[3]->value()); opt_general_light02(0, GMSH_SET, WID->gen_value[4]->value()); + opt_general_verbosity(0, GMSH_SET, WID->gen_value[5]->value()); + + opt_general_default_filename(0, GMSH_SET, (char*)WID->gen_input[0]->value()); + opt_general_tmp_filename(0, GMSH_SET, (char*)WID->gen_input[1]->value()); + opt_general_error_filename(0, GMSH_SET, (char*)WID->gen_input[2]->value()); + opt_general_options_filename(0, GMSH_SET, (char*)WID->gen_input[3]->value()); Draw(); } @@ -394,6 +335,10 @@ void opt_geometry_show_by_entity_num_cb(CALLBACK_ARGS) { } Draw(); } +void opt_geometry_color_scheme_cb(CALLBACK_ARGS){ + opt_geometry_color_scheme(0,GMSH_SET, WID->geo_value[2]->value()); + Draw(); +} void opt_geometry_ok_cb(CALLBACK_ARGS) { opt_geometry_points(0, GMSH_SET, WID->geo_butt[0]->value()); opt_geometry_lines(0, GMSH_SET, WID->geo_butt[1]->value()); @@ -417,6 +362,10 @@ void opt_mesh_cb(CALLBACK_ARGS) { void opt_mesh_show_by_entity_num_cb(CALLBACK_ARGS) { opt_geometry_show_by_entity_num_cb(w,data); } +void opt_mesh_color_scheme_cb(CALLBACK_ARGS){ + opt_mesh_color_scheme(0,GMSH_SET, WID->mesh_value[7]->value()); + Draw(); +} void opt_mesh_ok_cb(CALLBACK_ARGS) { opt_mesh_degree(0, GMSH_SET, WID->mesh_butt[0]->value()?2:1); opt_mesh_interactive(0, GMSH_SET, WID->mesh_butt[1]->value()); @@ -429,8 +378,11 @@ void opt_mesh_ok_cb(CALLBACK_ARGS) { opt_mesh_lines_num(0, GMSH_SET, WID->mesh_butt[8]->value()); opt_mesh_surfaces_num(0, GMSH_SET, WID->mesh_butt[9]->value()); opt_mesh_volumes_num(0, GMSH_SET, WID->mesh_butt[10]->value()); - opt_mesh_hidden(0, GMSH_SET, !WID->mesh_butt[11]->value()); - opt_mesh_shade(0, GMSH_SET, WID->mesh_butt[13]->value()); + opt_mesh_aspect(0, GMSH_SET, + WID->mesh_butt[11]->value()?0: + WID->mesh_butt[12]->value()?1: + 2); + opt_mesh_color_carousel(0, GMSH_SET, WID->mesh_butt[14]->value()); opt_mesh_nb_smoothing(0, GMSH_SET, WID->mesh_value[0]->value()); opt_mesh_scaling_factor(0, GMSH_SET, WID->mesh_value[1]->value()); @@ -470,16 +422,89 @@ void opt_statistics_update_cb(CALLBACK_ARGS) { void opt_message_cb(CALLBACK_ARGS) { WID->create_message_window(); } +void opt_message_clear_cb(CALLBACK_ARGS) { + WID->clear_message(); +} void opt_message_save_cb(CALLBACK_ARGS) { char *newfile; - if((newfile = fl_file_chooser("Save Log", "*", NULL))) + if((newfile = fl_file_chooser("Save Messages", "*", NULL))) WID->save_message(newfile); } // Help Menu void help_short_cb(CALLBACK_ARGS){ - WID->create_help_window(); + Msg(DIRECT, ""); + Msg(DIRECT, "Mouse:"); + Msg(DIRECT, ""); + Msg(DIRECT, " move - highlight the elementary geometrical entity"); + Msg(DIRECT, " currently under the mouse pointer and display"); + Msg(DIRECT, " its properties in the status bar"); + Msg(DIRECT, " - size a rubber zoom started with (Ctrl+mouse1)"); + Msg(DIRECT, " mouse1 - rotate"); + Msg(DIRECT, " - accept a rubber zoom started by Ctrl+mouse1"); + Msg(DIRECT, " Ctrl+mouse1 start (anisotropic) rubber zoom"); + Msg(DIRECT, " Shift+mouse1 - zoom (isotropic)"); + Msg(DIRECT, " - cancel a rubber zoom"); + Msg(DIRECT, " mouse2 same as Shift+mouse1"); + Msg(DIRECT, " Ctrl+mouse2 orthogonalize display"); + Msg(DIRECT, " mouse3 - pan"); + Msg(DIRECT, " - cancel a rubber zoom"); + Msg(DIRECT, " - pop up menu on module name"); + Msg(DIRECT, " - pop up menu on post-processing view button"); + Msg(DIRECT, " Ctrl+mouse3 reset viewpoint to default"); + Msg(DIRECT, ""); + Msg(DIRECT, "Menu bar shortcuts:"); + Msg(DIRECT, ""); + Msg(DIRECT, " g go to geometry module"); + Msg(DIRECT, " Shift+g show geometry options"); + Msg(DIRECT, " Shift+i show statistics window"); + Msg(DIRECT, " m go to mesh module"); + Msg(DIRECT, " Shift+m show mesh options"); + Msg(DIRECT, " Ctrl+m merge file"); + Msg(DIRECT, " Shift+o show general options"); + Msg(DIRECT, " Ctrl+o open file"); + Msg(DIRECT, " p go to post processor module"); + Msg(DIRECT, " Shift+p show post-processing general options"); + Msg(DIRECT, " Ctrl+p save file by extension"); + Msg(DIRECT, " Ctrl+q quit"); + Msg(DIRECT, " Ctrl+s save mesh"); + Msg(DIRECT, ""); + Msg(DIRECT, "Other shortcuts"); + Msg(DIRECT, ""); + Msg(DIRECT, " 0 or Esc reload geometry input file"); + Msg(DIRECT, " 1 or F1 mesh curves"); + Msg(DIRECT, " 2 or F2 mesh surfaces"); + Msg(DIRECT, " 3 or F3 mesh volumes"); + Msg(DIRECT, " Alt+a hide/show small axes"); + Msg(DIRECT, " Alt+Shift+a hide/show big moving axes"); + Msg(DIRECT, " Alt+b hide/show all post processing scales"); + Msg(DIRECT, " Alt+c alternate between predefined color schemes"); + Msg(DIRECT, " Alt+d alternate between mesh wire frame, hidden lines and shading modes"); + Msg(DIRECT, " Alt+f toggle redraw mode (fast/full)"); + Msg(DIRECT, " Alt+l hide/show geometry lines"); + Msg(DIRECT, " Alt+Shift+l hide/show mesh lines"); + Msg(DIRECT, " Alt+m toggle visibility of all mesh entities"); + Msg(DIRECT, " Alt+o change projection mode"); + Msg(DIRECT, " Alt+p hide/show geometry points"); + Msg(DIRECT, " Alt+Shift+p hide/show mesh points"); + Msg(DIRECT, " s increase animation delay"); + Msg(DIRECT, " Shift+s decrease animation delay"); + Msg(DIRECT, " Alt+s hide/show geometry surfaces"); + Msg(DIRECT, " Alt+Shift+s hide/show mesh surfaces"); + Msg(DIRECT, " Alt+t alternate intervals mode for all post-processing views"); + Msg(DIRECT, " Alt+v hide/show geometry volumes"); + Msg(DIRECT, " Alt+Shift+v hide/show mesh volumes"); + Msg(DIRECT, " Alt+x set X view"); + Msg(DIRECT, " Alt+y set Y view"); + Msg(DIRECT, " Alt+z set Z view"); + Msg(DIRECT, ""); + WID->create_message_window(); +} +void help_command_line_cb(CALLBACK_ARGS){ + Msg(DIRECT, ""); + Print_Options("gmsh"); + WID->create_message_window(); } void help_about_cb(CALLBACK_ARGS){ WID->create_about_window(); @@ -993,41 +1018,17 @@ void mesh_define_cb(CALLBACK_ARGS){ WID->set_context(menu_mesh_define, 0); } void mesh_1d_cb(CALLBACK_ARGS){ -#ifdef _USETHREADS - if(CTX.threads){ - XtSetSensitive(WID.G.Butt[6], 1); - CTX.mesh.draw = 0; CTX.threads_lock = 1 ; MeshDim = 1 ; - pthread_create(&MeshThread, NULL, StartMeshThread, NULL); - } - else -#endif - mai3d(&M, 1); + mai3d(&M, 1); Draw(); Msg(STATUS3N,"Ready"); } void mesh_2d_cb(CALLBACK_ARGS){ -#ifdef _USETHREADS - if(CTX.threads){ - XtSetSensitive(WID.G.Butt[6], 1); - CTX.mesh.draw = 0; CTX.threads_lock = 1 ; MeshDim = 2 ; - pthread_create(&MeshThread, NULL, StartMeshThread, NULL); - } - else -#endif - mai3d(&M, 2); + mai3d(&M, 2); Draw(); Msg(STATUS3N,"Ready"); } void mesh_3d_cb(CALLBACK_ARGS){ -#ifdef _USETHREADS - if(CTX.threads){ - XtSetSensitive(WID.G.Butt[6], 1); - CTX.mesh.draw = 0; CTX.threads_lock = 1 ; MeshDim = 3 ; - pthread_create(&MeshThread, NULL, StartMeshThread, NULL); - } - else -#endif - mai3d(&M, 3); + mai3d(&M, 3); Draw(); Msg(STATUS3N,"Ready"); } @@ -1195,18 +1196,18 @@ void mesh_define_transfinite_volume_cb(CALLBACK_ARGS){ // Dynamic Post Menus void view_toggle_cb(CALLBACK_ARGS){ - if(!Post_ViewList) return; - - Post_View *v = (Post_View*)List_Pointer(Post_ViewList,(int)data); + opt_view_visible((int)data, GMSH_SET, WID->m_toggle_butt[(int)data]->value()); + Draw(); +} - Msg(DEBUG1, "View %d", v->Num); - Msg(DEBUG2, " -> Name '%s'", v->Name); - Msg(DEBUG2, " -> FileName '%s'", v->FileName); - Msg(DEBUG2, " -> DuplicateOf %d", v->DuplicateOf); - Msg(DEBUG3, " -> Links %d", v->Links); +static int RELOAD_ALL_VIEWS = 0 ; - v->Visible = !v->Visible; - +void view_reload_all_cb(CALLBACK_ARGS) { + if(!Post_ViewList) return; + RELOAD_ALL_VIEWS = 1; + for(int i = 0 ; i<List_Nbr(Post_ViewList) ; i++) + view_reload_cb(NULL, (void *)i); + RELOAD_ALL_VIEWS = 0; Draw(); } @@ -1233,14 +1234,28 @@ void view_reload_cb(CALLBACK_ARGS){ Draw(); } +static int REMOVE_ALL_VIEWS = 0 ; + +void view_remove_all_cb(CALLBACK_ARGS) { + if(!Post_ViewList) return; + REMOVE_ALL_VIEWS = 1; + while(List_Nbr(Post_ViewList)) + view_remove_cb(NULL, (void*)0); + REMOVE_ALL_VIEWS = 0; + Draw(); +} + void view_remove_cb(CALLBACK_ARGS){ - Post_View *v = (Post_View*)List_Pointer(Post_ViewList,(int)data); - FreeView(v); + int i, play=0; - if(!List_Suppress(Post_ViewList, v, fcmpPostViewNum)) - Msg(GERROR, "Could Not Suppress View from List"); + FreeView((int)data); - CTX.post.nb_views = List_Nbr(Post_ViewList); + for(i=0 ; i<List_Nbr(Post_ViewList) ; i++) + if(((Post_View*)List_Pointer(Post_ViewList,i))->NbTimeStep > 1){ + play = 1 ; + break ; + } + if(!play) WID->g_status_butt[5]->deactivate(); if(WID->get_context() == 2) WID->set_context(menu_post, 0); @@ -1249,12 +1264,24 @@ void view_remove_cb(CALLBACK_ARGS){ Draw(); } -void view_duplicate_cb(CALLBACK_ARGS){ +void view_save_ascii_cb(CALLBACK_ARGS){ + char *newfile; + if((newfile = fl_file_chooser("Save View in ASCII Format", "*", NULL))) + Write_View(0, (Post_View*)List_Pointer(Post_ViewList,(int)data), newfile); +} + +void view_save_binary_cb(CALLBACK_ARGS){ + char *newfile; + if((newfile = fl_file_chooser("Save View in Binary Format", "*", NULL))) + Write_View(1, (Post_View*)List_Pointer(Post_ViewList,(int)data), newfile); +} + +static void _duplicate_view(int num, int options){ Post_View v, *v1, *v2, *v3 ; if(!Post_ViewList) return; - v1 = (Post_View*)List_Pointer(Post_ViewList,(int)data); + v1 = (Post_View*)List_Pointer(Post_ViewList,num); BeginView(0, 0); EndView(0, 0, v1->FileName, v1->Name); @@ -1295,39 +1322,23 @@ void view_duplicate_cb(CALLBACK_ARGS){ v2->Max = v1->Max; v2->NbTimeStep = v1->NbTimeStep; - CopyViewOptions(v1, v2); + if(options) CopyViewOptions(v1, v2); AddViewInUI(List_Nbr(Post_ViewList), v2->Name, v2->Num); Draw(); } - -#define STARTVIEWMOD \ - Post_View *v; \ - int i; \ - for(i=0 ; i<List_Nbr(Post_ViewList) ; i++){ \ - v = (Post_View*)List_Pointer(Post_ViewList, i); \ - if(CTX.post.link == 2 || \ - (CTX.post.link == 1 && v->Visible) || \ - (CTX.post.link == 0 && i == WID->view_number)){ - -#define ENDVIEWMOD \ - } \ - } - -void view_lighting_cb(CALLBACK_ARGS){ - STARTVIEWMOD - v->Light = !v->Light; - v->Changed = 1; - ENDVIEWMOD - Draw() ; +void view_duplicate_cb(CALLBACK_ARGS){ + _duplicate_view((int)data,0); } -void view_elements_cb(CALLBACK_ARGS){ - Post_View *v = (Post_View*)List_Pointer(Post_ViewList,(int)data); - v->ShowElement = !v->ShowElement; - v->Changed = 1; - Draw() ; +void view_duplicate_with_options_cb(CALLBACK_ARGS){ + _duplicate_view((int)data,1); } + void view_applybgmesh_cb(CALLBACK_ARGS){ Post_View *v = (Post_View*)List_Pointer(Post_ViewList,(int)data); + if(!v->ScalarOnly){ + Msg(GERROR, "Background mesh generation impossible with non-scalar view"); + return; + } BGMWithView(v); } void view_options_cb(CALLBACK_ARGS){ @@ -1335,7 +1346,7 @@ void view_options_cb(CALLBACK_ARGS){ } void view_options_custom_cb(CALLBACK_ARGS){ - if(WID->view_butt[3]->value()){ + if(WID->view_butt[0]->value()){ WID->view_value[0]->activate(); WID->view_value[1]->activate(); } @@ -1346,120 +1357,128 @@ void view_options_custom_cb(CALLBACK_ARGS){ } void view_options_timestep_cb(CALLBACK_ARGS){ - int ii = (int)((Fl_Value_Input*)w)->value(); - STARTVIEWMOD - if(ii>=0 && ii<v->NbTimeStep){ - v->TimeStep = ii ; - v->Changed = 1; + int links = (int)opt_post_link(0, GMSH_GET, 0); + for(int i=0 ; i<List_Nbr(Post_ViewList) ; i++){ + if((links == 2) || + (links == 1 && opt_view_visible(i, GMSH_GET, 0)) || + (links == 0 && i == (int)data)){ + opt_view_timestep(i, GMSH_SET, (int)((Fl_Value_Input*)w)->value()); } - ENDVIEWMOD + } Draw(); } void view_options_ok_cb(CALLBACK_ARGS){ - STARTVIEWMOD - opt_view_show_scale(i, GMSH_SET, WID->view_butt[0]->value()); - opt_view_show_time(i, GMSH_SET, WID->view_butt[1]->value()); - opt_view_transparent_scale(i, GMSH_SET, WID->view_butt[2]->value()); - opt_view_range_type(i, GMSH_SET, WID->view_butt[3]->value()?DRAW_POST_CUSTOM:DRAW_POST_DEFAULT); - opt_view_scale_type(i, GMSH_SET, WID->view_butt[4]->value()?DRAW_POST_LINEAR:DRAW_POST_LOGARITHMIC); - opt_view_intervals_type(i, GMSH_SET, - WID->view_butt[6]->value()?DRAW_POST_ISO: - WID->view_butt[7]->value()?DRAW_POST_DISCRETE: - WID->view_butt[8]->value()?DRAW_POST_CONTINUOUS: - DRAW_POST_NUMERIC); - opt_view_arrow_type(i, GMSH_SET, - WID->view_butt[10]->value()?DRAW_POST_SEGMENT: - WID->view_butt[11]->value()?DRAW_POST_ARROW: - WID->view_butt[12]->value()?DRAW_POST_CONE: - DRAW_POST_DISPLACEMENT); - opt_view_arrow_location(i, GMSH_SET, - WID->view_butt[14]->value()?DRAW_POST_LOCATE_COG: - DRAW_POST_LOCATE_VERTEX); - - opt_view_custom_min(i, GMSH_SET, WID->view_value[0]->value()); - opt_view_custom_max(i, GMSH_SET, WID->view_value[1]->value()); - opt_view_nb_iso(i, GMSH_SET, WID->view_value[2]->value()); - opt_view_offset0(i, GMSH_SET, WID->view_value[3]->value()); - opt_view_offset1(i, GMSH_SET, WID->view_value[4]->value()); - opt_view_offset2(i, GMSH_SET, WID->view_value[5]->value()); - opt_view_raise0(i, GMSH_SET, WID->view_value[6]->value()); - opt_view_raise1(i, GMSH_SET, WID->view_value[7]->value()); - opt_view_raise2(i, GMSH_SET, WID->view_value[8]->value()); - opt_view_timestep(i, GMSH_SET, WID->view_value[9]->value()); - opt_view_arrow_scale(i, GMSH_SET, WID->view_value[10]->value()); - - opt_view_name(i, GMSH_SET, (char*)WID->view_input[0]->value()); - opt_view_format(i, GMSH_SET, (char*)WID->view_input[1]->value()); - v->Changed = 1; - ENDVIEWMOD + int links = (int)opt_post_link(0, GMSH_GET, 0); + for(int i=0 ; i<List_Nbr(Post_ViewList) ; i++){ + if((links == 2) || + (links == 1 && opt_view_visible(i, GMSH_GET, 0)) || + (links == 0 && i == (int)data)){ + opt_view_range_type(i, GMSH_SET, + WID->view_butt[0]->value()?DRAW_POST_CUSTOM: + DRAW_POST_DEFAULT); + opt_view_scale_type(i, GMSH_SET, + WID->view_butt[1]->value()?DRAW_POST_LINEAR: + DRAW_POST_LOGARITHMIC); + opt_view_intervals_type(i, GMSH_SET, + WID->view_butt[3]->value()?DRAW_POST_ISO: + WID->view_butt[4]->value()?DRAW_POST_DISCRETE: + WID->view_butt[5]->value()?DRAW_POST_CONTINUOUS: + DRAW_POST_NUMERIC); + opt_view_arrow_type(i, GMSH_SET, + WID->view_butt[7]->value()?DRAW_POST_SEGMENT: + WID->view_butt[8]->value()?DRAW_POST_ARROW: + WID->view_butt[9]->value()?DRAW_POST_CONE: + DRAW_POST_DISPLACEMENT); + opt_view_arrow_location(i, GMSH_SET, + WID->view_butt[11]->value()?DRAW_POST_LOCATE_COG: + DRAW_POST_LOCATE_VERTEX); + opt_view_show_element(i, GMSH_SET, WID->view_butt[13]->value()); + opt_view_show_scale(i, GMSH_SET, WID->view_butt[14]->value()); + opt_view_show_time(i, GMSH_SET, WID->view_butt[15]->value()); + opt_view_transparent_scale(i, GMSH_SET, WID->view_butt[16]->value()); + opt_view_light(i,GMSH_SET,WID->view_butt[17]->value()); + + opt_view_custom_min(i, GMSH_SET, WID->view_value[0]->value()); + opt_view_custom_max(i, GMSH_SET, WID->view_value[1]->value()); + opt_view_nb_iso(i, GMSH_SET, WID->view_value[2]->value()); + opt_view_offset0(i, GMSH_SET, WID->view_value[3]->value()); + opt_view_offset1(i, GMSH_SET, WID->view_value[4]->value()); + opt_view_offset2(i, GMSH_SET, WID->view_value[5]->value()); + opt_view_raise0(i, GMSH_SET, WID->view_value[6]->value()); + opt_view_raise1(i, GMSH_SET, WID->view_value[7]->value()); + opt_view_raise2(i, GMSH_SET, WID->view_value[8]->value()); + opt_view_timestep(i, GMSH_SET, WID->view_value[9]->value()); + opt_view_arrow_scale(i, GMSH_SET, WID->view_value[10]->value()); + + opt_view_name(i, GMSH_SET, (char*)WID->view_input[0]->value()); + opt_view_format(i, GMSH_SET, (char*)WID->view_input[1]->value()); + } + } Draw(); } -#undef STARTVIEWMOD -#undef ENDVIEWMOD - // Contextual windows for geometry void con_geometry_define_parameter_cb(CALLBACK_ARGS){ - add_param(WID->get_geometry_parameter(0), - WID->get_geometry_parameter(1), + add_param((char*)WID->context_geometry_input[0]->value(), + (char*)WID->context_geometry_input[1]->value(), CTX.filename); } void con_geometry_define_point_cb(CALLBACK_ARGS){ - strcpy(x_text, WID->get_geometry_point(0)); - strcpy(y_text, WID->get_geometry_point(1)); - strcpy(z_text, WID->get_geometry_point(2)); - strcpy(l_text, WID->get_geometry_point(3)); - add_point(CTX.filename); - ZeroHighlight(&M); - Replot(); + strcpy(x_text, (char*)WID->context_geometry_input[2]->value()); + strcpy(y_text, WID->context_geometry_input[3]->value()); + strcpy(z_text, WID->context_geometry_input[4]->value()); + strcpy(l_text, WID->context_geometry_input[5]->value()); + add_point(CTX.filename); + ZeroHighlight(&M); + Replot(); } void con_geometry_define_translation_cb(CALLBACK_ARGS){ - strcpy(tx_text, WID->get_geometry_translation(0)); - strcpy(ty_text, WID->get_geometry_translation(1)); - strcpy(tz_text, WID->get_geometry_translation(2)); + strcpy(tx_text, WID->context_geometry_input[6]->value()); + strcpy(ty_text, WID->context_geometry_input[7]->value()); + strcpy(tz_text, WID->context_geometry_input[8]->value()); } void con_geometry_define_rotation_cb(CALLBACK_ARGS){ - strcpy(px_text, WID->get_geometry_rotation(0)); - strcpy(py_text, WID->get_geometry_rotation(1)); - strcpy(pz_text, WID->get_geometry_rotation(2)); - strcpy(ax_text, WID->get_geometry_rotation(3)); - strcpy(ay_text, WID->get_geometry_rotation(4)); - strcpy(az_text, WID->get_geometry_rotation(5)); - strcpy(angle_text, WID->get_geometry_rotation(6)); + strcpy(px_text, WID->context_geometry_input[9]->value()); + strcpy(py_text, WID->context_geometry_input[10]->value()); + strcpy(pz_text, WID->context_geometry_input[11]->value()); + strcpy(ax_text, WID->context_geometry_input[12]->value()); + strcpy(ay_text, WID->context_geometry_input[13]->value()); + strcpy(az_text, WID->context_geometry_input[14]->value()); + strcpy(angle_text, WID->context_geometry_input[15]->value()); } void con_geometry_define_scale_cb(CALLBACK_ARGS){ - strcpy(dx_text, WID->get_geometry_scale(0)); - strcpy(dy_text, WID->get_geometry_scale(1)); - strcpy(dz_text, WID->get_geometry_scale(2)); - strcpy(df_text, WID->get_geometry_scale(3)); + strcpy(dx_text, WID->context_geometry_input[16]->value()); + strcpy(dy_text, WID->context_geometry_input[17]->value()); + strcpy(dz_text, WID->context_geometry_input[18]->value()); + strcpy(df_text, WID->context_geometry_input[19]->value()); } void con_geometry_define_symmetry_cb(CALLBACK_ARGS){ - strcpy(sa_text, WID->get_geometry_symmetry(0)); - strcpy(sb_text, WID->get_geometry_symmetry(1)); - strcpy(sc_text, WID->get_geometry_symmetry(2)); - strcpy(sd_text, WID->get_geometry_symmetry(3)); + strcpy(sa_text, WID->context_geometry_input[20]->value()); + strcpy(sb_text, WID->context_geometry_input[21]->value()); + strcpy(sc_text, WID->context_geometry_input[22]->value()); + strcpy(sd_text, WID->context_geometry_input[23]->value()); } // Contextual windows for mesh void con_mesh_define_length_cb(CALLBACK_ARGS){ - strcpy(char_length_text, WID->get_mesh_length()); + strcpy(char_length_text, WID->context_mesh_input[0]->value()); } void con_mesh_define_transfinite_line_cb(CALLBACK_ARGS){ - strcpy(trsf_pts_text, WID->get_mesh_transfinite_line(0)); - strcpy(trsf_type_text, WID->get_mesh_transfinite_line(1)); + strcpy(trsf_pts_text, WID->context_mesh_input[1]->value()); + strcpy(trsf_type_text, WID->context_mesh_input[2]->value()); } void con_mesh_define_transfinite_volume_cb(CALLBACK_ARGS){ - strcpy(trsf_vol_text, WID->get_mesh_transfinite_volume()); + strcpy(trsf_vol_text, WID->context_mesh_input[3]->value()); } diff --git a/Fltk/Callbacks.h b/Fltk/Callbacks.h index e2c90cdc7f7c35abb4bd825d0a5775eb68ef9a41..120e7a18e0f6a498ba5c0bdf6257e0dc846ae71a 100644 --- a/Fltk/Callbacks.h +++ b/Fltk/Callbacks.h @@ -4,12 +4,11 @@ #define CALLBACK_ARGS Fl_Widget* w, void* data int SetGlobalShortcut(int event); -void MarkAllViewsChanged(int action); // Common callbacks void cancel_cb(CALLBACK_ARGS) ; -void ok_cb(CALLBACK_ARGS) ; +void color_cb(CALLBACK_ARGS) ; // Graphical window @@ -22,7 +21,8 @@ void status_cancel_cb(CALLBACK_ARGS) ; void file_open_cb(CALLBACK_ARGS) ; void file_merge_cb(CALLBACK_ARGS) ; -void file_save_cb(CALLBACK_ARGS) ; +void file_save_mesh_cb(CALLBACK_ARGS) ; +void file_save_options_cb(CALLBACK_ARGS) ; void file_save_as_auto_cb(CALLBACK_ARGS) ; void file_save_as_geo_cb(CALLBACK_ARGS) ; void file_save_as_geo_options_cb(CALLBACK_ARGS) ; @@ -37,25 +37,26 @@ void file_save_as_gif_dithered_cb(CALLBACK_ARGS) ; void file_save_as_gif_transparent_cb(CALLBACK_ARGS) ; void file_save_as_ppm_cb(CALLBACK_ARGS) ; void file_save_as_yuv_cb(CALLBACK_ARGS) ; -void file_reload_all_views_cb(CALLBACK_ARGS) ; -void file_remove_all_views_cb(CALLBACK_ARGS) ; void file_quit_cb(CALLBACK_ARGS) ; // Option General Menu void opt_general_cb(CALLBACK_ARGS) ; +void opt_general_color_scheme_cb(CALLBACK_ARGS) ; void opt_general_ok_cb(CALLBACK_ARGS) ; // Option Geometry Menu void opt_geometry_cb(CALLBACK_ARGS) ; void opt_geometry_show_by_entity_num_cb(CALLBACK_ARGS) ; +void opt_geometry_color_scheme_cb(CALLBACK_ARGS) ; void opt_geometry_ok_cb(CALLBACK_ARGS) ; // Option Mesh Menu void opt_mesh_cb(CALLBACK_ARGS) ; void opt_mesh_show_by_entity_num_cb(CALLBACK_ARGS) ; +void opt_mesh_color_scheme_cb(CALLBACK_ARGS) ; void opt_mesh_ok_cb(CALLBACK_ARGS) ; // Option Post Menu @@ -71,11 +72,13 @@ void opt_statistics_update_cb(CALLBACK_ARGS) ; // Option Message Menu void opt_message_cb(CALLBACK_ARGS) ; +void opt_message_clear_cb(CALLBACK_ARGS) ; void opt_message_save_cb(CALLBACK_ARGS) ; // Help Menu void help_short_cb(CALLBACK_ARGS) ; +void help_command_line_cb(CALLBACK_ARGS) ; void help_about_cb(CALLBACK_ARGS) ; // Module Menu @@ -179,10 +182,15 @@ void con_mesh_define_transfinite_volume_cb(CALLBACK_ARGS) ; // Dynamic post menus -void view_reload_cb(CALLBACK_ARGS) ; void view_toggle_cb(CALLBACK_ARGS) ; +void view_reload_cb(CALLBACK_ARGS) ; +void view_reload_all_cb(CALLBACK_ARGS) ; void view_remove_cb(CALLBACK_ARGS) ; +void view_remove_all_cb(CALLBACK_ARGS) ; +void view_save_ascii_cb(CALLBACK_ARGS) ; +void view_save_binary_cb(CALLBACK_ARGS) ; void view_duplicate_cb(CALLBACK_ARGS) ; +void view_duplicate_with_options_cb(CALLBACK_ARGS) ; void view_lighting_cb(CALLBACK_ARGS) ; void view_elements_cb(CALLBACK_ARGS) ; void view_applybgmesh_cb(CALLBACK_ARGS) ; diff --git a/Fltk/Colorbar_Window.cpp b/Fltk/Colorbar_Window.cpp index 0fbdab8b0817401db6814bc4eb7fc8b82089f8e4..34f29434290645202ebc38019a6b3b80d6c071da 100644 --- a/Fltk/Colorbar_Window.cpp +++ b/Fltk/Colorbar_Window.cpp @@ -1,4 +1,4 @@ -// $Id: Colorbar_Window.cpp,v 1.7 2001-02-05 14:20:14 geuzaine Exp $ +// $Id: Colorbar_Window.cpp,v 1.8 2001-02-17 22:02:17 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -145,7 +145,7 @@ void Colorbar_Window::redraw_range(int a, int b){ y2 = intensity_to_y(0); // erase region - fl_color(FL_BLACK); + fl_color(color_bg); fl_rectf(x1, y1, x2-x1+1, y2-y1+1); // redraw region of entries in interval [a,b] @@ -217,7 +217,7 @@ void Colorbar_Window::redraw_range(int a, int b){ x = index_to_x(i); y = intensity_to_y(UNPACK_ALPHA(ct->table[i])); if (i!=a){ - fl_color(FL_WHITE); + fl_color(contrast(FL_BLACK,color_bg)); fl_line(px,py,x,y); } px = x; py = y; @@ -238,7 +238,7 @@ void Colorbar_Window::redraw_range(int a, int b){ // print colortable mode and help fl_font(FL_HELVETICA, font_height); - fl_color(FL_WHITE); + fl_color(contrast(FL_BLACK,color_bg)); if (help_flag){ int i=0, xx=13*font_height; fl_draw("1, 2, ..., 6", 10,10+(i+1)*font_height); @@ -259,8 +259,8 @@ void Colorbar_Window::redraw_range(int a, int b){ fl_draw( "move or rotate colormap", xx,10+(i+1)*font_height); i++; fl_draw("up, down", 10,10+(i+1)*font_height); fl_draw( "modify color curvature", xx,10+(i+1)*font_height); i++; - fl_draw("Ctrl+up, Ctrl+down", 10,10+(i+1)*font_height); - fl_draw( "modify alpha curvature", xx,10+(i+1)*font_height); i++; + //fl_draw("Ctrl+up, Ctrl+down", 10,10+(i+1)*font_height); + //fl_draw( "modify alpha curvature", xx,10+(i+1)*font_height); i++; fl_draw("i, Ctrl+i", 10,10+(i+1)*font_height); fl_draw( "invert x or y range", xx,10+(i+1)*font_height); i++; fl_draw("b, Ctrl+b", 10,10+(i+1)*font_height); @@ -288,12 +288,12 @@ void Colorbar_Window::redraw_marker(){ y0 = marker_y; y1 = h() - 1; - fl_color(FL_BLACK); + fl_color(color_bg); fl_rectf(0, y0, w(), y1-y0+1); // draw marker below color wedge x = index_to_x(marker_pos); - fl_color(FL_WHITE); + fl_color(contrast(FL_BLACK,color_bg)); fl_line(x, marker_y, x, marker_y+marker_height); fl_line(x, marker_y, x-3, marker_y+6); fl_line(x, marker_y, x+3, marker_y+6); @@ -308,11 +308,13 @@ void Colorbar_Window::redraw_marker(){ // Draw everything void Colorbar_Window::draw(){ - Fl_Window::draw(); if(ct){ label_y = h() - 5; marker_y = label_y - marker_height - font_height; wedge_y = marker_y - wedge_height; + color_bg = fl_color_cube(UNPACK_RED(CTX.color.bg)*FL_NUM_RED/256, + UNPACK_GREEN(CTX.color.bg)*FL_NUM_GREEN/256, + UNPACK_BLUE(CTX.color.bg)*FL_NUM_BLUE/256); redraw_range(0, ct->size-1); redraw_marker(); } diff --git a/Fltk/Colorbar_Window.h b/Fltk/Colorbar_Window.h index d74ca3e9189dbe142bdbd42f92f995c778212fb3..5bcf210bdb09c514ea13d33ec22ade68096ac3c6 100644 --- a/Fltk/Colorbar_Window.h +++ b/Fltk/Colorbar_Window.h @@ -28,6 +28,8 @@ class Colorbar_Window : public Fl_Window { ColorTable *ct; // pointer to the color table (allocated in Post_View) int *viewchanged;// pointer to changed bit in view + Fl_Color color_bg; + public: Colorbar_Window(int x,int y,int w,int h,const char *l=0); diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp index d8dfc81bab817cb492fa8cbfdaa9750a735f783a..5b963666b4cd99cef3a3b6b92b05ea1546efd712 100644 --- a/Fltk/GUI.cpp +++ b/Fltk/GUI.cpp @@ -1,4 +1,4 @@ -// $Id: GUI.cpp,v 1.45 2001-02-16 20:16:40 remacle Exp $ +// $Id: GUI.cpp,v 1.46 2001-02-17 22:02:17 geuzaine Exp $ // To make the interface as visually consistent as possible, please: // - use the BH, BW, WB, IW values for button heights/widths, window borders, etc. @@ -19,6 +19,8 @@ #include "Bitmaps.h" #include "GetOptions.h" +#define WINDOW_BOX FL_FLAT_BOX + extern Context_T CTX; //******************* Definition of the static menus *********************************** @@ -26,12 +28,13 @@ extern Context_T CTX; Fl_Menu_Item m_menubar_table[] = { {"File", 0, 0, 0, FL_SUBMENU}, {"Open...", FL_CTRL+'o', (Fl_Callback *)file_open_cb, 0}, - {"Merge...", FL_CTRL+'m', (Fl_Callback *)file_merge_cb, 0, FL_MENU_DIVIDER}, - {"Save", FL_CTRL+'s', (Fl_Callback *)file_save_cb, 0}, + {"Merge...", FL_CTRL+'m', (Fl_Callback *)file_merge_cb, 0}, + {"Save Mesh", FL_CTRL+'s', (Fl_Callback *)file_save_mesh_cb, 0}, + {"Save Options", 0, (Fl_Callback *)file_save_options_cb, 0}, {"Save As", 0, 0, 0, FL_MENU_DIVIDER|FL_SUBMENU}, {"By extension...", FL_CTRL+'p', (Fl_Callback *)file_save_as_auto_cb, 0}, - {"GEO...", 0, (Fl_Callback *)file_save_as_geo_cb, 0}, - {"GEO options...", 0, (Fl_Callback *)file_save_as_geo_options_cb, 0}, + {"GEO complete options...", 0, (Fl_Callback *)file_save_as_geo_options_cb, 0}, + {"GEO flattened...", 0, (Fl_Callback *)file_save_as_geo_cb, 0}, {"MSH...", 0, (Fl_Callback *)file_save_as_msh_cb, 0}, {"UNV...", 0, (Fl_Callback *)file_save_as_unv_cb, 0}, {"GREF...", 0, (Fl_Callback *)file_save_as_gref_cb, 0}, @@ -44,8 +47,6 @@ Fl_Menu_Item m_menubar_table[] = { {"PPM...", 0, (Fl_Callback *)file_save_as_ppm_cb, 0}, {"UCB YUV...", 0, (Fl_Callback *)file_save_as_yuv_cb, 0}, {0}, - {"Reload All Views", FL_CTRL+'l', (Fl_Callback *)file_reload_all_views_cb, 0}, - {"Remove All Views", FL_CTRL+'r', (Fl_Callback *)file_remove_all_views_cb, 0, FL_MENU_DIVIDER}, {"Quit", FL_CTRL+'q', (Fl_Callback *)file_quit_cb, 0}, {0}, {"Options",0,0,0,FL_SUBMENU}, @@ -57,8 +58,9 @@ Fl_Menu_Item m_menubar_table[] = { {"Message log...", FL_SHIFT+'l', (Fl_Callback *)opt_message_cb, 0}, {0}, {"Help",0,0,0,FL_SUBMENU}, - {"Short Help...", 0, (Fl_Callback *)help_short_cb, 0, FL_MENU_DIVIDER}, - {"About...", 0, (Fl_Callback *)help_about_cb, 0}, + {"Shortcuts...", 0, (Fl_Callback *)help_short_cb, 0}, + {"Command line options...", 0, (Fl_Callback *)help_command_line_cb, 0}, + {"About...", 0, (Fl_Callback *)help_about_cb, 0}, {0}, {0} }; @@ -239,10 +241,11 @@ Context_Item menu_post[] = //********************** Definition of global shortcuts ******************************** int GUI::global_shortcuts(int event){ + int i, j; + // we only handle shortcuts here if(event != FL_SHORTCUT) return 0 ; - if(Fl::test_shortcut('0') || Fl::test_shortcut(FL_Escape)){ geometry_reload_cb(0,0); return 1; @@ -308,19 +311,13 @@ int GUI::global_shortcuts(int event){ } else if(Fl::test_shortcut(FL_ALT+'c')){ opt_general_color_scheme(0,GMSH_SET|GMSH_GUI,opt_general_color_scheme(0,GMSH_GET,0)+1); + opt_geometry_color_scheme(0,GMSH_SET|GMSH_GUI,opt_geometry_color_scheme(0,GMSH_GET,0)+1); + opt_mesh_color_scheme(0,GMSH_SET|GMSH_GUI,opt_mesh_color_scheme(0,GMSH_GET,0)+1); redraw_opengl(); return 1; } else if(Fl::test_shortcut(FL_ALT+'d')){ - if(!CTX.mesh.hidden && !CTX.mesh.shade) - CTX.mesh.hidden = 1; - else if(CTX.mesh.hidden && !CTX.mesh.shade) - CTX.mesh.shade = 1; - else{ - CTX.mesh.hidden = 0; CTX.mesh.shade = 0; - } - opt_mesh_hidden(0,GMSH_GUI,0); - opt_mesh_shade(0,GMSH_GUI,0); + opt_mesh_aspect(0,GMSH_SET|GMSH_GUI,opt_mesh_aspect(0,GMSH_GET,0)+1); redraw_opengl(); return 1; } @@ -395,12 +392,17 @@ int GUI::global_shortcuts(int event){ return 1; } else if(Fl::test_shortcut(FL_ALT+'t')){ - MarkAllViewsChanged(1); - opt_view_intervals_type(view_number, GMSH_GUI, 0); + for(i=0 ; i<List_Nbr(Post_ViewList) ; i++){ + j = (int)opt_view_intervals_type(i, GMSH_GET, 0); + opt_view_intervals_type(i, GMSH_SET|GMSH_GUI, + (j == DRAW_POST_ISO) ? DRAW_POST_DISCRETE : + (j == DRAW_POST_DISCRETE) ? DRAW_POST_CONTINUOUS : + DRAW_POST_ISO); + } redraw_opengl(); return 1; } - + return 0; } @@ -414,8 +416,8 @@ GUI::GUI(int argc, char **argv) { BW = 3*IW/2; // width of a button with external label BB = 5*CTX.fontsize; // width of a button with internal label BH = 2*CTX.fontsize+2; // button height - WB = CTX.fontsize-6; // window border - + WB = 4; // window border + init_menu_window = 0; init_graphic_window = 0; init_general_options_window = 0; @@ -424,7 +426,6 @@ GUI::GUI(int argc, char **argv) { init_post_options_window = 0; init_statistics_window = 0; init_message_window = 0; - init_help_window = 0; init_about_window = 0; init_view_window = 0; init_geometry_context_window = 0; @@ -442,7 +443,7 @@ GUI::GUI(int argc, char **argv) { // All static windows are contructed (even if some are not // displayed) since the shortcuts should be valid even for hidden - // windows + // windows, and we don't want to test for widget existence every time create_menu_window(argc, argv); create_graphic_window(argc, argv); @@ -466,7 +467,6 @@ GUI::GUI(int argc, char **argv) { create_post_options_window(); create_view_options_window(-1); create_message_window(); - create_help_window(); create_about_window(); // Draw the scene @@ -505,7 +505,7 @@ void GUI::create_menu_window(int argc, char **argv){ MH = 2*BH+6 ; // this is the initial height: no dynamic button is shown! m_window = new Fl_Window(width,MH); - m_window->box(FL_THIN_UP_BOX); + m_window->box(WINDOW_BOX); m_window->label("Gmsh"); m_window->callback(file_quit_cb); @@ -548,16 +548,22 @@ void GUI::create_menu_window(int argc, char **argv){ m_toggle_butt[i]->hide(); m_popup_butt[i] = new Fl_Menu_Button(0,y+i*BH,width,BH); m_popup_butt[i]->type(Fl_Menu_Button::POPUP3); - m_popup_butt[i]->add("Reload", 0, + m_popup_butt[i]->add("Reload/View", 0, (Fl_Callback *)view_reload_cb, (void*)i, 0); - m_popup_butt[i]->add("Remove", 0, + m_popup_butt[i]->add("Reload/All Views", 0, + (Fl_Callback *)view_reload_all_cb, (void*)i, 0); + m_popup_butt[i]->add("Remove/View", 0, (Fl_Callback *)view_remove_cb, (void*)i, 0); - m_popup_butt[i]->add("Duplicate", 0, - (Fl_Callback *)view_duplicate_cb, (void*)i, FL_MENU_DIVIDER) ; - m_popup_butt[i]->add("Lighting", 0, - (Fl_Callback *)view_lighting_cb, (void*)i, 0); - m_popup_butt[i]->add("Show Elements", 0, - (Fl_Callback *)view_elements_cb, (void*)i, 0); + m_popup_butt[i]->add("Remove/All Views", 0, + (Fl_Callback *)view_remove_all_cb, (void*)i, 0); + m_popup_butt[i]->add("Duplicate/View without Options", 0, + (Fl_Callback *)view_duplicate_cb, (void*)i, 0) ; + m_popup_butt[i]->add("Duplicate/View with Options", 0, + (Fl_Callback *)view_duplicate_with_options_cb, (void*)i, 0) ; + m_popup_butt[i]->add("Save as/ASCII View...", 0, + (Fl_Callback *)view_save_ascii_cb, (void*)i, 0) ; + m_popup_butt[i]->add("Save as/Binary View...", 0, + (Fl_Callback *)view_save_binary_cb, (void*)i, 0) ; m_popup_butt[i]->add("Apply as Background Mesh", 0, (Fl_Callback *)view_applybgmesh_cb, (void*)i, FL_MENU_DIVIDER); m_popup_butt[i]->add("Options...", 0, @@ -723,19 +729,17 @@ void GUI::create_graphic_window(int argc, char **argv){ g_status_butt[3]->callback(status_xyz1p_cb, (void*)3); g_status_butt[4] = new Fl_Button(x,glheight+2,sw,sh-4,"?"); x+=sw; g_status_butt[4]->callback(status_xyz1p_cb, (void*)4); - g_status_butt[5] = new Fl_Button(x,glheight+2,sw,sh-4); x+=sw; g_status_butt[5]->callback(status_play_cb); start_bmp = new Fl_Bitmap(start_bits,start_width,start_height); start_bmp->label(g_status_butt[5]); stop_bmp = new Fl_Bitmap(stop_bits,stop_width,stop_height); - + g_status_butt[5]->deactivate(); g_status_butt[6] = new Fl_Button(x,glheight+2,sw,sh-4); x+=sw; g_status_butt[6]->callback(status_cancel_cb); abort_bmp = new Fl_Bitmap(abort_bits,abort_width,abort_height); abort_bmp->label(g_status_butt[6]); g_status_butt[6]->deactivate(); - for(i = 0 ; i<7 ; i++){ g_status_butt[i]->box(FL_FLAT_BOX); g_status_butt[i]->selection_color(FL_WHITE); @@ -774,15 +778,6 @@ void GUI::set_size(int new_w, int new_h){ g_window->size(new_w,new_h+g_window->h()-g_opengl_window->h()); } -// Get the position of the 2 main windows - -void GUI::get_position(int m[2], int g[2]){ - m[0] = m_window->x(); - m[1] = m_window->y(); - g[0] = g_window->x(); - g[1] = g_window->y(); -} - // Set graphic window title void GUI::set_title(char *str){ @@ -840,10 +835,10 @@ void GUI::create_general_options_window(){ init_general_options_window = 1 ; int width = 25*CTX.fontsize; - int height = 5*WB+8*BH ; + int height = 5*WB+10*BH ; gen_window = new Fl_Window(width,height); - gen_window->box(FL_THIN_UP_BOX); + gen_window->box(WINDOW_BOX); gen_window->label("General Options"); { Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-BH); @@ -864,13 +859,44 @@ void GUI::create_general_options_window(){ } o->end(); } + { + Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Output"); + o->labelsize(CTX.fontsize); + gen_butt[6] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "Print messages on terminal"); + gen_butt[7] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Save session information on exit"); + gen_butt[8] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Save options on exit"); + for(i=6 ; i<9 ; i++){ + gen_butt[i]->type(FL_TOGGLE_BUTTON); + gen_butt[i]->down_box(FL_DOWN_BOX); + gen_butt[i]->labelsize(CTX.fontsize); + gen_butt[i]->selection_color(FL_YELLOW); + } + gen_value[5] = new Fl_Value_Input(2*WB, 2*WB+4*BH, IW, BH, "Message verbosity"); + gen_value[5]->minimum(0); + gen_value[5]->maximum(10); + gen_value[5]->step(1); + gen_value[5]->labelsize(CTX.fontsize); + gen_value[5]->textsize(CTX.fontsize); + gen_value[5]->type(FL_HORIZONTAL); + gen_value[5]->align(FL_ALIGN_RIGHT); + gen_input[0] = new Fl_Input(2*WB, 2*WB+5*BH, IW, BH, "Default file name"); + gen_input[1] = new Fl_Input(2*WB, 2*WB+6*BH, IW, BH, "Temporary file"); + gen_input[2] = new Fl_Input(2*WB, 2*WB+7*BH, IW, BH, "Error file"); + gen_input[3] = new Fl_Input(2*WB, 2*WB+8*BH, IW, BH, "Option file"); + for(i=0 ; i<4 ; i++){ + gen_input[i]->labelsize(CTX.fontsize); + gen_input[i]->textsize(CTX.fontsize); + gen_input[i]->align(FL_ALIGN_RIGHT); + } + o->end(); + } { Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Projection"); o->labelsize(CTX.fontsize); o->hide(); - gen_butt[6] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "Orthographic"); - gen_butt[7] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Perspective"); - for(i=6 ; i<8 ; i++){ + gen_butt[9] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "Orthographic"); + gen_butt[10] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Perspective"); + for(i=9 ; i<11 ; i++){ gen_butt[i]->type(FL_RADIO_BUTTON); gen_butt[i]->labelsize(CTX.fontsize); gen_butt[i]->selection_color(FL_YELLOW); @@ -878,17 +904,43 @@ void GUI::create_general_options_window(){ o->end(); } { - Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Light and color"); + Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Colors"); o->labelsize(CTX.fontsize); o->hide(); gen_value[0] = new Fl_Value_Input(2*WB, 2*WB+1*BH, IW, BH, "Predefined color scheme"); gen_value[0]->minimum(0); gen_value[0]->maximum(2); gen_value[0]->step(1); - gen_value[1] = new Fl_Value_Input(2*WB, 2*WB+2*BH, IW, BH, "Material shininess"); + gen_value[0]->labelsize(CTX.fontsize); + gen_value[0]->textsize(CTX.fontsize); + gen_value[0]->type(FL_HORIZONTAL); + gen_value[0]->align(FL_ALIGN_RIGHT); + gen_value[0]->callback(opt_general_color_scheme_cb); + + Fl_Scroll* s = new Fl_Scroll(2*WB, 3*WB+2*BH, IW+20, height-3*WB-4*BH); + i = 0; + while(GeneralOptions_Color[i].str){ + gen_col[i] = new Fl_Button(2*WB, 3*WB+(2+i)*BH, IW, BH, GeneralOptions_Color[i].str); + gen_col[i]->callback(color_cb, (void*)GeneralOptions_Color[i].function) ; + gen_col[i]->labelsize(CTX.fontsize); + i++; + } + s->end(); + o->end(); + } + { + Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Light"); + o->labelsize(CTX.fontsize); + o->hide(); + gen_value[1] = new Fl_Value_Input(2*WB, 2*WB+1*BH, IW, BH, "Material shininess"); gen_value[1]->minimum(0); gen_value[1]->maximum(10); gen_value[1]->step(0.1); + gen_butt[11] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Moving light"); + gen_butt[11]->type(FL_TOGGLE_BUTTON); + gen_butt[11]->down_box(FL_DOWN_BOX); + gen_butt[11]->labelsize(CTX.fontsize); + gen_butt[11]->selection_color(FL_YELLOW); gen_value[2] = new Fl_Value_Input(2*WB, 2*WB+3*BH, IW, BH, "Light position X"); gen_value[2]->minimum(-1); gen_value[2]->maximum(1); @@ -901,15 +953,15 @@ void GUI::create_general_options_window(){ gen_value[4]->minimum(-1); gen_value[4]->maximum(1); gen_value[4]->step(0.01); - for(i=0 ; i<5 ; i++){ + for(i=1 ; i<5 ; i++){ gen_value[i]->labelsize(CTX.fontsize); + gen_value[i]->textsize(CTX.fontsize); gen_value[i]->type(FL_HORIZONTAL); gen_value[i]->align(FL_ALIGN_RIGHT); } o->end(); } o->end(); - } { @@ -925,7 +977,7 @@ void GUI::create_general_options_window(){ if(CTX.center_windows) gen_window->position(m_window->x()+m_window->w()/2-width/2, - m_window->y()+2*MH); + m_window->y()+9*BH-height/2); gen_window->end(); } else{ @@ -946,11 +998,11 @@ void GUI::create_geometry_options_window(){ if(!init_geometry_options_window){ init_geometry_options_window = 1 ; - int width = 24*CTX.fontsize; + int width = 25*CTX.fontsize; int height = 5*WB+9*BH ; geo_window = new Fl_Window(width,height); - geo_window->box(FL_THIN_UP_BOX); + geo_window->box(WINDOW_BOX); geo_window->label("Geometry Options"); { Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-BH); @@ -974,6 +1026,7 @@ void GUI::create_geometry_options_window(){ geo_input = new Fl_Input(2*WB, 2*WB+5*BH, IW, BH, "Show by entity number"); geo_input->labelsize(CTX.fontsize); + geo_input->textsize(CTX.fontsize); geo_input->align(FL_ALIGN_RIGHT); geo_input->callback(opt_geometry_show_by_entity_num_cb); geo_input->when(FL_WHEN_ENTER_KEY|FL_WHEN_NOT_CHANGED); @@ -988,12 +1041,37 @@ void GUI::create_geometry_options_window(){ geo_value[1]->step(0.1); for(i=0 ; i<2 ; i++){ geo_value[i]->labelsize(CTX.fontsize); + geo_value[i]->textsize(CTX.fontsize); geo_value[i]->type(FL_HORIZONTAL); geo_value[i]->align(FL_ALIGN_RIGHT); } - o->end(); } + { + Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Colors"); + o->labelsize(CTX.fontsize); + o->hide(); + geo_value[2] = new Fl_Value_Input(2*WB, 2*WB+1*BH, IW, BH, "Predefined color scheme"); + geo_value[2]->minimum(0); + geo_value[2]->maximum(2); + geo_value[2]->step(1); + geo_value[2]->labelsize(CTX.fontsize); + geo_value[2]->textsize(CTX.fontsize); + geo_value[2]->type(FL_HORIZONTAL); + geo_value[2]->align(FL_ALIGN_RIGHT); + geo_value[2]->callback(opt_geometry_color_scheme_cb); + + Fl_Scroll* s = new Fl_Scroll(2*WB, 3*WB+2*BH, IW+20, height-3*WB-4*BH); + i = 0; + while(GeometryOptions_Color[i].str){ + geo_col[i] = new Fl_Button(2*WB, 3*WB+(2+i)*BH, IW, BH, GeometryOptions_Color[i].str); + geo_col[i]->callback(color_cb, (void*)GeometryOptions_Color[i].function) ; + geo_col[i]->labelsize(CTX.fontsize); + i++; + } + s->end(); + o->end(); + } o->end(); } @@ -1010,7 +1088,7 @@ void GUI::create_geometry_options_window(){ if(CTX.center_windows) geo_window->position(m_window->x()+m_window->w()/2-width/2, - m_window->y()+2*MH); + m_window->y()+9*BH-height/2); geo_window->end(); } else{ @@ -1035,7 +1113,7 @@ void GUI::create_mesh_options_window(){ int height = 5*WB+9*BH ; mesh_window = new Fl_Window(width,height); - mesh_window->box(FL_THIN_UP_BOX); + mesh_window->box(WINDOW_BOX); mesh_window->label("Mesh Options"); { Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-BH); @@ -1057,12 +1135,12 @@ void GUI::create_mesh_options_window(){ mesh_value[0]->maximum(100); mesh_value[0]->step(1); mesh_value[1] = new Fl_Value_Input(2*WB, 2*WB+5*BH, IW, BH, "Mesh scaling factor"); - mesh_value[1]->minimum(0); - mesh_value[1]->maximum(100); + mesh_value[1]->minimum(0.001); + mesh_value[1]->maximum(1000); mesh_value[1]->step(0.001); mesh_value[2] = new Fl_Value_Input(2*WB, 2*WB+6*BH, IW, BH, "Characteristic length scaling factor"); - mesh_value[2]->minimum(0); - mesh_value[2]->maximum(100); + mesh_value[2]->minimum(0.001); + mesh_value[2]->maximum(1000); mesh_value[2]->step(0.001); mesh_value[3] = new Fl_Value_Input(2*WB, 2*WB+7*BH, IW, BH, "Random perturbation factor"); mesh_value[3]->minimum(1.e-6); @@ -1070,6 +1148,7 @@ void GUI::create_mesh_options_window(){ mesh_value[3]->step(1.e-6); for(i = 0 ; i<4 ; i++){ mesh_value[i]->labelsize(CTX.fontsize); + mesh_value[i]->textsize(CTX.fontsize); mesh_value[i]->type(FL_HORIZONTAL); mesh_value[i]->align(FL_ALIGN_RIGHT); } @@ -1094,6 +1173,7 @@ void GUI::create_mesh_options_window(){ } mesh_input = new Fl_Input(2*WB, 2*WB+5*BH, IW, BH, "Show by entity Number"); mesh_input->labelsize(CTX.fontsize); + mesh_input->textsize(CTX.fontsize); mesh_input->align(FL_ALIGN_RIGHT); mesh_input->callback(opt_mesh_show_by_entity_num_cb); mesh_input->when(FL_WHEN_ENTER_KEY|FL_WHEN_NOT_CHANGED); @@ -1108,6 +1188,7 @@ void GUI::create_mesh_options_window(){ mesh_value[5]->step(1); for(i=4 ; i<6 ; i++){ mesh_value[i]->labelsize(CTX.fontsize); + mesh_value[i]->textsize(CTX.fontsize); mesh_value[i]->type(FL_HORIZONTAL); mesh_value[i]->align(FL_ALIGN_RIGHT); } @@ -1131,10 +1212,42 @@ void GUI::create_mesh_options_window(){ mesh_value[6]->maximum(1); mesh_value[6]->step(0.01); mesh_value[6]->labelsize(CTX.fontsize); + mesh_value[6]->textsize(CTX.fontsize); mesh_value[6]->type(FL_HORIZONTAL); mesh_value[6]->align(FL_ALIGN_RIGHT); o->end(); } + { + Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Colors"); + o->labelsize(CTX.fontsize); + o->hide(); + mesh_butt[14] = new Fl_Check_Button(2*WB, 2*WB+1*BH, IW, BH, "Switch color by geometrical entity"); + mesh_butt[14]->type(FL_TOGGLE_BUTTON); + mesh_butt[14]->down_box(FL_DOWN_BOX); + mesh_butt[14]->labelsize(CTX.fontsize); + mesh_butt[14]->selection_color(FL_YELLOW); + + mesh_value[7] = new Fl_Value_Input(2*WB, 2*WB+2*BH, IW, BH, "Predefined color scheme"); + mesh_value[7]->minimum(0); + mesh_value[7]->maximum(2); + mesh_value[7]->step(1); + mesh_value[7]->labelsize(CTX.fontsize); + mesh_value[7]->textsize(CTX.fontsize); + mesh_value[7]->type(FL_HORIZONTAL); + mesh_value[7]->align(FL_ALIGN_RIGHT); + mesh_value[7]->callback(opt_mesh_color_scheme_cb); + + Fl_Scroll* s = new Fl_Scroll(2*WB, 3*WB+3*BH, IW+20, height-3*WB-5*BH); + i = 0; + while(MeshOptions_Color[i].str){ + mesh_col[i] = new Fl_Button(2*WB, 3*WB+(3+i)*BH, IW, BH, MeshOptions_Color[i].str); + mesh_col[i]->callback(color_cb, (void*)MeshOptions_Color[i].function) ; + mesh_col[i]->labelsize(CTX.fontsize); + i++; + } + s->end(); + o->end(); + } o->end(); } @@ -1151,7 +1264,7 @@ void GUI::create_mesh_options_window(){ if(CTX.center_windows) mesh_window->position(m_window->x()+m_window->w()/2-width/2, - m_window->y()+2*MH); + m_window->y()+9*BH-height/2); mesh_window->end(); } else{ @@ -1177,7 +1290,7 @@ void GUI::create_post_options_window(){ int height = 5*WB+5*BH ; post_window = new Fl_Window(width,height); - post_window->box(FL_THIN_UP_BOX); + post_window->box(WINDOW_BOX); post_window->label("Post Processing Options"); { Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-BH); @@ -1213,6 +1326,7 @@ void GUI::create_post_options_window(){ post_value[0]->maximum(10); post_value[0]->step(0.01); post_value[0]->labelsize(CTX.fontsize); + post_value[0]->textsize(CTX.fontsize); post_value[0]->type(FL_HORIZONTAL); post_value[0]->align(FL_ALIGN_RIGHT); o->end(); @@ -1233,7 +1347,7 @@ void GUI::create_post_options_window(){ if(CTX.center_windows) post_window->position(m_window->x()+m_window->w()/2-width/2, - m_window->y()+2*MH); + m_window->y()+9*BH-height/2); post_window->end(); } else{ @@ -1258,7 +1372,7 @@ void GUI::create_statistics_window(){ int height = 5*WB+16*BH ; stat_window = new Fl_Window(width,height); - stat_window->box(FL_THIN_UP_BOX); + stat_window->box(WINDOW_BOX); stat_window->label("Statistics"); { Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-BH); @@ -1307,6 +1421,7 @@ void GUI::create_statistics_window(){ for(i=0 ; i<23 ; i++){ stat_value[i]->labelsize(CTX.fontsize); + stat_value[i]->textsize(CTX.fontsize); stat_value[i]->type(FL_HORIZONTAL); stat_value[i]->align(FL_ALIGN_LEFT); stat_value[i]->value(0); @@ -1325,7 +1440,7 @@ void GUI::create_statistics_window(){ if(CTX.center_windows) stat_window->position(m_window->x()+m_window->w()/2-width/2, - m_window->y()+2*MH); + m_window->y()+9*BH-height/2); stat_window->end(); set_statistics(); stat_window->show(); @@ -1364,11 +1479,9 @@ void GUI::set_statistics(){ sprintf(label[9], "%g", s[9]); stat_value[9]->value(label[9]); sprintf(label[10], "%g", s[10]); stat_value[10]->value(label[10]); sprintf(label[11], "%g", s[11]); stat_value[11]->value(label[11]); - sprintf(label[12], "%g", s[12]); stat_value[12]->value(label[12]); sprintf(label[13], "%g", s[13]); stat_value[13]->value(label[13]); sprintf(label[14], "%g", s[14]); stat_value[14]->value(label[14]); - sprintf(label[15], "%.4g (%.4g->%.4g)", s[17], s[19], s[18]); stat_value[15]->value(label[15]); sprintf(label[16], "%.4g (%.4g->%.4g)", s[20], s[22], s[21]); @@ -1377,10 +1490,8 @@ void GUI::set_statistics(){ stat_value[17]->value(label[17]); // post - s[15] = List_Nbr(Post_ViewList) ; sprintf(label[18], "%g", s[15]); stat_value[18]->value(label[18]); - s[16] = s[17] = s[18] = s[19] = 0 ; for(i=0 ; i<List_Nbr(Post_ViewList) ; i++){ Post_View *v = (Post_View*)List_Pointer(Post_ViewList, i); @@ -1408,11 +1519,11 @@ void GUI::create_message_window(){ if(!init_message_window){ init_message_window = 1 ; - int width = 35*CTX.fontsize; - int height = 35*CTX.fontsize; + int width = CTX.msg_size[0]; + int height = CTX.msg_size[1]; msg_window = new Fl_Window(width,height); - msg_window->box(FL_THIN_UP_BOX); + msg_window->box(WINDOW_BOX); msg_window->label("Messages"); msg_browser = new Fl_Browser(WB, WB, width-2*WB, height-3*WB-BH); @@ -1420,10 +1531,15 @@ void GUI::create_message_window(){ msg_browser->textsize(CTX.fontsize); { - Fl_Return_Button* o = new Fl_Return_Button(width-2*BB-2*WB, height-BH-WB, BB, BH, "save"); + Fl_Return_Button* o = new Fl_Return_Button(width-3*BB-3*WB, height-BH-WB, BB, BH, "save"); o->labelsize(CTX.fontsize); o->callback(opt_message_save_cb); } + { + Fl_Button* o = new Fl_Button(width-2*BB-2*WB, height-BH-WB, BB, BH, "clear"); + o->labelsize(CTX.fontsize); + o->callback(opt_message_clear_cb); + } { Fl_Button* o = new Fl_Button(width-BB-WB, height-BH-WB, BB, BH, "cancel"); o->labelsize(CTX.fontsize); @@ -1432,9 +1548,7 @@ void GUI::create_message_window(){ msg_window->resizable(msg_browser); - if(CTX.center_windows) - msg_window->position(m_window->x()+m_window->w()/2-width/2, - m_window->y()+2*MH); + msg_window->position(CTX.msg_position[0], CTX.msg_position[1]); msg_window->end(); } else{ @@ -1451,6 +1565,13 @@ void GUI::add_message(char *msg){ msg_browser->bottomline(msg_browser->size()); } +void GUI::clear_message(){ + for(int i =msg_browser->size() ; i > 0; i--) + msg_browser->remove(i); + msg_browser->bottomline(msg_browser->size()); + msg_browser->redraw(); +} + void GUI::save_message(char *name){ FILE *fp; @@ -1465,94 +1586,62 @@ void GUI::save_message(char *name){ } Msg(INFO, "Log Creation Complete '%s'", name); - Msg(STATUS2, "Wrote File '%s'", name); + Msg(STATUS2, "Wrote '%s'", name); fclose(fp); } -//***************************** Create the short help window *************************** - -#include "Help.h" - -void GUI::create_help_window(){ - - if(!init_help_window){ - init_help_window = 1 ; - - int width = 38*CTX.fontsize; - int height = 34*CTX.fontsize ; - - help_window = new Fl_Window(width,height); - help_window->box(FL_THIN_UP_BOX); - help_window->label("Short Help"); - - Fl_Scroll*o = new Fl_Scroll(WB, WB, width-2*WB, height-3*WB-BH); - { - Fl_Multiline_Output* o = new Fl_Multiline_Output(WB, WB, 2*width, 3*height); - o->value(txt_help); - o->textfont(FL_COURIER); - o->textsize(CTX.fontsize); - } - o->end(); - - { - Fl_Button* o = new Fl_Button(width-BB-WB, height-BH-WB, BB, BH, "cancel"); - o->labelsize(CTX.fontsize); - o->callback(cancel_cb, (void*)help_window); - } - - help_window->resizable(o); - - if(CTX.center_windows) - help_window->position(m_window->x()+m_window->w()/2-width/2, - m_window->y()+2*MH); - help_window->end(); - } - else{ - if(help_window->shown()) - help_window->redraw(); - else - help_window->show(); - - } - -} - //******************************* Create the about window ****************************** void GUI::create_about_window(){ + char buffer[1024]; if(!init_about_window){ init_about_window = 1 ; int width = 40*CTX.fontsize; - int height = 20*CTX.fontsize; - + int height = 3*WB+10*BH ; + about_window = new Fl_Window(width,height); - about_window->box(FL_THIN_UP_BOX); + about_window->box(WINDOW_BOX); about_window->label("About Gmsh"); - Fl_Box *o = new Fl_Box(2*WB, WB, about_width, height-2*WB); - about_bmp = new Fl_Bitmap(about_bits,about_width,about_height); - about_bmp->label(o); - - Fl_Button *o2 = new Fl_Button(WB+80, WB, width-2*WB-80, height-2*WB); - static char buffer[1024]; - sprintf(buffer, "%s\n\n%s%.2f\n%s\n%sFLTK %d.%d.%d\n%s\n%s\n%s\n%s\n%s\n\n%s" - "\n\nType 'gmsh -help' for command line options", - gmsh_progname, gmsh_version, GMSH_VERSION, gmsh_os, - gmsh_gui, FL_MAJOR_VERSION, FL_MINOR_VERSION, FL_PATCH_VERSION, - gmsh_date, gmsh_host, gmsh_packager, - gmsh_url, gmsh_email, gmsh_copyright); - o2->label(buffer); - o2->box(FL_FLAT_BOX); - o2->labelsize(CTX.fontsize); - o2->labelfont(FL_COURIER); - o2->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); - o2->callback(cancel_cb, (void*)about_window); + { + Fl_Box *o = new Fl_Box(2*WB, WB, about_width, height-3*WB-BH); + about_bmp = new Fl_Bitmap(about_bits,about_width,about_height); + about_bmp->label(o); + } + + { + Fl_Browser *o = new Fl_Browser(WB+80, WB, width-2*WB-80, height-3*WB-BH); + o->add(""); + o->add("@c@b@.Gmsh"); + o->add("@c@.A three-dimensional finite element mesh generator"); + o->add("@c@.with built-in pre- and post-processing facilities"); + o->add(""); + o->add("@c@.Copyright (c) 1997-2001"); + o->add("@c@.Christophe Geuzaine and Jean-Fran�ois Remacle"); + o->add(""); + sprintf(buffer, "@c@.Version: %.2f", GMSH_VERSION); o->add(buffer); + sprintf(buffer, "@c@.Build date: %s", GMSH_DATE); o->add(buffer); + sprintf(buffer, "@c@.Operating system: %s", GMSH_OS); o->add(buffer); + sprintf(buffer, "@c@.Graphical user interface toolkit: FLTK %d.%d.%d", + FL_MAJOR_VERSION, FL_MINOR_VERSION, FL_PATCH_VERSION); o->add(buffer); + sprintf(buffer, "@c@.Build host: %s", GMSH_HOST); o->add(buffer); + sprintf(buffer, "@c@.Packaged by: %s", GMSH_PACKAGER); o->add(buffer); + o->add(""); + o->add("@c@.Please visit http://www.geuz.org/gmsh/ for more info"); + o->textsize(CTX.fontsize); + } + + { + Fl_Return_Button* o = new Fl_Return_Button(width-BB-WB, height-BH-WB, BB, BH, "OK"); + o->labelsize(CTX.fontsize); + o->callback(cancel_cb, (void*)about_window); + } if(CTX.center_windows) about_window->position(m_window->x()+m_window->w()/2-width/2, - m_window->y()+2*MH); + m_window->y()+9*BH-height/2); about_window->end(); } else{ @@ -1572,103 +1661,97 @@ void GUI::create_view_options_window(int num){ if(!init_view_window){ init_view_window = 1 ; - int width = 34*CTX.fontsize; - int height = 5*WB+7*BH + 7*CTX.fontsize; + int width = 32*CTX.fontsize; + int height = 5*WB+10*BH; view_window = new Fl_Window(width,height); - view_window->box(FL_THIN_UP_BOX); + view_window->box(WINDOW_BOX); { Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-BH); - // Colors + // General { - view_colors = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Colors"); - view_colors->labelsize(CTX.fontsize); - view_colors->hide(); - view_colorbar_window = new Colorbar_Window(2*WB, 2*WB+1*BH, - width-4*WB, height-5*WB-2*BH); - view_colorbar_window->end(); - view_colors->end(); - } - // Color bar - { - view_colorbar = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Color bar"); - view_colorbar->labelsize(CTX.fontsize); - view_colorbar->hide(); - view_butt[0] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "Show color bar"); - view_butt[1] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Display time"); - view_butt[2] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Transparent bar"); - for(i=0 ; i<3 ; i++){ + Fl_Group *o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "General"); + o->labelsize(CTX.fontsize); + o->hide(); + view_butt[13] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "Show elements"); + view_butt[14] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Show color bar"); + view_butt[15] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Display time"); + view_butt[16] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW, BH, "Transparent color bar"); + view_butt[17] = new Fl_Check_Button(2*WB, 2*WB+5*BH, IW, BH, "Enable Lighting"); + for(i=13 ; i<18 ; i++){ view_butt[i]->type(FL_TOGGLE_BUTTON); view_butt[i]->down_box(FL_DOWN_BOX); view_butt[i]->labelsize(CTX.fontsize); view_butt[i]->selection_color(FL_YELLOW); } - view_input[0] = new Fl_Input(2*WB, 2*WB+4*BH, IW, BH, "Name"); - view_input[1] = new Fl_Input(2*WB, 2*WB+5*BH, IW, BH, "Format"); + view_input[0] = new Fl_Input(2*WB, 2*WB+6*BH, IW, BH, "Name"); + view_input[1] = new Fl_Input(2*WB, 2*WB+7*BH, IW, BH, "Format"); for(i=0 ; i<2 ; i++){ view_input[i]->labelsize(CTX.fontsize); + view_input[i]->textsize(CTX.fontsize); view_input[i]->align(FL_ALIGN_RIGHT); } - view_colorbar->end(); + o->end(); } // Range { - view_range = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Range"); - view_range->labelsize(CTX.fontsize); - view_range->hide(); - view_butt[3] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "Custom Range"); - view_butt[3]->type(FL_TOGGLE_BUTTON); - view_butt[3]->down_box(FL_DOWN_BOX); - view_butt[3]->labelsize(CTX.fontsize); - view_butt[3]->selection_color(FL_YELLOW); - view_butt[3]->callback(view_options_custom_cb); + Fl_Group *o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Range"); + o->labelsize(CTX.fontsize); + o->hide(); + view_butt[0] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "Custom Range"); + view_butt[0]->type(FL_TOGGLE_BUTTON); + view_butt[0]->down_box(FL_DOWN_BOX); + view_butt[0]->labelsize(CTX.fontsize); + view_butt[0]->selection_color(FL_YELLOW); view_value[0] = new Fl_Value_Input(2*WB, 2*WB+2*BH, IW, BH, "Minimum"); view_value[1] = new Fl_Value_Input(2*WB, 2*WB+3*BH, IW, BH, "Maximum"); for(i=0 ; i<2 ; i++){ view_value[i]->labelsize(CTX.fontsize); + view_value[i]->textsize(CTX.fontsize); view_value[i]->type(FL_HORIZONTAL); view_value[i]->align(FL_ALIGN_RIGHT); } - view_butt[4] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW, BH, "Linear"); - view_butt[5] = new Fl_Check_Button(2*WB, 2*WB+5*BH, BW, BH, "Logarithmic"); - for(i=4 ; i<6 ; i++){ + view_butt[1] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW, BH, "Linear"); + view_butt[2] = new Fl_Check_Button(2*WB, 2*WB+5*BH, BW, BH, "Logarithmic"); + for(i=1 ; i<3 ; i++){ view_butt[i]->type(FL_RADIO_BUTTON); view_butt[i]->labelsize(CTX.fontsize); view_butt[i]->selection_color(FL_YELLOW); } - view_range->end(); + o->end(); } // Intervals { - view_intervals = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Intervals"); - view_intervals->labelsize(CTX.fontsize); + Fl_Group *o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Intervals"); + o->labelsize(CTX.fontsize); //view_intervals->hide(); view_value[2] = new Fl_Value_Input(2*WB, 2*WB+1*BH, IW, BH, "Number of intervals"); view_value[2]->labelsize(CTX.fontsize); + view_value[2]->textsize(CTX.fontsize); view_value[2]->type(FL_HORIZONTAL); view_value[2]->align(FL_ALIGN_RIGHT); view_value[2]->minimum(1); view_value[2]->maximum(256); view_value[2]->step(1); - view_butt[6] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Iso-values"); - view_butt[7] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Filled iso-values"); - view_butt[8] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW, BH, "Continuous map"); - view_butt[9] = new Fl_Check_Button(2*WB, 2*WB+5*BH, BW, BH, "Numeric values"); - for(i=6 ; i<10 ; i++){ + view_butt[3] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Iso-values"); + view_butt[4] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Filled iso-values"); + view_butt[5] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW, BH, "Continuous map"); + view_butt[6] = new Fl_Check_Button(2*WB, 2*WB+5*BH, BW, BH, "Numeric values"); + for(i=3 ; i<7 ; i++){ view_butt[i]->type(FL_RADIO_BUTTON); view_butt[i]->labelsize(CTX.fontsize); view_butt[i]->selection_color(FL_YELLOW); } - view_intervals->end(); + o->end(); } // Offset and Raise { - view_offsetraise = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Offset"); - view_offsetraise->labelsize(CTX.fontsize); - view_offsetraise->hide(); + Fl_Group *o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Offset"); + o->labelsize(CTX.fontsize); + o->hide(); view_value[3] = new Fl_Value_Input(2*WB, 2*WB+1*BH, IW, BH, "X offset"); view_value[4] = new Fl_Value_Input(2*WB, 2*WB+2*BH, IW, BH, "Y offset"); view_value[5] = new Fl_Value_Input(2*WB, 2*WB+3*BH, IW, BH, "Z offset"); @@ -1677,10 +1760,11 @@ void GUI::create_view_options_window(int num){ view_value[8] = new Fl_Value_Input(width/2, 2*WB+3*BH, IW, BH, "Z raise"); for(i=3 ; i<9 ; i++){ view_value[i]->labelsize(CTX.fontsize); + view_value[i]->textsize(CTX.fontsize); view_value[i]->type(FL_HORIZONTAL); view_value[i]->align(FL_ALIGN_RIGHT); } - view_offsetraise->end(); + o->end(); } // Time step { @@ -1689,6 +1773,7 @@ void GUI::create_view_options_window(int num){ view_timestep->hide(); view_value[9] = new Fl_Value_Input(2*WB, 2*WB+BH, IW, BH, "Time step number"); view_value[9]->labelsize(CTX.fontsize); + view_value[9]->textsize(CTX.fontsize); view_value[9]->type(FL_HORIZONTAL); view_value[9]->align(FL_ALIGN_RIGHT); view_value[9]->minimum(0); @@ -1704,48 +1789,53 @@ void GUI::create_view_options_window(int num){ { Fl_Group *o = new Fl_Group(2*WB, WB+BH, width-4*WB, 2*BH, 0); - view_butt[10] = new Fl_Check_Button(2*WB, 2*WB+1*BH, IW, BH, "Line"); - view_butt[11] = new Fl_Check_Button(2*WB, 2*WB+2*BH, IW, BH, "Arrow"); - view_butt[12] = new Fl_Check_Button(width/2, 2*WB+1*BH, IW, BH, "Cone"); - view_butt[13] = new Fl_Check_Button(width/2, 2*WB+2*BH, IW, BH, "Displacement"); - for(i=10 ; i<14 ; i++){ + view_butt[7] = new Fl_Check_Button(2*WB, 2*WB+1*BH, IW, BH, "Line"); + view_butt[8] = new Fl_Check_Button(2*WB, 2*WB+2*BH, IW, BH, "Arrow"); + view_butt[9] = new Fl_Check_Button(width/2, 2*WB+1*BH, IW, BH, "Cone"); + view_butt[10] = new Fl_Check_Button(width/2, 2*WB+2*BH, IW, BH, "Displacement"); + for(i=7 ; i<11 ; i++){ view_butt[i]->type(FL_RADIO_BUTTON); view_butt[i]->labelsize(CTX.fontsize); view_butt[i]->selection_color(FL_YELLOW); } o->end(); } - { Fl_Group *o = new Fl_Group(2*WB, WB+3*BH, width-4*WB, 2*BH, 0); - view_butt[14] = new Fl_Check_Button(2*WB, 2*WB+3*BH, IW, BH, "Cell centered"); - view_butt[15] = new Fl_Check_Button(2*WB, 2*WB+4*BH, IW, BH, "Vertex centered"); - for(i=14 ; i<16 ; i++){ + view_butt[11] = new Fl_Check_Button(2*WB, 2*WB+3*BH, IW, BH, "Cell centered"); + view_butt[12] = new Fl_Check_Button(2*WB, 2*WB+4*BH, IW, BH, "Vertex centered"); + for(i=11 ; i<13 ; i++){ view_butt[i]->type(FL_RADIO_BUTTON); view_butt[i]->labelsize(CTX.fontsize); view_butt[i]->selection_color(FL_YELLOW); } o->end(); } - view_value[10] = new Fl_Value_Input(2*WB, 2*WB+ 5*BH, IW, BH, "Vector scale"); view_value[10]->labelsize(CTX.fontsize); + view_value[10]->textsize(CTX.fontsize); view_value[10]->type(FL_HORIZONTAL); view_value[10]->align(FL_ALIGN_RIGHT); view_value[10]->minimum(0); view_value[10]->maximum(100000); view_value[10]->step(1); - view_vector->end(); } + // Colors + { + Fl_Group *o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Colors"); + o->labelsize(CTX.fontsize); + o->hide(); + view_colorbar_window = new Colorbar_Window(2*WB, 2*WB+1*BH, + width-4*WB, height-5*WB-2*BH); + view_colorbar_window->end(); + o->end(); + } o->end(); } - { - Fl_Return_Button* o = new Fl_Return_Button(width-2*BB-2*WB, height-BH-WB, BB, BH, "OK"); - o->labelsize(CTX.fontsize); - printf("num = %d\n",num); - o->callback(view_options_ok_cb,(void*)num); + { view_ok = new Fl_Return_Button(width-2*BB-2*WB, height-BH-WB, BB, BH, "OK"); + view_ok->labelsize(CTX.fontsize); } { Fl_Button* o = new Fl_Button(width-BB-WB, height-BH-WB, BB, BH, "cancel"); @@ -1755,9 +1845,9 @@ void GUI::create_view_options_window(int num){ if(CTX.center_windows) view_window->position(m_window->x()+m_window->w()/2-width/2, - m_window->y()+2*MH); + m_window->y()+9*BH-height/2); - view_window->resizable(view_colorbar_window); + //view_window->resizable(view_colorbar_window); view_window->end(); } else{ @@ -1781,16 +1871,17 @@ void GUI::update_view_window(int num){ sprintf(buffer, "Options for \"%s\" (\"%s\")", v->Name, v->FileName); view_window->label(buffer); - // colobar + // general + opt_view_show_element(num, GMSH_GUI, 0); opt_view_show_scale(num, GMSH_GUI, 0); opt_view_show_time(num, GMSH_GUI, 0); opt_view_transparent_scale(num, GMSH_GUI, 0); opt_view_name(num, GMSH_GUI, NULL); opt_view_format(num, GMSH_GUI, NULL); - view_colorbar_window->update(v->Name, v->Min, v->Max, &v->CT, &v->Changed); // range opt_view_range_type(num, GMSH_GUI, 0); + view_butt[0]->callback(view_options_custom_cb, (void*)num); view_options_custom_cb(0,0); opt_view_custom_min(num, GMSH_GUI, 0); opt_view_custom_max(num, GMSH_GUI, 0); @@ -1833,6 +1924,15 @@ void GUI::update_view_window(int num){ opt_view_arrow_scale(num, GMSH_GUI, 0); opt_view_arrow_location(num, GMSH_GUI, 0); + // colors + view_colorbar_window->update(v->Name, v->Min, v->Max, &v->CT, &v->Changed); + + // light + opt_view_light(num, GMSH_GUI, 0); + + // OK + view_ok->callback(view_options_ok_cb, (void*)num); + } //*************** Create the window for geometry context dependant definitions ********* @@ -1848,7 +1948,7 @@ void GUI::create_geometry_context_window(int num){ int height = 5*WB+9*BH ; context_geometry_window = new Fl_Window(width,height); - context_geometry_window->box(FL_THIN_UP_BOX); + context_geometry_window->box(WINDOW_BOX); context_geometry_window->label("Contextual Geometry Definitions"); { Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-BH); @@ -1860,6 +1960,7 @@ void GUI::create_geometry_context_window(int num){ context_geometry_input[1] = new Fl_Input (2*WB, 2*WB+2*BH, IW, BH, "Value"); for(i=0 ; i<2 ; i++){ context_geometry_input[i]->labelsize(CTX.fontsize); + context_geometry_input[i]->textsize(CTX.fontsize); context_geometry_input[i]->align(FL_ALIGN_RIGHT); } { @@ -1879,6 +1980,7 @@ void GUI::create_geometry_context_window(int num){ context_geometry_input[5] = new Fl_Input (2*WB, 2*WB+4*BH, IW, BH, "Characteristic length"); for(i=2 ; i<6 ; i++){ context_geometry_input[i]->labelsize(CTX.fontsize); + context_geometry_input[i]->textsize(CTX.fontsize); context_geometry_input[i]->align(FL_ALIGN_RIGHT); } { @@ -1897,6 +1999,7 @@ void GUI::create_geometry_context_window(int num){ context_geometry_input[8] = new Fl_Input (2*WB, 2*WB+3*BH, IW, BH, "Z component"); for(i=6 ; i<9 ; i++){ context_geometry_input[i]->labelsize(CTX.fontsize); + context_geometry_input[i]->textsize(CTX.fontsize); context_geometry_input[i]->align(FL_ALIGN_RIGHT); } { @@ -1919,6 +2022,7 @@ void GUI::create_geometry_context_window(int num){ context_geometry_input[15] = new Fl_Input (2*WB, 2*WB+7*BH, IW, BH, "Angle in radians"); for(i=9 ; i<16 ; i++){ context_geometry_input[i]->labelsize(CTX.fontsize); + context_geometry_input[i]->textsize(CTX.fontsize); context_geometry_input[i]->align(FL_ALIGN_RIGHT); } { @@ -1938,6 +2042,7 @@ void GUI::create_geometry_context_window(int num){ context_geometry_input[19] = new Fl_Input (2*WB, 2*WB+4*BH, IW, BH, "Factor"); for(i=16 ; i<20 ; i++){ context_geometry_input[i]->labelsize(CTX.fontsize); + context_geometry_input[i]->textsize(CTX.fontsize); context_geometry_input[i]->align(FL_ALIGN_RIGHT); } { @@ -1957,6 +2062,7 @@ void GUI::create_geometry_context_window(int num){ context_geometry_input[23] = new Fl_Input (2*WB, 2*WB+4*BH, IW, BH, "4th plane equation coefficient"); for(i=20 ; i<24 ; i++){ context_geometry_input[i]->labelsize(CTX.fontsize); + context_geometry_input[i]->textsize(CTX.fontsize); context_geometry_input[i]->align(FL_ALIGN_RIGHT); } { @@ -1980,7 +2086,7 @@ void GUI::create_geometry_context_window(int num){ if(CTX.center_windows) context_geometry_window->position(m_window->x()+m_window->w()/2-width/2, - m_window->y()+2*MH); + m_window->y()+9*BH-height/2); context_geometry_window->end(); context_geometry_window->show(); } @@ -1999,31 +2105,6 @@ void GUI::create_geometry_context_window(int num){ } -char *GUI::get_geometry_parameter(int num){//name, val - return (char*)context_geometry_input[num]->value(); -} - -char *GUI::get_geometry_point(int num){//x, y, z, l - return (char*)context_geometry_input[num+2]->value(); -} - -char *GUI::get_geometry_translation(int num){//x, y, z - return (char*)context_geometry_input[num+6]->value(); -} - -char *GUI::get_geometry_rotation(int num){//px, py, pz, ax, ay, az, ang - return (char*)context_geometry_input[num+9]->value(); -} - -char *GUI::get_geometry_scale(int num){//x, y, z, f - return (char*)context_geometry_input[num+16]->value(); -} - -char *GUI::get_geometry_symmetry(int num){//a, b, c, d - return (char*)context_geometry_input[num+20]->value(); -} - - //************** Create the window for mesh context dependant definitions ************** void GUI::create_mesh_context_window(int num){ @@ -2037,7 +2118,7 @@ void GUI::create_mesh_context_window(int num){ int height = 5*WB+5*BH ; context_mesh_window = new Fl_Window(width,height); - context_mesh_window->box(FL_THIN_UP_BOX); + context_mesh_window->box(WINDOW_BOX); context_mesh_window->label("Contextual Mesh Definitions"); { Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-BH); @@ -2047,6 +2128,7 @@ void GUI::create_mesh_context_window(int num){ g[0]->labelsize(CTX.fontsize); context_mesh_input[0] = new Fl_Input (2*WB, 2*WB+1*BH, IW, BH, "Value"); context_mesh_input[0]->labelsize(CTX.fontsize); + context_mesh_input[0]->textsize(CTX.fontsize); context_mesh_input[0]->align(FL_ALIGN_RIGHT); { Fl_Return_Button* o = new Fl_Return_Button(width-BB-2*WB, 2*WB+3*BH, BB, BH, "set"); @@ -2063,6 +2145,7 @@ void GUI::create_mesh_context_window(int num){ context_mesh_input[2] = new Fl_Input (2*WB, 2*WB+2*BH, IW, BH, "Distribution"); for(i=1 ; i<3 ; i++){ context_mesh_input[i]->labelsize(CTX.fontsize); + context_mesh_input[i]->textsize(CTX.fontsize); context_mesh_input[i]->align(FL_ALIGN_RIGHT); } { @@ -2078,6 +2161,7 @@ void GUI::create_mesh_context_window(int num){ g[2]->labelsize(CTX.fontsize); context_mesh_input[3] = new Fl_Input (2*WB, 2*WB+1*BH, IW, BH, "Volume number"); context_mesh_input[3]->labelsize(CTX.fontsize); + context_mesh_input[3]->textsize(CTX.fontsize); context_mesh_input[3]->align(FL_ALIGN_RIGHT); { Fl_Return_Button* o = new Fl_Return_Button(width-BB-2*WB, 2*WB+3*BH, BB, BH, "set"); @@ -2100,7 +2184,7 @@ void GUI::create_mesh_context_window(int num){ if(CTX.center_windows) context_mesh_window->position(m_window->x()+m_window->w()/2-width/2, - m_window->y()+2*MH); + m_window->y()+9*BH-height/2); context_mesh_window->end(); context_mesh_window->show(); } @@ -2118,15 +2202,3 @@ void GUI::create_mesh_context_window(int num){ } } -char *GUI::get_mesh_length(){//val - return (char*)context_mesh_input[0]->value(); -} - -char *GUI::get_mesh_transfinite_line(int num){//pts, distrib - return (char*)context_mesh_input[num+1]->value(); -} - -char *GUI::get_mesh_transfinite_volume(){//numvol - return (char*)context_mesh_input[3]->value(); -} - diff --git a/Fltk/GUI.h b/Fltk/GUI.h index f4092b89cb42db9b923232b40708b5c5b0a729d7..1528a37efba95e8322da5bec23c7355f937a4edc 100644 --- a/Fltk/GUI.h +++ b/Fltk/GUI.h @@ -22,6 +22,7 @@ #include <FL/Fl_Bitmap.H> #include <FL/Fl_Browser.H> #include <FL/x.H> +#include <FL/Fl_Color_Chooser.H> #include "Opengl_Window.h" #include "Colorbar_Window.h" @@ -100,8 +101,10 @@ public: // general options window int init_general_options_window; Fl_Window *gen_window ; - Fl_Check_Button *gen_butt[10] ; + Fl_Check_Button *gen_butt[20] ; Fl_Value_Input *gen_value[10] ; + Fl_Button *gen_col[50] ; + Fl_Input *gen_input[10] ; // geometry options window int init_geometry_options_window; @@ -109,6 +112,7 @@ public: Fl_Check_Button *geo_butt[10] ; Fl_Input *geo_input ; Fl_Value_Input *geo_value[10] ; + Fl_Button *geo_col[50] ; // mesh options window int init_mesh_options_window; @@ -116,6 +120,7 @@ public: Fl_Check_Button *mesh_butt[20] ; Fl_Input *mesh_input ; Fl_Value_Input *mesh_value[20] ; + Fl_Button *mesh_col[50] ; // post-processing options window int init_post_options_window; @@ -133,10 +138,6 @@ public: Fl_Window *msg_window ; Fl_Browser *msg_browser ; - // help window - int init_help_window; - Fl_Window *help_window ; - // about window int init_about_window; Fl_Window *about_window ; @@ -144,12 +145,12 @@ public: // view options window int init_view_window, view_number ; Fl_Window *view_window ; - Fl_Group *view_colors, *view_colorbar, *view_range, *view_intervals ; - Fl_Group *view_offsetraise, *view_timestep, *view_vector ; + Fl_Group *view_timestep, *view_vector ; Fl_Check_Button *view_butt[20] ; Fl_Value_Input *view_value[20] ; Fl_Input *view_input[20] ; Colorbar_Window *view_colorbar_window ; + Fl_Return_Button *view_ok ; // geometry context window int init_geometry_context_window; @@ -175,7 +176,6 @@ public: void create_view_options_window(int numview); void create_statistics_window(); void create_message_window(); - void create_help_window(); void create_about_window(); void create_geometry_context_window(int num); void create_mesh_context_window(int num); @@ -190,12 +190,12 @@ public: void redraw_overlay(); void set_size(int w, int h); void set_menu_size(int nb_butt); - void get_position(int m[2], int g[2]); void set_context(Context_Item menu[], int flag); int get_context(); void set_anim(int mode); void set_status(char *msg, int num); void add_message(char *msg); + void clear_message(); void save_message(char *filename); void set_statistics(); void update_view_window(int numview); @@ -204,20 +204,6 @@ public: int global_shortcuts(int event); int try_selection, quit_selection, end_selection; - // geometry contexts queries - char *get_geometry_parameter(int num); - char *get_geometry_point(int num); - char *get_geometry_translation(int num); - char *get_geometry_rotation(int num); - char *get_geometry_scale(int num); - char *get_geometry_symmetry(int num); - - // mesh contexts queries - char *get_mesh_length(); - char *get_mesh_transfinite_line(int num); - char *get_mesh_transfinite_volume(); - - }; diff --git a/Fltk/Main.cpp b/Fltk/Main.cpp index c1dce00915f9ea952c168323fd7e4b43a175769a..66065a496cf4b356837f0d85b180e2a886e4afc6 100644 --- a/Fltk/Main.cpp +++ b/Fltk/Main.cpp @@ -1,4 +1,4 @@ -// $Id: Main.cpp,v 1.16 2001-02-12 17:38:03 geuzaine Exp $ +// $Id: Main.cpp,v 1.17 2001-02-17 22:02:17 geuzaine Exp $ #include <signal.h> @@ -27,13 +27,19 @@ int main(int argc, char *argv[]){ Init_Context(0); + // Configuration files and command line options + + Get_Options(argc, argv, &nbf); + // This does not work with FLTK right now... + CTX.overlay = 0 ; CTX.geom.highlight = 0 ; - // Configuration file and command line options + // Always print info on terminal for non-interactive execution - Get_Options(argc, argv, &nbf); + if(CTX.interactive) + CTX.terminal = 1; if(CTX.verbosity && CTX.terminal) fprintf(stderr, "%s, Version %.2f\n", gmsh_progname, GMSH_VERSION); @@ -65,9 +71,7 @@ int main(int argc, char *argv[]){ if(yyerrorstate) exit(1); else { - if(nbf > 1){ - for(i=1;i<nbf;i++) MergeProblem(TheFileNameTab[i]); - } + for(i=1;i<nbf;i++) MergeProblem(TheFileNameTab[i]); if(TheBgmFileName){ MergeProblem(TheBgmFileName); if(List_Nbr(Post_ViewList)) @@ -94,9 +98,9 @@ int main(int argc, char *argv[]){ WID = new GUI(argc, argv); - // Set all options in the GUI + // Set all previously defined options in the GUI - UpdateGUI_Context(0); + Init_Context_GUI(0); // The GUI is ready CTX.interactive = 0 ; @@ -106,10 +110,12 @@ int main(int argc, char *argv[]){ Msg(STATUS3N, "Ready"); Msg(STATUS1, "Gmsh %.2f", GMSH_VERSION); + Msg(LOG_INFO, "-------------------------------------------------------"); Msg(LOG_INFO, gmsh_os); Msg(LOG_INFO, gmsh_date); Msg(LOG_INFO, gmsh_host); Msg(LOG_INFO, gmsh_packager); + Msg(LOG_INFO, "-------------------------------------------------------"); // Display the GUI to have a quick "a la Windows" launch time @@ -119,15 +125,16 @@ int main(int argc, char *argv[]){ OpenProblem(CTX.filename); - // Merge all Input Files, then init first context (geometry or post) + // Merge all Input Files + + for(i=1;i<nbf;i++) MergeProblem(TheFileNameTab[i]); + + // Init first context (geometry or post) - if(nbf > 1){ - for(i=1;i<nbf;i++) MergeProblem(TheFileNameTab[i]); + if(List_Nbr(Post_ViewList)) WID->set_context(menu_post, 0); - } - else { + else WID->set_context(menu_geometry, 0); - } // Read background mesh on disk diff --git a/Fltk/Makefile b/Fltk/Makefile index 5650e00cc9335d7f5706227e06352b6647827968..33adfddaccc33a9aed166b802029944af3632400 100644 --- a/Fltk/Makefile +++ b/Fltk/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.9 2001-02-12 17:42:20 geuzaine Exp $ +# $Id: Makefile,v 1.10 2001-02-17 22:02:17 geuzaine Exp $ # # Makefile for "libFltk.a" # @@ -74,8 +74,9 @@ Main.o: Main.cpp ../Common/Gmsh.h ../Common/Message.h \ Message.o: Message.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \ - ../Common/GmshVersion.h ../Common/Context.h ../Common/Const.h GUI.h \ - Opengl_Window.h Colorbar_Window.h ../Common/ColorTable.h + ../Common/GmshVersion.h ../Common/Context.h ../Common/Const.h \ + ../Common/Options.h GUI.h Opengl_Window.h Colorbar_Window.h \ + ../Common/ColorTable.h GUI.o: GUI.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \ @@ -84,7 +85,7 @@ GUI.o: GUI.cpp ../Common/Gmsh.h ../Common/Message.h \ ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \ ../Mesh/Metric.h ../Graphics/Draw.h ../Common/Views.h \ ../Common/ColorTable.h GUI.h Opengl_Window.h Colorbar_Window.h \ - Callbacks.h ../Common/Bitmaps.h ../Common/GetOptions.h Help.h + Callbacks.h ../Common/Bitmaps.h ../Common/GetOptions.h Callbacks.o: Callbacks.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \ @@ -92,9 +93,9 @@ Callbacks.o: Callbacks.cpp ../Common/Gmsh.h ../Common/Message.h \ ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \ ../Graphics/Draw.h ../Common/Views.h ../Common/Const.h \ ../Common/ColorTable.h ../Common/Timer.h ../Geo/Visibility.h \ - ../Graphics/CreateFile.h ../Parser/OpenFile.h ../Common/Context.h \ - ../Common/Options.h GUI.h Opengl_Window.h Colorbar_Window.h \ - Callbacks.h + ../Graphics/CreateFile.h ../Parser/OpenFile.h ../Common/GetOptions.h \ + ../Common/Context.h ../Common/Options.h GUI.h Opengl_Window.h \ + Colorbar_Window.h Callbacks.h Opengl.o: Opengl.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \ diff --git a/Fltk/Message.cpp b/Fltk/Message.cpp index a38a18b404001536d6c3071ebc048c565706f6ca..e95a0b21061476ce96a9932d40eff1a905fcf244 100644 --- a/Fltk/Message.cpp +++ b/Fltk/Message.cpp @@ -1,4 +1,4 @@ -// $Id: Message.cpp,v 1.12 2001-02-12 17:38:03 geuzaine Exp $ +// $Id: Message.cpp,v 1.13 2001-02-17 22:02:18 geuzaine Exp $ #include <signal.h> #ifndef WIN32 @@ -9,6 +9,7 @@ #include "GmshUI.h" #include "GmshVersion.h" #include "Context.h" +#include "Options.h" #include "GUI.h" extern GUI *WID; @@ -32,7 +33,8 @@ void Signal (int sig_num){ Msg(FATAL, "Floating Point Exception (Division by Zero?)"); break; case SIGINT : - Msg(FATAL, "Interrupt (Generated from Terminal Special Character)"); + Msg(INFO, "Interrupt (Generated from Terminal Special Character)"); + Exit(1); break; default : Msg(FATAL, "Unknown Signal"); @@ -96,7 +98,7 @@ void Msg(int level, char *fmt, ...){ static char buff1[1024], buff2[1024], buff[4][1024]; - if(CTX.interactive || !WID) + if(!WID) window = -1; else WID->check(); @@ -115,7 +117,7 @@ void Msg(int level, char *fmt, ...){ vsprintf(buff2, fmt, args); strcat(buff1,buff2); if(CTX.terminal) fprintf(stderr, "%s\n", &buff1[3]); - if(WID && !CTX.interactive){ + if(WID){ if(verb<2) WID->add_message(buff1); else @@ -126,8 +128,8 @@ void Msg(int level, char *fmt, ...){ va_end (args); } - if(WID && abort){ - WID->save_message(".gmshlog"); + if(abort){ + if(WID) WID->save_message(CTX.error_filename); Exit(1); } } @@ -138,9 +140,20 @@ void Msg(int level, char *fmt, ...){ /* ------------------------------------------------------------------------ */ void Exit(int level){ - if(!CTX.interactive){ - WID->get_position(CTX.position, CTX.gl_position); - Print_Configuration(0, CTX.configfilename); + if(WID && !CTX.interactive){ + if(CTX.session_save){ + CTX.position[0] = WID->m_window->x(); + CTX.position[1] = WID->m_window->y(); + CTX.gl_position[0] = WID->g_window->x(); + CTX.gl_position[1] = WID->g_window->y(); + CTX.msg_position[0] = WID->msg_window->x(); + CTX.msg_position[1] = WID->msg_window->y(); + CTX.msg_size[0] = WID->msg_window->w(); + CTX.msg_size[1] = WID->msg_window->h(); + Print_Context(0, GMSH_SESSIONRC, CTX.sessionrc_filename); + } + if(CTX.options_save) + Print_Context(0, GMSH_OPTIONSRC, CTX.optionsrc_filename); } exit(level); } diff --git a/Geo/Geo.cpp b/Geo/Geo.cpp index 1daeef8012fc3c5dd42ce1749fb084b4e46d5681..a7bde5ebb67bb80d4edf41c75fb11db1e72b989d 100644 --- a/Geo/Geo.cpp +++ b/Geo/Geo.cpp @@ -1,4 +1,4 @@ -// $Id: Geo.cpp,v 1.17 2001-01-13 15:41:35 geuzaine Exp $ +// $Id: Geo.cpp,v 1.18 2001-02-17 22:08:55 geuzaine Exp $ #include "Gmsh.h" #include "Const.h" @@ -6,6 +6,9 @@ #include "CAD.h" #include "DataBase.h" #include "Parser.h" +#include "Context.h" + +extern Context_T CTX ; #define BUFFSIZE 32000 @@ -33,7 +36,7 @@ double evaluate_scalarfunction (char *var, double val, char *funct){ FILE *tempf; tempf = yyin; - if(!(yyin = fopen(".gmshtmp","w"))){ + if(!(yyin = fopen(CTX.tmp_filename,"w"))){ Msg(GERROR, "Unable to Open Temporary File"); return 0.; } @@ -43,7 +46,7 @@ double evaluate_scalarfunction (char *var, double val, char *funct){ fprintf(yyin,"%s = %g ;\n",var,val); fprintf(yyin,"ValeurTemporaire__ = %s ;\n",funct); fclose(yyin); - yyin = fopen(".gmshtmp","r"); + yyin = fopen(CTX.tmp_filename,"r"); while(!feof(yyin)){ yyparse(); } @@ -63,7 +66,7 @@ double evaluate_scalarfunction (char *var, double val, char *funct){ void add_infile(char *text, char *fich){ FILE *file; - if(!(yyin = fopen(".gmshtmp","w"))){ + if(!(yyin = fopen(CTX.tmp_filename,"w"))){ Msg(GERROR, "Unable to Open Temporary File"); return; } @@ -74,7 +77,7 @@ void add_infile(char *text, char *fich){ fprintf(yyin,"%s\n",text); Msg(STATUS1,"%s",text); fclose(yyin); - yyin = fopen(".gmshtmp","r"); + yyin = fopen(CTX.tmp_filename,"r"); while(!feof(yyin)){ yyparse(); } diff --git a/Geo/Makefile b/Geo/Makefile index 814e130ead3b6a145db67a55f93823873371f133..28f9a0a6bde890b2f77e4d336a6f58ae3988049f 100644 --- a/Geo/Makefile +++ b/Geo/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.12 2001-02-12 17:42:22 geuzaine Exp $ +# $Id: Makefile,v 1.13 2001-02-17 22:08:55 geuzaine Exp $ # # Makefile for "libGeo.a" # @@ -83,7 +83,8 @@ Geo.o: Geo.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../Common/Const.h Geo.h CAD.h \ ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \ - ../Geo/ExtrudeParams.h ../Mesh/Metric.h DataBase.h ../Parser/Parser.h + ../Geo/ExtrudeParams.h ../Mesh/Metric.h DataBase.h ../Parser/Parser.h \ + ../Common/Context.h StepGeomDatabase.o: StepGeomDatabase.cpp ../Common/Gmsh.h \ ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \ ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \ diff --git a/Geo/Print_Geo.cpp b/Geo/Print_Geo.cpp index 94d21667fdaa5ed00984889a3e72392aeda67632..c9fab281d07216e9bdaf596bead5f8f9a17a2263 100644 --- a/Geo/Print_Geo.cpp +++ b/Geo/Print_Geo.cpp @@ -1,4 +1,4 @@ -// $Id: Print_Geo.cpp,v 1.13 2001-01-12 13:28:57 geuzaine Exp $ +// $Id: Print_Geo.cpp,v 1.14 2001-02-17 22:08:55 geuzaine Exp $ #include "Gmsh.h" #include "Geo.h" @@ -240,7 +240,7 @@ void Print_Geo(Mesh *M, char *filename){ if(filename){ Msg(INFO, "Geo Output Complete '%s'", filename); - Msg(STATUS2, "Wrote File '%s'", filename); + Msg(STATUS2, "Wrote '%s'", filename); fclose(FOUT); } diff --git a/Graphics/CreateFile.cpp b/Graphics/CreateFile.cpp index b18e7602831af5508e5ea81ed9114231a9e881a4..26aefea29b437b9539710170356a2acf40d0bd3d 100644 --- a/Graphics/CreateFile.cpp +++ b/Graphics/CreateFile.cpp @@ -1,4 +1,4 @@ -// $Id: CreateFile.cpp,v 1.15 2001-02-09 07:59:50 geuzaine Exp $ +// $Id: CreateFile.cpp,v 1.16 2001-02-17 22:08:56 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -103,7 +103,7 @@ void CreateOutputFile (char *name, int format) { } Window_Dump(XCTX.display, XCTX.scrnum, XtWindow(WID.G.glw), fp); Msg(INFO, "XPM Creation Complete '%s'", name); - Msg(STATUS2, "Wrote File '%s'", name); + Msg(STATUS2, "Wrote '%s'", name); fclose(fp); break; #endif @@ -118,7 +118,7 @@ void CreateOutputFile (char *name, int format) { CTX.viewport[3]-CTX.viewport[1], CTX.print.jpeg_quality); Msg(INFO, "JPEG Creation Complete '%s'", name); - Msg(STATUS2, "Wrote File '%s'", name); + Msg(STATUS2, "Wrote '%s'", name); fclose(fp); break; @@ -138,7 +138,7 @@ void CreateOutputFile (char *name, int format) { UNPACK_GREEN(CTX.color.bg), UNPACK_BLUE(CTX.color.bg)); Msg(INFO, "GIF Creation Complete '%s'", name); - Msg(STATUS2, "Wrote File '%s'", name); + Msg(STATUS2, "Wrote '%s'", name); fclose(fp); break; @@ -151,7 +151,7 @@ void CreateOutputFile (char *name, int format) { create_ppm(fp, CTX.viewport[2]-CTX.viewport[0], CTX.viewport[3]-CTX.viewport[1]); Msg(INFO, "PPM Creation Complete '%s'", name); - Msg(STATUS2, "Wrote File '%s'", name); + Msg(STATUS2, "Wrote '%s'", name); fclose(fp); break; @@ -164,7 +164,7 @@ void CreateOutputFile (char *name, int format) { create_yuv(fp, CTX.viewport[2]-CTX.viewport[0], CTX.viewport[3]-CTX.viewport[1]); Msg(INFO, "YUV Creation Complete '%s'", name); - Msg(STATUS2, "Wrote File '%s'", name); + Msg(STATUS2, "Wrote '%s'", name); fclose(fp); break; @@ -189,7 +189,7 @@ void CreateOutputFile (char *name, int format) { system(cmd); unlink(tmpFileName); Msg(INFO, "Bitmap EPS Creation Complete '%s'", name); - Msg(STATUS2, "Wrote File '%s'", name); + Msg(STATUS2, "Wrote '%s'", name); fclose(fp); break; #endif @@ -214,7 +214,7 @@ void CreateOutputFile (char *name, int format) { res = gl2psEndPage(); } Msg(INFO, "EPS Creation Complete '%s'", name); - Msg(STATUS2, "Wrote File '%s'", name); + Msg(STATUS2, "Wrote '%s'", name); fclose(fp); CTX.print.gl_fonts = 1; break; diff --git a/Graphics/Mesh.cpp b/Graphics/Mesh.cpp index 363a2210293940bc773fc0c7dfb7067a85c19fbe..6d054e1c496a41f55ade8050a3f28e79a6130a28 100644 --- a/Graphics/Mesh.cpp +++ b/Graphics/Mesh.cpp @@ -1,4 +1,4 @@ -// $Id: Mesh.cpp,v 1.20 2001-02-09 14:51:31 geuzaine Exp $ +// $Id: Mesh.cpp,v 1.21 2001-02-17 22:08:56 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -53,7 +53,7 @@ static int DrawVertexSupp ; void Draw_Mesh (Mesh *M) { int i; - InitRenderModel(); + if(!CTX.moving_light) InitRenderModel(); if(CTX.mesh.shade) InitShading(); @@ -62,6 +62,8 @@ void Draw_Mesh (Mesh *M) { InitPosition(); + if(CTX.moving_light) InitRenderModel(); + for(i = 0 ; i < 6 ; i++) if(CTX.clip[i]) glClipPlane((GLenum)(GL_CLIP_PLANE0 + i), CTX.clip_plane[i]); @@ -225,7 +227,10 @@ void Draw_Simplex_Volume (void *a, void *b){ if((*s)->RhoShapeMeasure() > CTX.mesh.limit_rho) return; } - ColorSwitch((*s)->iEnt+1); + if(CTX.mesh.color_carousel) + ColorSwitch((*s)->iEnt+1); + else + glColor4ubv((GLubyte*)&CTX.color.mesh.tetrahedron); for (int i=0 ; i<4 ; i++) { X[i] = Xc + CTX.mesh.explode * ((*s)->V[i]->Pos.X - Xc); @@ -454,9 +459,14 @@ void Draw_Simplex_Surfaces (void *a, void *b){ glNormal3dv(n); } - // ColorSwitch(abs(iVolume)); - // printf("%d\n",(*s)->iEnt); - ColorSwitch((*s)->iEnt); + if(CTX.mesh.color_carousel) + ColorSwitch((*s)->iEnt); + else{ + if(K==3) + glColor4ubv((GLubyte*)&CTX.color.mesh.triangle); + else + glColor4ubv((GLubyte*)&CTX.color.mesh.quadrangle); + } if(CTX.mesh.surfaces_num){ sprintf(Num,"%d",(*s)->Num); @@ -556,9 +566,11 @@ void Draw_Hexahedron_Volume (void *a, void *b){ { if(CTX.mesh.evalCutPlane(Xc,Yc,Zc) < 0)return; } - - //glColor4ubv((GLubyte*)&CTX.color.mesh.hexahedron); - ColorSwitch((*h)->iEnt+1); + + if(CTX.mesh.color_carousel) + ColorSwitch((*h)->iEnt+1); + else + glColor4ubv((GLubyte*)&CTX.color.mesh.hexahedron); for (i=0 ; i<8 ; i++) { X[i] = Xc + CTX.mesh.explode * 0.99 * ((*h)->V[i]->Pos.X - Xc); @@ -648,8 +660,10 @@ void Draw_Prism_Volume (void *a, void *b){ if(!EntiteEstElleVisible((*p)->iEnt)) return; - //glColor4ubv((GLubyte*)&CTX.color.mesh.prism); - ColorSwitch((*p)->iEnt+1); + if(CTX.mesh.color_carousel) + ColorSwitch((*p)->iEnt+1); + else + glColor4ubv((GLubyte*)&CTX.color.mesh.prism); glBegin(GL_LINE_LOOP); glVertex3d((*p)->V[0]->Pos.X, (*p)->V[0]->Pos.Y, (*p)->V[0]->Pos.Z); diff --git a/Makefile b/Makefile index b664a0ecb8fd3dffec56caddbae72bc07051dcbf..a93a9ced95aa123cdfd8dec4f208c8998383b036 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,9 @@ -# $Id: Makefile,v 1.59 2001-02-12 17:38:02 geuzaine Exp $ +# $Id: Makefile,v 1.60 2001-02-17 22:08:40 geuzaine Exp $ # ---------------------------------------------------------------------- # Makefile for Gmsh # ---------------------------------------------------------------------- - GMSH_RELEASE = 1.13 + GMSH_RELEASE = 1.14 MAKE = make CC = c++ @@ -77,6 +77,18 @@ default: initialtag "GUI_INCLUDE=$(FLTK_INC)" \ ); done +win: initialtag + @for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \ + "CC=g++" \ + "C_FLAGS=-g -Wall -DWIN32" \ + "OS_FLAGS=-D_LITTLE_ENDIAN" \ + "VERSION_FLAGS=-D_FLTK" \ + "GL_INCLUDE=$(OPENGL_INC)" \ + "GUI_INCLUDE=$(FLTK_INC)" \ + ); done + g++ -Wl,--subsystem,windows -o $(GMSH_BIN_DIR)/gmsh.exe $(GMSH_FLTK_LIB) \ + $(HOME)/SOURCES/fltk/lib/libfltk.a -lglu32 -lopengl32 -lgdi32 -lwsock32 -lm + motif: initialtag @for i in $(GMSH_XMOTIF_DIR); do (cd $$i && $(MAKE) \ "CC=$(CC)" \ @@ -122,7 +134,7 @@ utilities: purge: for i in "." $(GMSH_DIR) $(GMSH_LIB_DIR) $(GMSH_ARCHIVE_DIR)\ $(GMSH_DEMO_DIR) $(GMSH_TUTOR_DIR) $(GMSH_DOC_DIR) $(GMSH_BOX_DIR); \ - do (cd $$i && $(RM) $(RMFLAGS) *~ *~~ .gmshrc .gmshtmp .gmshlog gmon.out); \ + do (cd $$i && $(RM) $(RMFLAGS) *~ *~~ .gmsh-tmp .gmsh-errors gmon.out); \ done clean: @@ -202,7 +214,7 @@ bb: tag "GL_INCLUDE=" \ "GUI_INCLUDE=" \ ); done - $(CC) -o $(GMSH_BIN_DIR)/gmsh-box $(GMSH_BOX_LIB) -lm + $(CC) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_BOX_LIB) -lm bbn: tag @for i in $(GMSH_BOX_DIR) ; do (cd $$i && $(MAKE) \ diff --git a/Mesh/2D_Mesh.cpp b/Mesh/2D_Mesh.cpp index c97581809c8d600be9b8a979cbc8670231ee6f57..b00bc669dc9f57daf74bef850b3327f33172c6dd 100644 --- a/Mesh/2D_Mesh.cpp +++ b/Mesh/2D_Mesh.cpp @@ -1,4 +1,4 @@ -// $Id: 2D_Mesh.cpp,v 1.18 2001-01-24 16:15:31 geuzaine Exp $ +// $Id: 2D_Mesh.cpp,v 1.19 2001-02-17 22:08:58 geuzaine Exp $ /* Maillage Delaunay d'une surface (Point insertion Technique) @@ -526,8 +526,13 @@ int mesh_domain (ContourPeek * ListContours, int numcontours, (*root) = (*root_w) = (*root_acc) = NULL; - if (doc->numTriangles == 1) + int onlyinit = OnlyTheInitialMesh; + + if (doc->numTriangles == 1){ doc->delaunay[0].t.position = INTERN; + Msg(INFO, "Only 1 triangle in initial mesh: skipping refinement"); + onlyinit = 1; + } for (i = 0; i < doc->numTriangles; i++){ if (doc->delaunay[i].t.position != EXTERN){ @@ -569,7 +574,7 @@ int mesh_domain (ContourPeek * ListContours, int numcontours, List_Reset(del_L); kill_L = List_Create(1000, 1000, sizeof(Delaunay*)); - if (OnlyTheInitialMesh) + if (onlyinit) conv = 1; while (conv != 1){ @@ -757,6 +762,8 @@ int mesh_domain (ContourPeek * ListContours, int numcontours, } + List_Delete(kill_L); + numtri = 0; numtrwait = 0; @@ -798,8 +805,11 @@ int mesh_domain (ContourPeek * ListContours, int numcontours, /* Tous Les Triangles doivent etre orientes */ - if (!mai->numtriangles) - mai->numtriangles = 1; + if (!mai->numtriangles){ + Msg(GERROR, "No triangles in surface mesh"); + return 0; + //mai->numtriangles = 1; + } for (i = 0; i < mai->numtriangles; i++){ a = mai->listdel[i]->t.a; @@ -868,9 +878,9 @@ void Maillage_Automatique_VieuxCode (Surface * pS, Mesh * m, int ori){ cp->oriented_points[j].where.h = v->Pos.X; cp->oriented_points[j].where.v = v->Pos.Y; - cp->perturbations[j].h = CTX.mesh.rand_factor * LC2D * + cp->perturbations[j].h = CTX.mesh.rand_factor /* /(100*v->lc) */ * LC2D * (double)rand()/(double)RAND_MAX; - cp->perturbations[j].v = CTX.mesh.rand_factor * LC2D * + cp->perturbations[j].v = CTX.mesh.rand_factor /* /(100.*v->lc) */ * LC2D * (double)rand()/(double)RAND_MAX; cp->oriented_points[j].numcontour = i; @@ -1014,9 +1024,6 @@ void ActionEndTheCurve (void *a, void *b){ End_Curve (c); } -int MeshParametricSurface (Surface * s); -int Extrude_Mesh (Surface * s); - void Maillage_Surface (void *data, void *dum){ Surface **pS, *s; Tree_T *tnxe; diff --git a/Mesh/2D_Mesh_Aniso.cpp b/Mesh/2D_Mesh_Aniso.cpp index efcbe636721a9a6b0cf585a1a2399ac6af6417a6..a43679c837092b7ec8d57d7567e15651186f0cde 100644 --- a/Mesh/2D_Mesh_Aniso.cpp +++ b/Mesh/2D_Mesh_Aniso.cpp @@ -1,4 +1,4 @@ -// $Id: 2D_Mesh_Aniso.cpp,v 1.11 2001-01-12 13:29:00 geuzaine Exp $ +// $Id: 2D_Mesh_Aniso.cpp,v 1.12 2001-02-17 22:08:58 geuzaine Exp $ /* Jean-Francois Remacle @@ -1109,6 +1109,9 @@ int AlgorithmeMaillage2DAnisotropeModeJF (Surface * s){ } List_Delete (List); + if(!Tree_Nbr(s->Simplexes)) + Msg(GERROR, "No Triangles in surface %d", s->Num); + /* RandomSwapEdges2d(s); for(i=0;i<1;i++)IntelligentSwapEdges(s,THEM->Metric); diff --git a/Mesh/Generator.cpp b/Mesh/Generator.cpp index 0c5c102156ba4ba66222a29af07c443da5033872..bb5e35f26a78a63a0131c3f13dce2846731b30c0 100644 --- a/Mesh/Generator.cpp +++ b/Mesh/Generator.cpp @@ -1,4 +1,4 @@ -// $Id: Generator.cpp,v 1.9 2001-01-12 13:29:00 geuzaine Exp $ +// $Id: Generator.cpp,v 1.10 2001-02-17 22:08:58 geuzaine Exp $ #include "Gmsh.h" #include "Const.h" @@ -40,7 +40,7 @@ void ApplyLcFactor(Mesh *M){ } void Maillage_Dimension_0 (Mesh * M){ - for (int i = 0; i < 20; i++) M->Statistics[i] = 0.0; + for (int i = 0; i < 50; i++) M->Statistics[i] = 0.0; // This is the default type of BGM (lc associated with // points of the geometry). It can be changed to // - ONFILE by loading a view containing a bgmesh diff --git a/Mesh/Print_Mesh.cpp b/Mesh/Print_Mesh.cpp index 4dd98bf87889ff85c9d82c275bdbb3195581154e..602990a993e140cba0c3268fc3a0bf46b222b03f 100644 --- a/Mesh/Print_Mesh.cpp +++ b/Mesh/Print_Mesh.cpp @@ -1,4 +1,4 @@ -// $Id: Print_Mesh.cpp,v 1.13 2001-02-16 20:16:40 remacle Exp $ +// $Id: Print_Mesh.cpp,v 1.14 2001-02-17 22:08:58 geuzaine Exp $ #include "Gmsh.h" #include "Const.h" @@ -1047,7 +1047,7 @@ void Print_Mesh (Mesh * M, char *c, int Type){ process_msh_elements (M); Msg(INFO, "Msh Ouput Complete '%s' (%d Nodes, %d Elements)", name, MSH_NODE_NUM, MSH_ELEMENT_NUM - 1); - Msg(STATUS2, "Wrote File '%s'", name); + Msg(STATUS2, "Wrote '%s'", name); fclose (mshfile); } else if (Type == FORMAT_UNV){ @@ -1069,7 +1069,7 @@ void Print_Mesh (Mesh * M, char *c, int Type){ PrintGroups (M); fclose (unvfile); Msg(INFO, "Unv Ouput Complete '%s'", name); - Msg(STATUS2, "Wrote File '%s'", name); + Msg(STATUS2, "Wrote '%s'", name); } else if (Type == FORMAT_GREF){ c ? strcpy (name, c) : strcat (name, ".Gref"); @@ -1089,6 +1089,6 @@ void Print_Mesh (Mesh * M, char *c, int Type){ Tree_Delete (TRE); EndConsecutiveNodes (M); Msg(INFO, "Gref Ouput Complete '%s'", name); - Msg(STATUS2, "Wrote File '%s'", name); + Msg(STATUS2, "Wrote '%s'", name); } } diff --git a/Motif/CbFile.cpp b/Motif/CbFile.cpp index 0b3932e51bc7fe92eec05e4d832eda2a6d9e8081..2a2184728663a509997ba610db63c16ca863520a 100644 --- a/Motif/CbFile.cpp +++ b/Motif/CbFile.cpp @@ -1,4 +1,4 @@ -// $Id: CbFile.cpp,v 1.5 2001-02-12 17:38:03 geuzaine Exp $ +// $Id: CbFile.cpp,v 1.6 2001-02-17 22:04:05 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -7,6 +7,7 @@ #include "Draw.h" #include "Widgets.h" #include "Context.h" +#include "Options.h" #include "CreateFile.h" #include "CbFile.h" @@ -62,7 +63,7 @@ void FileCb(Widget w, XtPointer client_data, XtPointer call_data){ case FILE_LOAD_GEOM : OpenProblem(c); Draw(); break; case FILE_LOAD_POST : MergeProblem(c); ColorBarRedraw(); Draw(); break; case FILE_SAVE_AS : SaveToDisk(c, WID.ED.saveAsDialog, CreateOutputFile); break; - case FILE_SAVE_OPTIONS_AS : Print_Context(0,c); break; + case FILE_SAVE_OPTIONS_AS : Print_Context(0,GMSH_FULLRC,c); break; default : Msg(WARNING, "Unknown event in FileCb : %d", (long int)client_data); break; diff --git a/Motif/CbInput.cpp b/Motif/CbInput.cpp index e5da3fa8ff3681d20f2cf6845dac683f3212eb8c..17a80f5206ef237d9caf3a9299ec94b43e4a56ff 100644 --- a/Motif/CbInput.cpp +++ b/Motif/CbInput.cpp @@ -1,4 +1,4 @@ -// $Id: CbInput.cpp,v 1.6 2001-02-12 17:38:03 geuzaine Exp $ +// $Id: CbInput.cpp,v 1.7 2001-02-17 22:04:05 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -206,6 +206,8 @@ void KeyboardAccel(XEvent *event){ break; case XK_c : case XK_C : opt_general_color_scheme(0,GMSH_SET,opt_general_color_scheme(0,GMSH_GET,0)+1); + opt_geometry_color_scheme(0,GMSH_SET,opt_general_color_scheme(0,GMSH_GET,0)); + opt_mesh_color_scheme(0,GMSH_SET,opt_general_color_scheme(0,GMSH_GET,0)); XtVaSetValues(WID.OD.miscColorSchemeScale,XmNvalue, CTX.color_scheme, NULL); XmUpdateDisplay(WID.OD.miscColorSchemeScale); Draw(); diff --git a/Motif/CbOptions.cpp b/Motif/CbOptions.cpp index 2cf6b66f6f257123b723fbe71f66610562c2c247..90110735d84ecfe83fea3e9bc72fca79c85c6035 100644 --- a/Motif/CbOptions.cpp +++ b/Motif/CbOptions.cpp @@ -1,4 +1,4 @@ -// $Id: CbOptions.cpp,v 1.6 2001-02-12 17:38:03 geuzaine Exp $ +// $Id: CbOptions.cpp,v 1.7 2001-02-17 22:04:05 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -9,6 +9,7 @@ #include "Widgets.h" #include "Pixmaps.h" #include "Context.h" +#include "Options.h" #include "XContext.h" #include "Register.h" #include "Timer.h" @@ -52,8 +53,9 @@ void OptionsCb (Widget w, XtPointer client_data, XtPointer call_data){ case OPTIONS_TRACKBALL : CTX.useTrackball = !CTX.useTrackball; break; case OPTIONS_COLOR_SCHEME_SCALE: XmScaleGetValue(WID.OD.miscColorSchemeScale, &e); - CTX.color_scheme=e; - Init_Colors(0); + opt_general_color_scheme(0,GMSH_SET,e); + opt_geometry_color_scheme(0,GMSH_SET,e); + opt_mesh_color_scheme(0,GMSH_SET,e); Draw(); break ; case OPTIONS_ORTHOGRAPHIC : CTX.ortho = 1; break; @@ -118,7 +120,11 @@ void OptionsCb (Widget w, XtPointer client_data, XtPointer call_data){ CTX.r[0],CTX.r[1],CTX.r[2], CTX.t[0],CTX.t[1],CTX.t[2], CTX.s[0],CTX.s[1],CTX.s[2]); +<<<<<<< CbOptions.cpp + Print_Context(0, GMSH_FULLRC, NULL); +======= Print_Context(0, NULL); +>>>>>>> 1.6 break ; /* save */ diff --git a/Motif/Makefile b/Motif/Makefile index 264d67ec88f2e1b75c60d20b129977cf30b90046..dd756e576b7f7062acd58b4bf8c3ab4e681f532b 100644 --- a/Motif/Makefile +++ b/Motif/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.7 2001-02-12 17:42:26 geuzaine Exp $ +# $Id: Makefile,v 1.8 2001-02-17 22:04:05 geuzaine Exp $ # # Makefile for "libMotif.a" # @@ -159,8 +159,8 @@ CbOptions.o: CbOptions.cpp ../Common/Gmsh.h ../Common/Message.h \ ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \ ../Graphics/Draw.h ../Common/Views.h ../Common/Const.h \ ../Common/ColorTable.h Widgets.h Pixmaps.h ../Common/Context.h \ - XContext.h Register.h ../Common/Timer.h ../Geo/Visibility.h \ - CbOptions.h CbGeom.h CbMesh.h CbPost.h + ../Common/Options.h XContext.h Register.h ../Common/Timer.h \ + ../Geo/Visibility.h CbOptions.h CbGeom.h CbMesh.h CbPost.h CbFile.o: CbFile.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \ @@ -168,7 +168,8 @@ CbFile.o: CbFile.cpp ../Common/Gmsh.h ../Common/Message.h \ ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \ ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Graphics/Draw.h \ ../Common/Views.h ../Common/ColorTable.h Widgets.h \ - ../Common/Context.h ../Graphics/CreateFile.h CbFile.h CbColorbar.h + ../Common/Context.h ../Common/Options.h ../Graphics/CreateFile.h \ + CbFile.h CbColorbar.h CbInput.o: CbInput.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Mesh/Mesh.h \ diff --git a/Motif/Message.cpp b/Motif/Message.cpp index bcc239b2772033141262ba9a9304d3c5ac8aafdd..a36cda5b63618295e038230e458df919445edcdd 100644 --- a/Motif/Message.cpp +++ b/Motif/Message.cpp @@ -1,4 +1,4 @@ -// $Id: Message.cpp,v 1.6 2001-02-12 17:38:03 geuzaine Exp $ +// $Id: Message.cpp,v 1.7 2001-02-17 22:04:05 geuzaine Exp $ #include <signal.h> #include <sys/resource.h> @@ -120,7 +120,7 @@ void Msg(int level, char *fmt, ...){ fprintf(stderr, "\n"); } } - else{ + else if(CTX.expose){ vsprintf(TextBuffer, fmt, args); XtVaSetValues(WID.G.infoLabel, XmNlabelString, XmStringCreateSimple(TextBuffer), NULL); @@ -136,7 +136,7 @@ void Msg(int level, char *fmt, ...){ fprintf(stderr, "\n"); } } - else{ + else if(CTX.expose){ vsprintf(TextBuffer, fmt, args); XtVaSetValues(WID.G.selectLabel, XmNlabelString, XmStringCreateSimple(TextBuffer), NULL); @@ -152,7 +152,7 @@ void Msg(int level, char *fmt, ...){ fprintf(stderr, "\n"); } } - else{ + else if(CTX.expose){ vsprintf(TextBuffer, fmt, args); XtVaSetValues(WID.G.statusLabel, XmNlabelString, XmStringCreateSimple(TextBuffer), NULL); diff --git a/Parser/FunctionManager.cpp b/Parser/FunctionManager.cpp index 606c015b44854861396b688d71d6be9fb3b6132e..7c93d043d44d7ec01f90f231d46b7f19fd9b93a5 100644 --- a/Parser/FunctionManager.cpp +++ b/Parser/FunctionManager.cpp @@ -1,4 +1,4 @@ -// $Id: FunctionManager.cpp,v 1.9 2001-02-16 20:16:40 remacle Exp $ +// $Id: FunctionManager.cpp,v 1.10 2001-02-17 22:09:00 geuzaine Exp $ #include <stdio.h> #include <stack> @@ -30,12 +30,12 @@ class File_Position class mystack { public: - std::stack<File_Position> s; + stack<File_Position> s; }; class mymap { public : - std::map<char*,File_Position,ltstr> m; + map<char*,File_Position,ltstr> m; }; FunctionManager *FunctionManager::instance = 0; diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index 9eef6f2a8f06564bd0d1b7533bf8ea8d2b790b53..05d56a834a9333d58ae4ec72139cc4f89867684d 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -1,175 +1,176 @@ /* A Bison parser, made from Gmsh.y - by GNU Bison version 1.28 */ + by GNU Bison version 1.25 + */ #define YYBISON 1 /* Identify Bison output. */ -#define tDOUBLE 257 -#define tSTRING 258 -#define tBIGSTR 259 -#define tEND 260 -#define tAFFECT 261 -#define tDOTS 262 -#define tPi 263 -#define tExp 264 -#define tLog 265 -#define tLog10 266 -#define tSqrt 267 -#define tSin 268 -#define tAsin 269 -#define tCos 270 -#define tAcos 271 -#define tTan 272 -#define tRand 273 -#define tAtan 274 -#define tAtan2 275 -#define tSinh 276 -#define tCosh 277 -#define tTanh 278 -#define tFabs 279 -#define tFloor 280 -#define tCeil 281 -#define tFmod 282 -#define tModulo 283 -#define tHypot 284 -#define tPrintf 285 -#define tSprintf 286 -#define tDraw 287 -#define tPoint 288 -#define tCircle 289 -#define tEllipsis 290 -#define tLine 291 -#define tSurface 292 -#define tSpline 293 -#define tVolume 294 -#define tCharacteristic 295 -#define tLength 296 -#define tParametric 297 -#define tElliptic 298 -#define tPlane 299 -#define tRuled 300 -#define tTransfinite 301 -#define tComplex 302 -#define tPhysical 303 -#define tUsing 304 -#define tBump 305 -#define tProgression 306 -#define tRotate 307 -#define tTranslate 308 -#define tSymmetry 309 -#define tDilate 310 -#define tExtrude 311 -#define tDuplicata 312 -#define tLoop 313 -#define tRecombine 314 -#define tDelete 315 -#define tCoherence 316 -#define tIntersect 317 -#define tAttractor 318 -#define tLayers 319 -#define tScalarTetrahedron 320 -#define tVectorTetrahedron 321 -#define tTensorTetrahedron 322 -#define tScalarTriangle 323 -#define tVectorTriangle 324 -#define tTensorTriangle 325 -#define tScalarLine 326 -#define tVectorLine 327 -#define tTensorLine 328 -#define tScalarPoint 329 -#define tVectorPoint 330 -#define tTensorPoint 331 -#define tBSpline 332 -#define tNurbs 333 -#define tOrder 334 -#define tWith 335 -#define tBounds 336 -#define tKnots 337 -#define tColor 338 -#define tColorTable 339 -#define tFor 340 -#define tIn 341 -#define tEndFor 342 -#define tIf 343 -#define tEndIf 344 -#define tExit 345 -#define tReturn 346 -#define tCall 347 -#define tFunction 348 -#define tMesh 349 -#define tB_SPLINE_SURFACE_WITH_KNOTS 350 -#define tB_SPLINE_CURVE_WITH_KNOTS 351 -#define tCARTESIAN_POINT 352 -#define tTRUE 353 -#define tFALSE 354 -#define tUNSPECIFIED 355 -#define tU 356 -#define tV 357 -#define tEDGE_CURVE 358 -#define tVERTEX_POINT 359 -#define tORIENTED_EDGE 360 -#define tPLANE 361 -#define tFACE_OUTER_BOUND 362 -#define tEDGE_LOOP 363 -#define tADVANCED_FACE 364 -#define tVECTOR 365 -#define tDIRECTION 366 -#define tAXIS2_PLACEMENT_3D 367 -#define tISO 368 -#define tENDISO 369 -#define tENDSEC 370 -#define tDATA 371 -#define tHEADER 372 -#define tFILE_DESCRIPTION 373 -#define tFILE_SCHEMA 374 -#define tFILE_NAME 375 -#define tMANIFOLD_SOLID_BREP 376 -#define tCLOSED_SHELL 377 -#define tADVANCED_BREP_SHAPE_REPRESENTATION 378 -#define tFACE_BOUND 379 -#define tCYLINDRICAL_SURFACE 380 -#define tCONICAL_SURFACE 381 -#define tCIRCLE 382 -#define tTRIMMED_CURVE 383 -#define tGEOMETRIC_SET 384 -#define tCOMPOSITE_CURVE_SEGMENT 385 -#define tCONTINUOUS 386 -#define tCOMPOSITE_CURVE 387 -#define tTOROIDAL_SURFACE 388 -#define tPRODUCT_DEFINITION 389 -#define tPRODUCT_DEFINITION_SHAPE 390 -#define tSHAPE_DEFINITION_REPRESENTATION 391 -#define tELLIPSE 392 -#define tTrimmed 393 -#define tSolid 394 -#define tEndSolid 395 -#define tVertex 396 -#define tFacet 397 -#define tNormal 398 -#define tOuter 399 -#define tLoopSTL 400 -#define tEndLoop 401 -#define tEndFacet 402 -#define tAFFECTPLUS 403 -#define tAFFECTMINUS 404 -#define tAFFECTTIMES 405 -#define tAFFECTDIVIDE 406 -#define tOR 407 -#define tAND 408 -#define tEQUAL 409 -#define tNOTEQUAL 410 -#define tAPPROXEQUAL 411 -#define tLESSOREQUAL 412 -#define tGREATEROREQUAL 413 -#define tCROSSPRODUCT 414 -#define tPLUSPLUS 415 -#define tMINUSMINUS 416 -#define UNARYPREC 417 +#define tDOUBLE 258 +#define tSTRING 259 +#define tBIGSTR 260 +#define tEND 261 +#define tAFFECT 262 +#define tDOTS 263 +#define tPi 264 +#define tExp 265 +#define tLog 266 +#define tLog10 267 +#define tSqrt 268 +#define tSin 269 +#define tAsin 270 +#define tCos 271 +#define tAcos 272 +#define tTan 273 +#define tRand 274 +#define tAtan 275 +#define tAtan2 276 +#define tSinh 277 +#define tCosh 278 +#define tTanh 279 +#define tFabs 280 +#define tFloor 281 +#define tCeil 282 +#define tFmod 283 +#define tModulo 284 +#define tHypot 285 +#define tPrintf 286 +#define tSprintf 287 +#define tDraw 288 +#define tPoint 289 +#define tCircle 290 +#define tEllipsis 291 +#define tLine 292 +#define tSurface 293 +#define tSpline 294 +#define tVolume 295 +#define tCharacteristic 296 +#define tLength 297 +#define tParametric 298 +#define tElliptic 299 +#define tPlane 300 +#define tRuled 301 +#define tTransfinite 302 +#define tComplex 303 +#define tPhysical 304 +#define tUsing 305 +#define tBump 306 +#define tProgression 307 +#define tRotate 308 +#define tTranslate 309 +#define tSymmetry 310 +#define tDilate 311 +#define tExtrude 312 +#define tDuplicata 313 +#define tLoop 314 +#define tRecombine 315 +#define tDelete 316 +#define tCoherence 317 +#define tIntersect 318 +#define tAttractor 319 +#define tLayers 320 +#define tScalarTetrahedron 321 +#define tVectorTetrahedron 322 +#define tTensorTetrahedron 323 +#define tScalarTriangle 324 +#define tVectorTriangle 325 +#define tTensorTriangle 326 +#define tScalarLine 327 +#define tVectorLine 328 +#define tTensorLine 329 +#define tScalarPoint 330 +#define tVectorPoint 331 +#define tTensorPoint 332 +#define tBSpline 333 +#define tNurbs 334 +#define tOrder 335 +#define tWith 336 +#define tBounds 337 +#define tKnots 338 +#define tColor 339 +#define tColorTable 340 +#define tFor 341 +#define tIn 342 +#define tEndFor 343 +#define tIf 344 +#define tEndIf 345 +#define tExit 346 +#define tReturn 347 +#define tCall 348 +#define tFunction 349 +#define tMesh 350 +#define tB_SPLINE_SURFACE_WITH_KNOTS 351 +#define tB_SPLINE_CURVE_WITH_KNOTS 352 +#define tCARTESIAN_POINT 353 +#define tTRUE 354 +#define tFALSE 355 +#define tUNSPECIFIED 356 +#define tU 357 +#define tV 358 +#define tEDGE_CURVE 359 +#define tVERTEX_POINT 360 +#define tORIENTED_EDGE 361 +#define tPLANE 362 +#define tFACE_OUTER_BOUND 363 +#define tEDGE_LOOP 364 +#define tADVANCED_FACE 365 +#define tVECTOR 366 +#define tDIRECTION 367 +#define tAXIS2_PLACEMENT_3D 368 +#define tISO 369 +#define tENDISO 370 +#define tENDSEC 371 +#define tDATA 372 +#define tHEADER 373 +#define tFILE_DESCRIPTION 374 +#define tFILE_SCHEMA 375 +#define tFILE_NAME 376 +#define tMANIFOLD_SOLID_BREP 377 +#define tCLOSED_SHELL 378 +#define tADVANCED_BREP_SHAPE_REPRESENTATION 379 +#define tFACE_BOUND 380 +#define tCYLINDRICAL_SURFACE 381 +#define tCONICAL_SURFACE 382 +#define tCIRCLE 383 +#define tTRIMMED_CURVE 384 +#define tGEOMETRIC_SET 385 +#define tCOMPOSITE_CURVE_SEGMENT 386 +#define tCONTINUOUS 387 +#define tCOMPOSITE_CURVE 388 +#define tTOROIDAL_SURFACE 389 +#define tPRODUCT_DEFINITION 390 +#define tPRODUCT_DEFINITION_SHAPE 391 +#define tSHAPE_DEFINITION_REPRESENTATION 392 +#define tELLIPSE 393 +#define tTrimmed 394 +#define tSolid 395 +#define tEndSolid 396 +#define tVertex 397 +#define tFacet 398 +#define tNormal 399 +#define tOuter 400 +#define tLoopSTL 401 +#define tEndLoop 402 +#define tEndFacet 403 +#define tAFFECTPLUS 404 +#define tAFFECTMINUS 405 +#define tAFFECTTIMES 406 +#define tAFFECTDIVIDE 407 +#define tOR 408 +#define tAND 409 +#define tEQUAL 410 +#define tNOTEQUAL 411 +#define tAPPROXEQUAL 412 +#define tLESSOREQUAL 413 +#define tGREATEROREQUAL 414 +#define tCROSSPRODUCT 415 +#define tPLUSPLUS 416 +#define tMINUSMINUS 417 +#define UNARYPREC 418 #line 1 "Gmsh.y" -// $Id: Gmsh.tab.cpp,v 1.71 2001-02-12 17:38:03 geuzaine Exp $ +// $Id: Gmsh.tab.cpp,v 1.72 2001-02-17 22:09:00 geuzaine Exp $ #include <stdarg.h> @@ -254,11 +255,11 @@ typedef union { -#define YYFINAL 1487 +#define YYFINAL 1491 #define YYFLAG -32768 #define YYNTBASE 182 -#define YYTRANSLATE(x) ((unsigned)(x) <= 417 ? yytranslate[x] : 263) +#define YYTRANSLATE(x) ((unsigned)(x) <= 418 ? yytranslate[x] : 263) static const short yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -286,23 +287,23 @@ static const short yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 154, 155, 156, 157, - 158, 160, 162, 168, 170, 171, 172 + 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 154, 155, 156, + 157, 158, 160, 162, 168, 170, 171, 172 }; #if YYDEBUG != 0 @@ -322,24 +323,24 @@ static const short yyprhs[] = { 0, 837, 869, 871, 875, 876, 908, 910, 914, 915, 947, 949, 951, 953, 955, 957, 959, 961, 966, 974, 981, 985, 992, 999, 1009, 1016, 1026, 1032, 1041, 1050, 1062, - 1072, 1080, 1089, 1102, 1109, 1115, 1123, 1131, 1144, 1152, - 1162, 1180, 1188, 1197, 1206, 1214, 1226, 1232, 1241, 1254, - 1263, 1286, 1307, 1316, 1325, 1331, 1340, 1348, 1357, 1363, - 1375, 1381, 1391, 1393, 1395, 1397, 1398, 1401, 1406, 1411, - 1418, 1422, 1426, 1430, 1433, 1436, 1443, 1452, 1461, 1472, - 1474, 1477, 1479, 1483, 1488, 1490, 1499, 1512, 1521, 1534, - 1543, 1556, 1568, 1584, 1586, 1589, 1599, 1602, 1609, 1619, - 1629, 1638, 1647, 1656, 1663, 1668, 1671, 1674, 1676, 1679, - 1681, 1683, 1685, 1687, 1689, 1691, 1695, 1698, 1701, 1704, - 1708, 1712, 1716, 1720, 1724, 1728, 1732, 1736, 1740, 1744, - 1748, 1752, 1756, 1760, 1766, 1771, 1776, 1781, 1786, 1791, - 1796, 1801, 1806, 1811, 1816, 1823, 1828, 1833, 1838, 1843, - 1848, 1853, 1860, 1867, 1874, 1879, 1881, 1883, 1885, 1890, - 1893, 1899, 1903, 1910, 1915, 1923, 1927, 1933, 1935, 1938, - 1941, 1945, 1949, 1961, 1971, 1979, 1987, 1988, 1992, 1994, - 1998, 1999, 2003, 2007, 2009, 2013, 2014, 2016, 2020, 2024, - 2026, 2028, 2032, 2036, 2040, 2046, 2056, 2064, 2070, 2072, - 2078, 2082, 2089, 2091, 2095, 2097, 2102 + 1069, 1079, 1087, 1096, 1109, 1116, 1122, 1130, 1138, 1151, + 1159, 1169, 1187, 1195, 1204, 1213, 1221, 1233, 1239, 1248, + 1261, 1270, 1293, 1314, 1323, 1332, 1338, 1347, 1355, 1364, + 1370, 1382, 1388, 1398, 1400, 1402, 1404, 1405, 1408, 1413, + 1418, 1425, 1429, 1433, 1437, 1440, 1443, 1450, 1459, 1468, + 1479, 1481, 1484, 1486, 1490, 1495, 1497, 1506, 1519, 1528, + 1541, 1550, 1563, 1575, 1591, 1593, 1596, 1606, 1609, 1616, + 1626, 1636, 1645, 1654, 1663, 1670, 1675, 1678, 1681, 1683, + 1686, 1688, 1690, 1692, 1694, 1696, 1698, 1702, 1705, 1708, + 1711, 1715, 1719, 1723, 1727, 1731, 1735, 1739, 1743, 1747, + 1751, 1755, 1759, 1763, 1767, 1773, 1778, 1783, 1788, 1793, + 1798, 1803, 1808, 1813, 1818, 1823, 1830, 1835, 1840, 1845, + 1850, 1855, 1860, 1867, 1874, 1881, 1886, 1888, 1890, 1892, + 1897, 1900, 1906, 1910, 1917, 1922, 1930, 1934, 1940, 1942, + 1945, 1948, 1952, 1956, 1968, 1978, 1986, 1994, 1995, 1999, + 2001, 2005, 2006, 2010, 2014, 2016, 2020, 2021, 2023, 2027, + 2031, 2033, 2035, 2039, 2043, 2047, 2053, 2063, 2071, 2077, + 2079, 2085, 2089, 2096, 2098, 2102, 2104, 2109 }; static const short yyrhs[] = { 184, @@ -449,111 +450,112 @@ static const short yyrhs[] = { 184, 0, 4, 176, 248, 177, 178, 4, 231, 6, 0, 4, 178, 84, 178, 4, 7, 259, 6, 0, 4, 176, 248, 177, 178, 84, 178, 4, 7, 259, 6, - 0, 4, 176, 248, 177, 178, 85, 7, 260, 6, - 0, 34, 174, 248, 175, 7, 251, 6, 0, 49, - 34, 174, 248, 175, 7, 257, 6, 0, 64, 34, - 257, 7, 180, 248, 179, 248, 179, 248, 181, 6, - 0, 41, 42, 257, 7, 248, 6, 0, 34, 180, - 248, 181, 6, 0, 37, 174, 248, 175, 7, 257, - 6, 0, 39, 174, 248, 175, 7, 257, 6, 0, - 64, 37, 257, 7, 180, 248, 179, 248, 179, 248, - 181, 6, 0, 35, 174, 248, 175, 7, 257, 6, - 0, 35, 174, 248, 175, 7, 257, 45, 251, 6, - 0, 43, 174, 248, 175, 7, 180, 248, 179, 248, - 179, 5, 179, 5, 179, 5, 181, 6, 0, 36, - 174, 248, 175, 7, 257, 6, 0, 49, 37, 174, - 248, 175, 7, 257, 6, 0, 37, 59, 174, 248, - 175, 7, 257, 6, 0, 78, 174, 248, 175, 7, - 257, 6, 0, 79, 174, 248, 175, 7, 257, 83, - 257, 80, 248, 6, 0, 37, 180, 248, 181, 6, - 0, 45, 38, 174, 248, 175, 7, 257, 6, 0, - 139, 38, 174, 248, 175, 7, 180, 248, 179, 257, - 181, 6, 0, 46, 38, 174, 248, 175, 7, 257, - 6, 0, 79, 38, 81, 82, 174, 248, 175, 7, - 255, 83, 180, 257, 179, 257, 181, 80, 180, 248, - 179, 248, 181, 6, 0, 79, 38, 174, 248, 175, - 7, 255, 83, 180, 257, 179, 257, 181, 80, 180, - 248, 179, 248, 181, 6, 0, 49, 38, 174, 248, - 175, 7, 257, 6, 0, 38, 59, 174, 248, 175, - 7, 257, 6, 0, 38, 180, 248, 181, 6, 0, - 48, 40, 174, 248, 175, 7, 257, 6, 0, 40, - 174, 248, 175, 7, 257, 6, 0, 49, 40, 174, - 248, 175, 7, 257, 6, 0, 54, 251, 180, 235, - 181, 0, 53, 180, 251, 179, 251, 179, 248, 181, - 180, 235, 181, 0, 55, 251, 180, 235, 181, 0, - 56, 180, 251, 179, 248, 181, 180, 235, 181, 0, - 237, 0, 236, 0, 234, 0, 0, 236, 233, 0, - 58, 180, 236, 181, 0, 61, 180, 236, 181, 0, - 61, 4, 176, 248, 177, 6, 0, 61, 95, 6, - 0, 4, 262, 6, 0, 4, 248, 6, 0, 91, - 6, 0, 33, 6, 0, 86, 174, 248, 8, 248, - 175, 0, 86, 174, 248, 8, 248, 8, 248, 175, - 0, 86, 4, 87, 180, 248, 8, 248, 181, 0, - 86, 4, 87, 180, 248, 8, 248, 8, 248, 181, - 0, 88, 0, 94, 4, 0, 92, 0, 93, 4, - 6, 0, 89, 174, 248, 175, 0, 90, 0, 57, - 34, 180, 248, 179, 251, 181, 6, 0, 57, 34, - 180, 248, 179, 251, 179, 251, 179, 248, 181, 6, - 0, 57, 37, 180, 248, 179, 251, 181, 6, 0, - 57, 37, 180, 248, 179, 251, 179, 251, 179, 248, - 181, 6, 0, 57, 38, 180, 248, 179, 251, 181, - 6, 0, 57, 38, 180, 248, 179, 251, 179, 251, - 179, 248, 181, 6, 0, 57, 38, 180, 248, 179, - 251, 181, 180, 242, 181, 6, 0, 57, 38, 180, - 248, 179, 251, 179, 251, 179, 248, 181, 180, 242, - 181, 6, 0, 243, 0, 242, 243, 0, 65, 180, - 257, 179, 257, 179, 257, 181, 6, 0, 60, 6, - 0, 47, 37, 257, 7, 248, 6, 0, 47, 37, - 257, 7, 248, 50, 52, 248, 6, 0, 47, 37, - 257, 7, 248, 50, 51, 248, 6, 0, 47, 38, - 180, 248, 181, 7, 257, 6, 0, 44, 38, 180, - 248, 181, 7, 257, 6, 0, 47, 40, 180, 248, - 181, 7, 257, 6, 0, 60, 38, 257, 7, 248, - 6, 0, 60, 38, 257, 6, 0, 62, 6, 0, - 63, 6, 0, 3, 0, 164, 3, 0, 99, 0, - 100, 0, 101, 0, 102, 0, 103, 0, 249, 0, - 174, 248, 175, 0, 164, 248, 0, 163, 248, 0, - 169, 248, 0, 248, 164, 248, 0, 248, 163, 248, - 0, 248, 165, 248, 0, 248, 166, 248, 0, 248, - 167, 248, 0, 248, 173, 248, 0, 248, 159, 248, - 0, 248, 161, 248, 0, 248, 160, 248, 0, 248, - 162, 248, 0, 248, 156, 248, 0, 248, 157, 248, - 0, 248, 155, 248, 0, 248, 154, 248, 0, 248, - 153, 248, 8, 248, 0, 10, 174, 248, 175, 0, - 11, 174, 248, 175, 0, 12, 174, 248, 175, 0, - 13, 174, 248, 175, 0, 14, 174, 248, 175, 0, - 15, 174, 248, 175, 0, 16, 174, 248, 175, 0, - 17, 174, 248, 175, 0, 18, 174, 248, 175, 0, - 20, 174, 248, 175, 0, 21, 174, 248, 179, 248, - 175, 0, 22, 174, 248, 175, 0, 23, 174, 248, - 175, 0, 24, 174, 248, 175, 0, 25, 174, 248, - 175, 0, 26, 174, 248, 175, 0, 27, 174, 248, - 175, 0, 28, 174, 248, 179, 248, 175, 0, 29, - 174, 248, 179, 248, 175, 0, 30, 174, 248, 179, - 248, 175, 0, 19, 174, 248, 175, 0, 3, 0, - 9, 0, 4, 0, 4, 176, 248, 177, 0, 4, - 231, 0, 4, 176, 248, 177, 231, 0, 4, 178, - 4, 0, 4, 176, 248, 177, 178, 4, 0, 4, - 178, 4, 231, 0, 4, 176, 248, 177, 178, 4, - 231, 0, 248, 8, 248, 0, 248, 8, 248, 8, - 248, 0, 252, 0, 164, 251, 0, 163, 251, 0, - 251, 164, 251, 0, 251, 163, 251, 0, 180, 248, - 179, 248, 179, 248, 179, 248, 179, 248, 181, 0, - 180, 248, 179, 248, 179, 248, 179, 248, 181, 0, - 180, 248, 179, 248, 179, 248, 181, 0, 174, 248, - 179, 248, 179, 248, 175, 0, 0, 174, 254, 175, - 0, 5, 0, 254, 179, 5, 0, 0, 180, 256, - 181, 0, 174, 256, 175, 0, 257, 0, 256, 179, - 257, 0, 0, 248, 0, 4, 176, 177, 0, 180, - 258, 181, 0, 248, 0, 250, 0, 4, 176, 177, - 0, 258, 179, 248, 0, 258, 179, 250, 0, 258, - 179, 4, 176, 177, 0, 180, 248, 179, 248, 179, - 248, 179, 248, 181, 0, 180, 248, 179, 248, 179, - 248, 181, 0, 180, 4, 179, 248, 181, 0, 4, - 0, 4, 178, 84, 178, 4, 0, 180, 261, 181, - 0, 4, 176, 248, 177, 178, 85, 0, 259, 0, - 261, 179, 259, 0, 5, 0, 32, 174, 5, 175, - 0, 32, 174, 5, 179, 258, 175, 0 + 0, 4, 178, 85, 7, 260, 6, 0, 4, 176, + 248, 177, 178, 85, 7, 260, 6, 0, 34, 174, + 248, 175, 7, 251, 6, 0, 49, 34, 174, 248, + 175, 7, 257, 6, 0, 64, 34, 257, 7, 180, + 248, 179, 248, 179, 248, 181, 6, 0, 41, 42, + 257, 7, 248, 6, 0, 34, 180, 248, 181, 6, + 0, 37, 174, 248, 175, 7, 257, 6, 0, 39, + 174, 248, 175, 7, 257, 6, 0, 64, 37, 257, + 7, 180, 248, 179, 248, 179, 248, 181, 6, 0, + 35, 174, 248, 175, 7, 257, 6, 0, 35, 174, + 248, 175, 7, 257, 45, 251, 6, 0, 43, 174, + 248, 175, 7, 180, 248, 179, 248, 179, 5, 179, + 5, 179, 5, 181, 6, 0, 36, 174, 248, 175, + 7, 257, 6, 0, 49, 37, 174, 248, 175, 7, + 257, 6, 0, 37, 59, 174, 248, 175, 7, 257, + 6, 0, 78, 174, 248, 175, 7, 257, 6, 0, + 79, 174, 248, 175, 7, 257, 83, 257, 80, 248, + 6, 0, 37, 180, 248, 181, 6, 0, 45, 38, + 174, 248, 175, 7, 257, 6, 0, 139, 38, 174, + 248, 175, 7, 180, 248, 179, 257, 181, 6, 0, + 46, 38, 174, 248, 175, 7, 257, 6, 0, 79, + 38, 81, 82, 174, 248, 175, 7, 255, 83, 180, + 257, 179, 257, 181, 80, 180, 248, 179, 248, 181, + 6, 0, 79, 38, 174, 248, 175, 7, 255, 83, + 180, 257, 179, 257, 181, 80, 180, 248, 179, 248, + 181, 6, 0, 49, 38, 174, 248, 175, 7, 257, + 6, 0, 38, 59, 174, 248, 175, 7, 257, 6, + 0, 38, 180, 248, 181, 6, 0, 48, 40, 174, + 248, 175, 7, 257, 6, 0, 40, 174, 248, 175, + 7, 257, 6, 0, 49, 40, 174, 248, 175, 7, + 257, 6, 0, 54, 251, 180, 235, 181, 0, 53, + 180, 251, 179, 251, 179, 248, 181, 180, 235, 181, + 0, 55, 251, 180, 235, 181, 0, 56, 180, 251, + 179, 248, 181, 180, 235, 181, 0, 237, 0, 236, + 0, 234, 0, 0, 236, 233, 0, 58, 180, 236, + 181, 0, 61, 180, 236, 181, 0, 61, 4, 176, + 248, 177, 6, 0, 61, 95, 6, 0, 4, 262, + 6, 0, 4, 248, 6, 0, 91, 6, 0, 33, + 6, 0, 86, 174, 248, 8, 248, 175, 0, 86, + 174, 248, 8, 248, 8, 248, 175, 0, 86, 4, + 87, 180, 248, 8, 248, 181, 0, 86, 4, 87, + 180, 248, 8, 248, 8, 248, 181, 0, 88, 0, + 94, 4, 0, 92, 0, 93, 4, 6, 0, 89, + 174, 248, 175, 0, 90, 0, 57, 34, 180, 248, + 179, 251, 181, 6, 0, 57, 34, 180, 248, 179, + 251, 179, 251, 179, 248, 181, 6, 0, 57, 37, + 180, 248, 179, 251, 181, 6, 0, 57, 37, 180, + 248, 179, 251, 179, 251, 179, 248, 181, 6, 0, + 57, 38, 180, 248, 179, 251, 181, 6, 0, 57, + 38, 180, 248, 179, 251, 179, 251, 179, 248, 181, + 6, 0, 57, 38, 180, 248, 179, 251, 181, 180, + 242, 181, 6, 0, 57, 38, 180, 248, 179, 251, + 179, 251, 179, 248, 181, 180, 242, 181, 6, 0, + 243, 0, 242, 243, 0, 65, 180, 257, 179, 257, + 179, 257, 181, 6, 0, 60, 6, 0, 47, 37, + 257, 7, 248, 6, 0, 47, 37, 257, 7, 248, + 50, 52, 248, 6, 0, 47, 37, 257, 7, 248, + 50, 51, 248, 6, 0, 47, 38, 180, 248, 181, + 7, 257, 6, 0, 44, 38, 180, 248, 181, 7, + 257, 6, 0, 47, 40, 180, 248, 181, 7, 257, + 6, 0, 60, 38, 257, 7, 248, 6, 0, 60, + 38, 257, 6, 0, 62, 6, 0, 63, 6, 0, + 3, 0, 164, 3, 0, 99, 0, 100, 0, 101, + 0, 102, 0, 103, 0, 249, 0, 174, 248, 175, + 0, 164, 248, 0, 163, 248, 0, 169, 248, 0, + 248, 164, 248, 0, 248, 163, 248, 0, 248, 165, + 248, 0, 248, 166, 248, 0, 248, 167, 248, 0, + 248, 173, 248, 0, 248, 159, 248, 0, 248, 161, + 248, 0, 248, 160, 248, 0, 248, 162, 248, 0, + 248, 156, 248, 0, 248, 157, 248, 0, 248, 155, + 248, 0, 248, 154, 248, 0, 248, 153, 248, 8, + 248, 0, 10, 174, 248, 175, 0, 11, 174, 248, + 175, 0, 12, 174, 248, 175, 0, 13, 174, 248, + 175, 0, 14, 174, 248, 175, 0, 15, 174, 248, + 175, 0, 16, 174, 248, 175, 0, 17, 174, 248, + 175, 0, 18, 174, 248, 175, 0, 20, 174, 248, + 175, 0, 21, 174, 248, 179, 248, 175, 0, 22, + 174, 248, 175, 0, 23, 174, 248, 175, 0, 24, + 174, 248, 175, 0, 25, 174, 248, 175, 0, 26, + 174, 248, 175, 0, 27, 174, 248, 175, 0, 28, + 174, 248, 179, 248, 175, 0, 29, 174, 248, 179, + 248, 175, 0, 30, 174, 248, 179, 248, 175, 0, + 19, 174, 248, 175, 0, 3, 0, 9, 0, 4, + 0, 4, 176, 248, 177, 0, 4, 231, 0, 4, + 176, 248, 177, 231, 0, 4, 178, 4, 0, 4, + 176, 248, 177, 178, 4, 0, 4, 178, 4, 231, + 0, 4, 176, 248, 177, 178, 4, 231, 0, 248, + 8, 248, 0, 248, 8, 248, 8, 248, 0, 252, + 0, 164, 251, 0, 163, 251, 0, 251, 164, 251, + 0, 251, 163, 251, 0, 180, 248, 179, 248, 179, + 248, 179, 248, 179, 248, 181, 0, 180, 248, 179, + 248, 179, 248, 179, 248, 181, 0, 180, 248, 179, + 248, 179, 248, 181, 0, 174, 248, 179, 248, 179, + 248, 175, 0, 0, 174, 254, 175, 0, 5, 0, + 254, 179, 5, 0, 0, 180, 256, 181, 0, 174, + 256, 175, 0, 257, 0, 256, 179, 257, 0, 0, + 248, 0, 4, 176, 177, 0, 180, 258, 181, 0, + 248, 0, 250, 0, 4, 176, 177, 0, 258, 179, + 248, 0, 258, 179, 250, 0, 258, 179, 4, 176, + 177, 0, 180, 248, 179, 248, 179, 248, 179, 248, + 181, 0, 180, 248, 179, 248, 179, 248, 181, 0, + 180, 4, 179, 248, 181, 0, 4, 0, 4, 178, + 84, 178, 4, 0, 180, 261, 181, 0, 4, 176, + 248, 177, 178, 85, 0, 259, 0, 261, 179, 259, + 0, 5, 0, 32, 174, 5, 175, 0, 32, 174, + 5, 179, 258, 175, 0 }; #endif @@ -574,25 +576,25 @@ static const short yyrline[] = { 0, 605, 609, 621, 627, 630, 634, 646, 652, 655, 659, 672, 678, 681, 685, 698, 704, 707, 711, 724, 736, 738, 739, 740, 741, 743, 745, 747, 778, 812, 826, - 835, 850, 862, 876, 899, 923, 935, 949, 961, 973, - 994, 1005, 1011, 1030, 1041, 1049, 1055, 1061, 1080, 1086, - 1102, 1109, 1115, 1121, 1127, 1133, 1152, 1164, 1170, 1189, - 1210, 1218, 1224, 1230, 1236, 1248, 1254, 1260, 1272, 1278, - 1283, 1288, 1295, 1297, 1298, 1301, 1306, 1317, 1335, 1343, - 1348, 1359, 1414, 1433, 1437, 1457, 1473, 1487, 1512, 1537, - 1563, 1569, 1574, 1579, 1583, 1593, 1599, 1605, 1609, 1613, - 1617, 1621, 1626, 1633, 1637, 1642, 1660, 1670, 1688, 1705, - 1722, 1743, 1763, 1783, 1800, 1824, 1829, 1840, 1842, 1845, - 1847, 1848, 1849, 1850, 1853, 1855, 1856, 1857, 1858, 1859, - 1860, 1861, 1862, 1869, 1870, 1871, 1872, 1873, 1874, 1875, - 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, - 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, - 1896, 1897, 1898, 1899, 1900, 1905, 1910, 1914, 1925, 1942, - 1953, 1972, 1988, 2004, 2020, 2037, 2044, 2057, 2062, 2066, - 2070, 2074, 2079, 2084, 2088, 2092, 2098, 2102, 2107, 2111, - 2116, 2120, 2124, 2130, 2136, 2142, 2146, 2152, 2167, 2174, - 2180, 2189, 2201, 2205, 2213, 2226, 2231, 2235, 2240, 2245, - 2263, 2268, 2285, 2294, 2300, 2305, 2309 + 835, 850, 862, 876, 899, 923, 935, 949, 961, 975, + 990, 1011, 1022, 1028, 1047, 1058, 1066, 1072, 1078, 1097, + 1103, 1119, 1126, 1132, 1138, 1144, 1150, 1169, 1181, 1187, + 1206, 1227, 1235, 1241, 1247, 1253, 1265, 1271, 1277, 1289, + 1295, 1300, 1305, 1312, 1314, 1315, 1318, 1323, 1334, 1352, + 1360, 1365, 1376, 1431, 1450, 1454, 1474, 1490, 1504, 1529, + 1554, 1580, 1586, 1591, 1596, 1600, 1610, 1616, 1622, 1626, + 1630, 1634, 1638, 1643, 1650, 1654, 1659, 1677, 1687, 1705, + 1722, 1739, 1760, 1780, 1800, 1817, 1841, 1846, 1857, 1859, + 1862, 1864, 1865, 1866, 1867, 1870, 1872, 1873, 1874, 1875, + 1876, 1877, 1878, 1879, 1886, 1887, 1888, 1889, 1890, 1891, + 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, + 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, + 1912, 1913, 1914, 1915, 1916, 1917, 1922, 1927, 1931, 1942, + 1959, 1970, 1989, 2005, 2021, 2037, 2054, 2061, 2074, 2079, + 2083, 2087, 2091, 2096, 2101, 2105, 2109, 2115, 2119, 2124, + 2128, 2133, 2137, 2141, 2147, 2153, 2159, 2163, 2169, 2184, + 2191, 2197, 2206, 2218, 2222, 2230, 2243, 2248, 2252, 2257, + 2262, 2280, 2285, 2302, 2311, 2317, 2322, 2326 }; #endif @@ -659,24 +661,24 @@ static const short yyr1[] = { 0, 222, 224, 224, 226, 225, 227, 227, 229, 228, 230, 230, 230, 230, 230, 231, 231, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, - 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, - 233, 233, 233, 233, 233, 233, 233, 233, 234, 234, - 234, 234, 235, 235, 235, 236, 236, 237, 238, 238, - 238, 239, 239, 239, 239, 240, 240, 240, 240, 240, - 240, 240, 240, 240, 240, 241, 241, 241, 241, 241, - 241, 241, 241, 242, 242, 243, 243, 244, 244, 244, - 244, 244, 244, 244, 244, 245, 245, 246, 246, 247, - 247, 247, 247, 247, 248, 248, 248, 248, 248, 248, + 233, 233, 233, 233, 233, 233, 233, 233, 233, 234, + 234, 234, 234, 235, 235, 235, 236, 236, 237, 238, + 238, 238, 239, 239, 239, 239, 240, 240, 240, 240, + 240, 240, 240, 240, 240, 240, 241, 241, 241, 241, + 241, 241, 241, 241, 242, 242, 243, 243, 244, 244, + 244, 244, 244, 244, 244, 244, 245, 245, 246, 246, + 247, 247, 247, 247, 247, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 250, 250, 251, 251, 251, - 251, 251, 252, 252, 252, 252, 253, 253, 254, 254, - 255, 255, 255, 256, 256, 257, 257, 257, 257, 258, - 258, 258, 258, 258, 258, 259, 259, 259, 259, 259, - 260, 260, 261, 261, 262, 262, 262 + 248, 248, 248, 248, 248, 248, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 250, 250, 251, 251, + 251, 251, 251, 252, 252, 252, 252, 253, 253, 254, + 254, 255, 255, 255, 256, 256, 257, 257, 257, 257, + 258, 258, 258, 258, 258, 258, 259, 259, 259, 259, + 259, 260, 260, 261, 261, 262, 262, 262 }; static const short yyr2[] = { 0, @@ -694,25 +696,25 @@ static const short yyr2[] = { 0, 3, 0, 25, 1, 3, 0, 25, 1, 3, 0, 31, 1, 3, 0, 31, 1, 3, 0, 31, 1, 1, 1, 1, 1, 1, 1, 4, 7, 6, 3, - 6, 6, 9, 6, 9, 5, 8, 8, 11, 9, - 7, 8, 12, 6, 5, 7, 7, 12, 7, 9, - 17, 7, 8, 8, 7, 11, 5, 8, 12, 8, - 22, 20, 8, 8, 5, 8, 7, 8, 5, 11, - 5, 9, 1, 1, 1, 0, 2, 4, 4, 6, - 3, 3, 3, 2, 2, 6, 8, 8, 10, 1, - 2, 1, 3, 4, 1, 8, 12, 8, 12, 8, - 12, 11, 15, 1, 2, 9, 2, 6, 9, 9, - 8, 8, 8, 6, 4, 2, 2, 1, 2, 1, - 1, 1, 1, 1, 1, 3, 2, 2, 2, 3, + 6, 6, 9, 6, 9, 5, 8, 8, 11, 6, + 9, 7, 8, 12, 6, 5, 7, 7, 12, 7, + 9, 17, 7, 8, 8, 7, 11, 5, 8, 12, + 8, 22, 20, 8, 8, 5, 8, 7, 8, 5, + 11, 5, 9, 1, 1, 1, 0, 2, 4, 4, + 6, 3, 3, 3, 2, 2, 6, 8, 8, 10, + 1, 2, 1, 3, 4, 1, 8, 12, 8, 12, + 8, 12, 11, 15, 1, 2, 9, 2, 6, 9, + 9, 8, 8, 8, 6, 4, 2, 2, 1, 2, + 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 5, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, - 4, 6, 6, 6, 4, 1, 1, 1, 4, 2, - 5, 3, 6, 4, 7, 3, 5, 1, 2, 2, - 3, 3, 11, 9, 7, 7, 0, 3, 1, 3, - 0, 3, 3, 1, 3, 0, 1, 3, 3, 1, - 1, 3, 3, 3, 5, 9, 7, 5, 1, 5, - 3, 6, 1, 3, 1, 4, 6 + 3, 3, 3, 3, 5, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, + 4, 4, 6, 6, 6, 4, 1, 1, 1, 4, + 2, 5, 3, 6, 4, 7, 3, 5, 1, 2, + 2, 3, 3, 11, 9, 7, 7, 0, 3, 1, + 3, 0, 3, 3, 1, 3, 0, 1, 3, 3, + 1, 1, 3, 3, 3, 5, 9, 7, 5, 1, + 5, 3, 6, 1, 3, 1, 4, 6 }; static const short yydefact[] = { 0, @@ -721,1227 +723,1204 @@ static const short yydefact[] = { 0, 12, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 200, 0, 205, 0, 202, 0, + 0, 0, 0, 0, 201, 0, 206, 0, 203, 0, 0, 0, 52, 54, 53, 55, 56, 57, 58, 59, - 64, 63, 60, 61, 62, 228, 0, 0, 0, 13, - 14, 16, 15, 17, 297, 297, 0, 276, 278, 325, - 130, 277, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 63, 60, 61, 62, 229, 0, 0, 0, 13, + 14, 16, 15, 17, 298, 298, 0, 277, 279, 326, + 130, 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, 133, 134, 0, 0, - 0, 135, 136, 0, 0, 0, 0, 0, 0, 235, - 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 306, 0, 0, 0, 0, 306, + 0, 135, 136, 0, 0, 0, 0, 0, 0, 236, + 0, 0, 196, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 307, 0, 0, 0, 0, 307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 288, 0, 0, 0, 0, 0, 186, - 306, 0, 0, 186, 226, 227, 306, 306, 0, 0, - 0, 0, 0, 0, 194, 0, 201, 0, 229, 0, + 0, 0, 0, 289, 0, 0, 0, 0, 0, 187, + 307, 0, 0, 187, 227, 228, 307, 307, 0, 0, + 0, 0, 0, 0, 195, 0, 202, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 280, 0, 69, 0, + 0, 0, 0, 0, 0, 0, 281, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 238, 237, 239, 0, 0, 0, 0, 0, 0, - 140, 193, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 0, 0, + 0, 239, 238, 240, 0, 0, 0, 0, 0, 0, + 0, 140, 194, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 278, 0, 307, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 290, 289, 0, - 0, 0, 0, 186, 186, 0, 0, 0, 0, 0, - 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 203, 0, 0, 0, 0, 0, 0, + 0, 279, 0, 308, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 291, 290, + 0, 0, 0, 0, 187, 187, 0, 0, 0, 0, + 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 299, 0, 0, 0, - 0, 0, 282, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 300, 0, 0, + 0, 0, 0, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 236, 306, 0, - 130, 0, 0, 0, 137, 0, 253, 252, 250, 251, - 246, 248, 247, 249, 241, 240, 242, 243, 244, 245, + 0, 0, 0, 0, 0, 0, 0, 0, 237, 307, + 0, 130, 0, 0, 0, 0, 137, 0, 254, 253, + 251, 252, 247, 249, 248, 250, 242, 241, 243, 244, + 245, 246, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 279, 311, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 278, 310, 311, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 293, 292, 186, 0, + 185, 184, 0, 0, 0, 0, 0, 189, 188, 226, + 0, 0, 190, 0, 0, 0, 0, 0, 0, 0, + 0, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 292, 291, 185, 0, 184, 183, - 0, 0, 0, 0, 0, 188, 187, 225, 0, 0, - 189, 0, 0, 0, 0, 0, 0, 0, 0, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 299, 0, 0, 19, 0, 280, + 285, 69, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 276, 265, 0, 267, + 268, 269, 270, 271, 272, 0, 0, 0, 327, 0, + 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, + 0, 0, 65, 0, 0, 156, 307, 307, 0, 307, + 168, 0, 176, 307, 307, 309, 0, 0, 0, 310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 180, 182, 0, 0, + 0, 0, 0, 0, 0, 0, 307, 0, 0, 307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 298, 0, 0, 19, 0, 279, 284, 69, + 0, 0, 0, 307, 307, 0, 0, 0, 0, 307, + 307, 0, 0, 0, 0, 0, 307, 0, 307, 0, + 0, 0, 0, 0, 301, 0, 298, 0, 282, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 275, 264, 0, 266, 267, 268, - 269, 270, 271, 0, 0, 0, 326, 0, 0, 0, - 0, 0, 0, 0, 146, 0, 0, 65, 0, 0, - 155, 306, 306, 0, 306, 167, 0, 175, 306, 306, - 308, 0, 0, 0, 309, 0, 0, 0, 0, 0, + 0, 0, 67, 0, 0, 0, 0, 0, 139, 0, + 0, 0, 0, 141, 142, 144, 0, 0, 320, 0, + 324, 0, 150, 255, 0, 0, 0, 0, 307, 0, + 307, 0, 0, 313, 287, 279, 314, 315, 155, 0, + 307, 307, 307, 219, 0, 307, 307, 307, 307, 307, + 307, 307, 0, 0, 0, 0, 0, 0, 0, 225, + 191, 0, 0, 0, 0, 302, 0, 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 179, 181, 0, 0, 0, 0, 0, 0, 0, - 0, 306, 0, 0, 306, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 306, 306, - 0, 0, 0, 0, 306, 306, 0, 0, 0, 0, - 0, 306, 0, 306, 0, 0, 0, 0, 0, 300, - 0, 297, 0, 281, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, - 0, 0, 0, 139, 0, 0, 0, 0, 141, 142, - 144, 0, 254, 0, 0, 0, 0, 306, 0, 306, - 0, 0, 312, 286, 278, 313, 314, 154, 0, 306, - 306, 306, 218, 0, 306, 306, 306, 306, 306, 306, - 306, 0, 0, 0, 0, 0, 0, 0, 224, 190, - 0, 0, 0, 0, 301, 0, 0, 0, 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 231, 232, 233, 234, 235, + 0, 0, 0, 0, 0, 0, 0, 18, 0, 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 230, 231, 232, 233, 234, 0, - 0, 0, 0, 0, 0, 0, 18, 0, 283, 0, + 0, 0, 0, 266, 273, 274, 275, 328, 130, 0, + 0, 0, 0, 138, 0, 0, 0, 279, 0, 0, + 322, 66, 152, 160, 0, 163, 0, 157, 0, 158, + 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, + 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, + 307, 307, 0, 307, 0, 0, 0, 0, 0, 0, + 307, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 307, + 0, 0, 0, 0, 0, 0, 0, 0, 298, 286, + 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 147, 0, 0, 148, 0, + 0, 0, 0, 325, 0, 165, 175, 288, 316, 0, + 223, 169, 171, 0, 0, 222, 224, 177, 153, 164, + 174, 179, 0, 297, 0, 296, 0, 0, 207, 0, + 209, 0, 211, 0, 0, 0, 302, 0, 305, 0, + 0, 0, 0, 199, 198, 0, 0, 0, 0, 0, + 21, 0, 30, 0, 34, 0, 28, 0, 0, 33, + 0, 38, 36, 0, 0, 0, 0, 0, 0, 45, + 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 265, 272, 273, 274, 327, 130, 0, 0, - 0, 0, 138, 319, 0, 0, 66, 151, 159, 0, - 162, 0, 156, 0, 157, 177, 0, 0, 0, 0, + 143, 145, 0, 151, 0, 0, 0, 0, 161, 0, + 221, 220, 187, 0, 183, 0, 0, 0, 0, 0, + 0, 215, 0, 0, 0, 304, 307, 303, 307, 0, + 0, 307, 0, 0, 302, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 186, 0, 0, 0, 0, 0, - 0, 0, 0, 165, 0, 306, 306, 0, 306, 0, - 0, 0, 0, 0, 0, 306, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 323, 321, + 319, 0, 0, 0, 0, 295, 0, 0, 0, 218, + 307, 0, 216, 0, 0, 0, 306, 0, 0, 200, + 0, 0, 35, 0, 0, 0, 0, 25, 0, 31, + 0, 37, 26, 39, 0, 42, 0, 46, 47, 0, + 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 149, 0, 0, 181, + 0, 0, 0, 0, 0, 213, 0, 0, 307, 307, + 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 306, 0, 0, 0, 0, 0, - 0, 0, 0, 297, 285, 68, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 88, 92, 0, 318, 0, + 294, 208, 210, 212, 0, 307, 154, 159, 0, 0, + 170, 0, 0, 0, 0, 0, 29, 32, 40, 0, + 41, 48, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 147, 0, 0, 0, 0, 0, 278, 0, 148, 0, - 164, 174, 287, 315, 0, 222, 168, 170, 0, 0, - 221, 223, 176, 152, 163, 173, 178, 0, 296, 0, - 295, 0, 0, 206, 0, 208, 0, 210, 0, 0, - 0, 301, 0, 304, 0, 0, 0, 0, 198, 197, - 0, 0, 0, 0, 0, 21, 0, 30, 0, 34, - 0, 28, 0, 0, 33, 0, 38, 36, 0, 0, - 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, - 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 143, 145, 0, 0, 323, - 0, 150, 0, 0, 0, 160, 0, 220, 219, 186, - 0, 182, 0, 0, 0, 0, 0, 0, 214, 0, - 0, 0, 303, 306, 302, 306, 0, 0, 306, 0, - 0, 301, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 306, 0, 0, 0, 0, 0, + 307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 321, 0, 0, - 0, 0, 0, 0, 294, 0, 0, 0, 217, 306, - 0, 215, 0, 0, 0, 305, 0, 0, 199, 0, - 0, 35, 0, 0, 0, 0, 25, 0, 31, 0, - 37, 26, 39, 0, 42, 0, 46, 47, 0, 0, - 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 149, 0, 324, 320, 318, - 0, 0, 180, 0, 0, 0, 0, 0, 212, 0, - 0, 306, 306, 166, 0, 0, 0, 0, 0, 0, + 0, 317, 0, 0, 307, 0, 0, 0, 0, 0, + 24, 27, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 0, 86, 0, 90, 0, + 214, 0, 0, 0, 0, 0, 307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 84, 88, 92, - 0, 0, 0, 293, 207, 209, 211, 0, 306, 153, - 158, 0, 0, 169, 0, 0, 0, 0, 0, 29, - 32, 40, 0, 41, 48, 43, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 322, - 0, 317, 0, 0, 0, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 306, - 0, 0, 0, 0, 0, 24, 27, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, - 0, 86, 0, 90, 316, 0, 213, 0, 0, 0, - 0, 0, 306, 0, 0, 0, 0, 0, 0, 0, + 0, 44, 20, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 83, 85, 87, 89, 91, 93, 162, 217, + 0, 0, 0, 0, 307, 0, 0, 0, 0, 0, + 0, 96, 100, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 44, 20, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 85, - 87, 89, 91, 93, 161, 216, 0, 0, 0, 0, - 306, 0, 0, 0, 0, 0, 0, 96, 100, 104, + 6, 307, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 173, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 94, 0, 98, 0, 102, 0, 307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 6, 306, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, - 0, 98, 0, 102, 0, 306, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, - 0, 22, 0, 0, 0, 0, 0, 0, 95, 97, - 99, 101, 103, 105, 306, 0, 0, 0, 108, 112, - 116, 0, 0, 0, 0, 0, 0, 0, 306, 0, + 0, 0, 0, 172, 0, 22, 0, 0, 0, 0, + 0, 0, 95, 97, 99, 101, 103, 105, 307, 0, + 0, 0, 108, 112, 116, 0, 0, 0, 0, 0, + 0, 0, 307, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 106, 0, 110, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 106, 0, 110, 0, 114, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, - 109, 111, 113, 115, 117, 0, 120, 124, 128, 23, - 0, 0, 0, 0, 0, 0, 0, 118, 0, 122, - 0, 126, 0, 0, 0, 0, 0, 0, 119, 121, - 123, 125, 127, 129, 0, 0, 0 + 0, 0, 0, 107, 109, 111, 113, 115, 117, 0, + 120, 124, 128, 23, 0, 0, 0, 0, 0, 0, + 0, 118, 0, 122, 0, 126, 0, 0, 0, 0, + 0, 0, 119, 121, 123, 125, 127, 129, 0, 0, + 0 }; -static const short yydefgoto[] = { 1485, +static const short yydefgoto[] = { 1489, 5, 6, 19, 20, 21, 22, 7, 63, 64, 65, - 375, 1259, 534, 1207, 1261, 535, 1208, 1263, 536, 1209, - 1369, 537, 1342, 1371, 538, 1343, 1373, 539, 1344, 1430, - 540, 1416, 1432, 541, 1417, 1434, 542, 1418, 1467, 543, - 1461, 1469, 544, 1462, 1471, 545, 1463, 127, 227, 66, - 467, 457, 458, 459, 460, 70, 71, 72, 73, 1018, - 1019, 74, 75, 78, 770, 293, 130, 437, 163, 164, - 222, 368, 848, 943, 944, 438, 806, 905, 1001, 131 + 376, 1264, 536, 1214, 1266, 537, 1215, 1268, 538, 1216, + 1373, 539, 1346, 1375, 540, 1347, 1377, 541, 1348, 1434, + 542, 1420, 1436, 543, 1421, 1438, 544, 1422, 1471, 545, + 1465, 1473, 546, 1466, 1475, 547, 1467, 127, 227, 66, + 469, 459, 460, 461, 462, 70, 71, 72, 73, 1031, + 1032, 74, 75, 78, 781, 294, 130, 439, 163, 164, + 222, 369, 863, 958, 959, 440, 701, 581, 702, 131 }; -static const short yypact[] = { 2025, - 67,-32768,-32768, -112,-32768, 235, 2171,-32768, 8, 111, - 124, 134, 183, 200, 225, 102, 114, 139,-32768,-32768, --32768,-32768, 311, 145, 249, -15, 194, 195, -39, -37, - 201, 204, 343, 221, 229, 260, 369, 117, 384, 512, - 265, -32, -32, 274, 199, 296, 403, 4, 444, 447, - 73, 284, -24, 6,-32768, 309,-32768, 478,-32768, 511, - 531, 498,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768, 536, 8, 2193,-32768, --32768,-32768,-32768,-32768, 370, 370, 542,-32768, 187, 2, --32768,-32768, 394, 398, 402, 407, 414, 421, 425, 427, - 428, 429, 432, 433, 436, 437, 438, 439, 442, 443, - 445, 468, 482, 483,-32768,-32768,-32768,-32768, 65, 65, - 65,-32768,-32768, 65, 611, 19, 65, 552, 508,-32768, - 612, 653,-32768, 65, 65, 65, 65, 485, 65, 65, - 486, 65, 65, 65, 24, 65, 496, 503, 504, 24, - 499, 500, 510, 513, 514, 515, 516, -32, -32, -32, - 65, 65, -36,-32768, -11, -32, 502, 505, 518,-32768, - 24, 517, 685,-32768,-32768,-32768, 24, 24, 65, -52, - 65, 605, 65, 65,-32768, 688,-32768, 521,-32768, 8, - 522, 528, 529, 530, 532, 533, 534, 535, 538, 539, - 543, 546, 547, 548, 549, 580, 592, 593, 594, 598, - 607, 609, 610, 613, 616, 617, 618, 619, 622, 623, - 700, 537, 595, 600, 65, 706,-32768, -32,-32768, 65, +static const short yypact[] = { 1875, + 140,-32768,-32768, -29,-32768, 253, 1993,-32768, 12, 166, + 172, 176, 191, 260, 296, 29, 32, 61,-32768,-32768, +-32768,-32768, 317, 131, 302, -52, 151, 190, -37, -9, + 213, 255, 194, 256, 320, 377, 386, 126, 391, 413, + 269, 97, 97, 283, 230, 290, 401, 8, 450, 465, + 73, 308, -15, 10,-32768, 324,-32768, 483,-32768, 501, + 510, 486,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768, 522, 12, 2015,-32768, +-32768,-32768,-32768,-32768, 352, 352, 525,-32768, 23, 6, +-32768,-32768, 353, 358, 359, 364, 365, 366, 368, 372, + 374, 375, 381, 382, 383, 384, 387, 388, 389, 394, + 395, 396, 403, 404,-32768,-32768,-32768,-32768, 65, 65, + 65,-32768,-32768, 65, 608, 48, 65, 554, 578,-32768, + 573, 526,-32768, 65, 65, 65, 65, 406, 65, 65, + 407, 65, 65, 65, 16, 65, 408, 409, 417, 16, + 421, 424, 434, 435, 436, 441, 442, 97, 97, 97, + 65, 65, 11,-32768, 109, 97, 427, 459, 460,-32768, + 16, 411, 635,-32768,-32768,-32768, 16, 16, 65, -30, + 65, 555, 65, 65,-32768, 637,-32768, 471,-32768, 12, + 472, 473, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 498, 499, 500, 502, 504, 505, 507, 513, 524, + 527, 531, 532, 533, 534, 535, 539, 541, 542, 543, + 655, 520, 528, 521, 65, 714,-32768, 97,-32768, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 781, 625, 625, 625, 4940, 800, 4840, 252, 639, 649, --32768,-32768, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65,-32768, -50, 4963, - 1638, 4986, 5009, 65, 5032, 2179, 65, 2202, 5055, 5078, - 362, 715, 6412, 811, 5101, 65, 65, 65, 814, 65, - 65, 65, 65, 65, 65, 65, 129,-32768,-32768, 2593, - 2614, -32, -32, 141, 141, 198, 65, 65, 65, 1864, - 60, 65,-32768, 1910, 816, 817, 5124, 743, 65, 5147, - 646, 757, 5170,-32768, 65, 682, 823, 838, 839, 840, - 841, 843, 847, 848, 849, 850, 852, 853, 854, 856, - 857, 858, 871, 875, 876, 877, 878, 880, 881, 755, - 883, 885, 886, 900, 903, 904,-32768, 26, 910, 902, - 921, 4865, 115, 107, 424, 5193, 5216, 5239, 5262, 5285, - 5308, 5331, 5354, 5377, 5400, 5423, 2635, 5446, 5469, 5492, - 5515, 5538, 5561, 2656, 2677, 2698, 93,-32768, 24, 196, - 922, 65, 925, 924,-32768, 1661, 400, 674, 305, 305, - 340, 340, 340, 340, 144, 144, 625, 625, 625, 625, - 926, 715, 928, 927, 944, 945, 5584, 946, 948, 5607, - 951, 952, 953, 1063, 404, 1682,-32768, -13, 65, 956, - 2225, 5630, 5653, 65, 2248, 2271, 5676, 5699, 5722, 5745, - 5768, -32, 65, 65,-32768,-32768,-32768, 777, 1956,-32768, - 785, 65, 2719, 2740, 2761,-32768,-32768,-32768, 65, 4890, --32768, 788, 790, 965, 791, 5791, 966, 65, 65,-32768, - 5814, 828, 796, 798, 799, 801, 804, 805, 806, 807, - 808, 809, 810, 815, 821, 822, 824, 826, 830, 831, - 832, 834, 835, 836, 842, 844, 845, 863, 864, 865, - 866, 867,-32768, 974, 818,-32768, 868, -107,-32768,-32768, - 833, 855, 874, 879, 882, 884, 887, 888, 889, 890, - 891, 894, 989,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 715, 546, 546, 546, 4772, 716, 4672, 402, 544, 717, + 638,-32768,-32768, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65,-32768, -48, + 4795, 2030, 4818, 4841, 65, 4864, 2053, 65, 2076, 4887, + 4910, 227, 1536, 6244, 720, 4933, 65, 65, 65, 721, + 65, 65, 65, 65, 65, 65, 65, -107,-32768,-32768, + 1276, 1846, 97, 97, 420, 420, -22, 65, 65, 65, + 1806, 60, 65,-32768, 1823, 722, 729, 4956, 639, 65, + 4979, 566, 1156, 5002,-32768, 65, 602, 743, 744, 745, + 747, 748, 749, 750, 751, 768, 769, 770, 771, 773, + 774, 775, 776, 778, 779, 781, 783, 784, 785, 801, + 675, 803, 807, 808, 812, 820, 828,-32768, -7, 831, + 834, 832, 4697, 207, 130, 692, 5025, 5048, 5071, 5094, + 5117, 5140, 5163, 5186, 5209, 5232, 5255, 2467, 5278, 5301, + 5324, 5347, 5370, 5393, 2488, 2509, 2530, 84,-32768, 16, + 294, 836, 65, 837, 835, 7,-32768, 1559, 833, 689, + 433, 433, -102, -102, -102, -102, 150, 150, 546, 546, + 546, 546, 852, 1536, 853, 857, 860, 861, 5416, 862, + 864, 5439, 866, 867, 869, 945, 241, 1595,-32768, 19, + 65, 870, 2099, 5462, 5485, 65, 2122, 2145, 5508, 5531, + 5554, 5577, 5600, 97, 65, 65,-32768,-32768,-32768, 661, + 1057,-32768, 678, 65, 2551, 2572, 2593,-32768,-32768,-32768, + 65, 4722,-32768, 698, 711, 885, 719, 5623, 887, 65, + 65,-32768, 5646, 755, 723, 724, 725, 726, 727, 730, + 731, 732, 733, 734, 736, 737, 738, 739, 740, 741, + 742, 757, 758, 759, 760, 762, 763, 764, 767, 797, + 798, 799, 800, 802,-32768, 903, 805,-32768, 804, 62, +-32768,-32768, 811, 817, 839, 841, 844, 845, 846, 847, + 848, 849, 850, 854, 944,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768, 65,-32768,-32768,-32768, --32768,-32768,-32768, 65, 65, 65,-32768, 715, 990, 52, - 65, 996, 1000, 783,-32768, 1010, 65,-32768, 185, -32, --32768, 24, 24, 1011, 24,-32768, 1012,-32768, 24, 24, --32768, 1503, 65, 1559,-32768, 958, 846, 1015, 1020, 1042, - 364, 1043, 1045, 1047, 1048, 1050, 1052, 1053, 233, 2782, - 2803,-32768,-32768, 2294, -32, -32, -32, 993, 1064, 65, - 65, 24, 65, 1062, 24, 1706, 596, 1087, 954, 1092, - 65, 65, -32, 1094, 1095, 934, 1097, 1098, 24, 24, - 1099, -32, 1100, 1101, 24, 24, 1102, 1103, 1104, 1106, - 1113, 24, 409, 24, 1124, 1123, 1125, 1126, 1129,-32768, - 1127, 370, 1130,-32768, 827, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65,-32768, 5837, 5860, - 5883, 5906, 230,-32768, 277, 957, 1138, 1120,-32768,-32768, --32768, 3, 6412, 1145, 7, 20, 1155, 24, 1156, 24, - 1157, 1158,-32768, 1721, 408, 1682,-32768,-32768, 65, 24, - 24, 24,-32768, 253, 24, 24, 24, 24, 24, 24, - 24, 65, 65, 65, 985, -55, -30, 0,-32768,-32768, - 2824, 2845, 1161, 5929, -7, 1086, 65, 65,-32768, 991, - 8, 994, 2866, 2887, -105, 995, 997, 998, 1001, 999, - 1004, 1002, 1003, -103, 1005, 1014, 1016, 1006, 1007, 1008, - 1013, 1018, 1019, 1024,-32768,-32768,-32768,-32768,-32768, 1021, - 1022, 1035, 1036, 1037, 1044, 1038,-32768, 1039, 115, 1164, - 2908, 2929, 2950, 2971, 2992, 3013, 3034, 3055, 3076, 3097, - 3118, 3139,-32768,-32768,-32768,-32768,-32768, 1170, 65, 1174, - 1186, 5,-32768, 1017, 1587, 1187,-32768,-32768,-32768, -32, --32768, 1188,-32768, 1215,-32768,-32768, 65, 1531, 3160, 1216, - 1217, 1218, 65, 65, 1219, 1222, 1223, 1224, 1225, 1227, - 1228, 2317, 5952, 1581, 141, -32, 1229, -32, 1230, -32, - 11, 65, 65,-32768, 1231, 24, 24, 1159, 24, 227, - 5975, 65, 8, 1236, 65, 24, 1235, 1240, 1238, 1080, - 1242, 409, 1243, 1247, 65, 1245, 1249, 1257, 1259, 1264, - 409, 65, 65, 65, 24, 1262, 1266, 409, 65, 1267, - 1268, 1272, 65, 370,-32768,-32768, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 1282, 1302, --32768, 1239, 1096, 3, 1283, 1206, 87, 3181,-32768, 13, --32768,-32768, 6412,-32768, 65,-32768,-32768,-32768, 1465, 1491, --32768,-32768,-32768,-32768,-32768,-32768,-32768, 1111,-32768, 65, --32768, 1115, 254,-32768, 256,-32768, 273,-32768, 40, 3202, - 3223, -7, 231,-32768, 51, 1112, 1226, 65,-32768,-32768, - 3244, 8, 1122, 3265, 1119,-32768, 1128,-32768, 1131,-32768, - 1134,-32768, 1132, 5998,-32768, 1133,-32768,-32768, 1139, 1140, - 6021, 3286, 6044, 1137,-32768, 1142, 1143, 3307, 1141, 1144, --32768, 3328, 1146, 3349, 3370, 3391, 3412, 3433, 3454, 3475, - 3496, 3517, 3538, 3559, 3580,-32768,-32768, 3, 65,-32768, - 81,-32768, 1135, 65, 65,-32768, 3601,-32768,-32768, 141, - 2017,-32768, 65, 65, 65, 1299, 1160, -35,-32768, 65, - 65, 1241,-32768, 24,-32768, 24, 65, 2340, 24, 1179, - 1317, -7, 409, 1323, 65, 1330, 409, 1331, 1335, 1333, - 1336, 1337, 65, 1338, 24, 1339, 1340, 65, 1344, 1342, - 65, 1345, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 1343, 4915, 3,-32768, 1347, 2363, - 3622, 1348, 1171, 65,-32768, 2386, 2409, 2432,-32768, 24, - 1356,-32768, 2455, 2478, 1184,-32768, 1162, 1617,-32768, 1173, - 8,-32768, 1189, 1191, 1192, 3643,-32768, 1197,-32768, 1200, --32768,-32768,-32768, 6067,-32768, 1198,-32768,-32768, 6090, 1201, --32768, 6113, 1199, 3664, 3685, 3706, 3727, 3748, 3769, 3790, - 3811, 3832, 6136, 6159, 6182,-32768, 1202,-32768,-32768,-32768, - 65, 1203,-32768, 2501, 1373, 1375, 12, 1207,-32768, 1381, - 1382, 24, 24,-32768, 1383, 8, 409, 409, 409, 409, - 1384, 1385, 1386, 409, 1387, 1388, 1389, 1391, 65, 65, - 65, 65, 65, 65, 65, 65, 65,-32768,-32768,-32768, - 1318, 2113, 1399,-32768,-32768,-32768,-32768, 40, 24,-32768, --32768, 1232, 1237,-32768, 8, 1233, 1234, 1250, 1251,-32768, --32768,-32768, 1248,-32768,-32768,-32768, 1252, 3853, 3874, 3895, - 3916, 3937, 3958, 3979, 4000, 4021, 1253, 1254, 1255,-32768, - 65,-32768, 1258, -3, 1260, 24, 1325, 1265, 409, 409, - 1402, 1404, 409, 1415, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 2524, 1417, 1422, 24, - 1263, 1269, 8, 1261, 1274,-32768,-32768, 1270, 1271, 4042, - 4063, 4084, 4105, 4126, 4147, 4168, 4189, 4210, 163, 6412, - 234, 6412, 261, 6412,-32768, 1279,-32768, 1289, 1352, 65, - 8, 409, 24, 1441, 1442, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 1445, 65, 1466, 65, 1467, - 1468, 1470, 1297, 4231, 8, 1300, 1301,-32768,-32768, 4252, - 4273, 4294, 4315, 4336, 4357, 6205, 6228, 6251, 6412,-32768, - 6412,-32768, 6412,-32768,-32768,-32768, 65, 65, 1334, 409, - 24, 65, 65, 65, 65, 65, 65,-32768,-32768,-32768, - 4378, 2547, 1341, 1304, 1306, 4399, 4420, 4441, 4462, 4483, - 4504, 1298, 1307, 1308, 65, 1480,-32768, 24, 409, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 2570,-32768, - 1311, 1316, 4525, 4546, 4567, 4588, 4609, 4630, 270, 6412, - 278, 6412, 298, 6412, 1486, 24, 1487, 65, 65, 65, - 65, 65, 65, 65, 1492, 65, 1502, 65, 1504,-32768, - 1332,-32768, 4651, 4672, 4693, 6274, 6297, 6320, 6412,-32768, - 6412,-32768, 6412,-32768, 24, 65, 65, 65,-32768,-32768, --32768, 1357, 4714, 4735, 4756, 1329, 1358, 1359, 24, 65, - 65, 65, 65, 65, 65, 1413, 4777, 4798, 4819, 307, - 6412, 372, 6412, 406, 6412, 409, 65, 65, 65, 65, - 1558, 65, 1560, 65, 1561, 1362, 6343, 6366, 6389, 6412, --32768, 6412,-32768, 6412,-32768, 1588,-32768,-32768,-32768,-32768, - 1454, 1455, 1456, 65, 65, 65, 411, 6412, 412, 6412, - 415, 6412, 65, 1589, 65, 1631, 65, 1633, 6412,-32768, - 6412,-32768, 6412,-32768, 1565, 1593,-32768 +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 65,-32768, +-32768,-32768,-32768,-32768,-32768, 65, 65, 65,-32768, 1536, + 947, 51, 65, 976, 980, 665,-32768, 1002, 851, 9, + 1020, 65,-32768, 173, 97,-32768, 16, 16, 1022, 16, +-32768, 1024,-32768, 16, 16,-32768, 1456, 65, 1570,-32768, + 1006, 855, 1025, 1029, 1030, 356, 1033, 1035, 1048, 1049, + 1050, 1051, 1053, 127, 2614, 2635,-32768,-32768, 2168, 97, + 97, 97, 1028, 1055, 65, 65, 16, 65, 1056, 16, + 1651, 529, 1058, 922, 1064, 65, 65, 97, 1066, 1067, + 906, 1069, 1070, 16, 16, 1071, 97, 1072, 1073, 16, + 16, 1074, 1087, 1096, 1101, 1104, 16, 52, 16, 1107, + 1106, 1108, 1109, 1112,-32768, 1110, 352, 1113,-32768, 858, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65,-32768, 5669, 5692, 5715, 5738, 178,-32768, 415, + 940, 1116, 1076,-32768,-32768,-32768, 9, 65, 948, 1628, +-32768, 184,-32768, 6244, 1119, 41, 54, 1122, 16, 1124, + 16, 1126, 1127,-32768, 1666, 250, 1595,-32768,-32768, 65, + 16, 16, 16,-32768, 348, 16, 16, 16, 16, 16, + 16, 16, 65, 65, 65, 954, -55, -34, -14,-32768, +-32768, 2656, 2677, 1131, 5761, -40, 1059, 65, 65,-32768, + 958, 12, 960, 2698, 2719, -105, 961, 966, 973, 978, + 975, 981, 979, 995, 94, 996, 982, 1003, 998, 1001, + 1007, 1018, 1019, 1021, 1027,-32768,-32768,-32768,-32768,-32768, + 1026, 1040, 1041, 1043, 1045, 1031, 1046,-32768, 1047, 207, + 1193, 2740, 2761, 2782, 2803, 2824, 2845, 2866, 2887, 2908, + 2929, 2950, 2971,-32768,-32768,-32768,-32768,-32768, 1199, 65, + 1228, 1240, 7,-32768, 1239, 4747, 1162, 133, 2992, 9, +-32768,-32768,-32768,-32768, 97,-32768, 1242,-32768, 1244,-32768, +-32768, 65, 1499, 3013, 1246, 1247, 1248, 65, 65, 1249, + 1250, 1261, 1263, 1270, 1280, 1281, 2191, 5784, 1622, 420, + 97, 1282, 97, 1283, 97, 3, 65, 65,-32768, 1285, + 16, 16, 1207, 16, 229, 5807, 65, 12, 1290, 65, + 16, 1288, 1292, 1291, 1135, 1295, 52, 1296, 1293, 65, + 1308, 1321, 1319, 1322, 1324, 52, 65, 65, 65, 16, + 1334, 1327, 52, 65, 1338, 1339, 1337, 65, 352,-32768, +-32768, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 1340, 1118,-32768, 1341, 1343,-32768, 1166, + 1167, 65, 65,-32768, 67,-32768,-32768, 6244,-32768, 65, +-32768,-32768,-32768, 1217, 1451,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 1170,-32768, 65,-32768, 1171, 135,-32768, 187, +-32768, 197,-32768, 40, 3034, 3055, -40, 200,-32768, 235, + 1173, 1267, 65,-32768,-32768, 3076, 12, 1176, 3097, 1175, +-32768, 1177,-32768, 1178,-32768, 1180,-32768, 1179, 5830,-32768, + 1187,-32768,-32768, 1200, 1210, 5853, 3118, 5876, 1189,-32768, + 1211, 1216, 3139, 1213, 1218,-32768, 3160, 1219, 3181, 3202, + 3223, 3244, 3265, 3286, 3307, 3328, 3349, 3370, 3391, 3412, +-32768,-32768, 9,-32768, 1310, 1393, 2214, 3433,-32768, 3454, +-32768,-32768, 420, 1935,-32768, 65, 65, 65, 1394, 1227, + -12,-32768, 65, 65, 1325,-32768, 16,-32768, 16, 65, + 2237, 16, 1268, 1403, -40, 52, 1408, 65, 1406, 52, + 1407, 1411, 1410, 1416, 1418, 65, 1420, 16, 1421, 1422, + 65, 1414, 1428, 65, 1439, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 1444,-32768,-32768, +-32768, 65, 1446, 1271, 65,-32768, 2260, 2283, 2306,-32768, + 16, 1447,-32768, 2329, 2352, 1284,-32768, 1309, 1524,-32768, + 1306, 12,-32768, 1311, 1312, 1313, 3475,-32768, 1286,-32768, + 1287,-32768,-32768,-32768, 5899,-32768, 1314,-32768,-32768, 5922, + 1320,-32768, 5945, 1315, 3496, 3517, 3538, 3559, 3580, 3601, + 3622, 3643, 3664, 5968, 5991, 6014,-32768, 2001, 1317,-32768, + 2375, 1457, 1483, 15, 1318,-32768, 1492, 1493, 16, 16, +-32768, 1494, 12, 52, 52, 52, 52, 1495, 1498, 1525, + 52, 1526, 1527, 1528, 1500, 65, 65, 65, 65, 65, + 65, 65, 65, 65,-32768,-32768,-32768, 65,-32768, 1530, +-32768,-32768,-32768,-32768, 40, 16,-32768,-32768, 1357, 1356, +-32768, 12, 1359, 1362, 1367, 1369,-32768,-32768,-32768, 1389, +-32768,-32768,-32768, 1390, 3685, 3706, 3727, 3748, 3769, 3790, + 3811, 3832, 3853, 1391, 1392, 1395, 2398, 1397, -11, 1398, + 16, 1490, 1459, 52, 52, 1603, 1615, 52, 1617, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65,-32768, 1618, 1620, 16, 1448, 1455, 12, 1449, 1481, +-32768,-32768, 1452, 1461, 3874, 3895, 3916, 3937, 3958, 3979, + 4000, 4021, 4042, 246, 6244, 259, 6244, 273, 6244, 1480, +-32768, 1484, 1584, 65, 12, 52, 16, 1660, 1661, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 1663, + 65, 1664, 65, 1665, 1669, 1686, 1513, 4063, 12, 1515, + 1516,-32768,-32768, 4084, 4105, 4126, 4147, 4168, 4189, 6037, + 6060, 6083, 6244,-32768, 6244,-32768, 6244,-32768,-32768,-32768, + 65, 65, 1549, 52, 16, 65, 65, 65, 65, 65, + 65,-32768,-32768,-32768, 4210, 2421, 1550, 1522, 1523, 4231, + 4252, 4273, 4294, 4315, 4336, 1531, 1537, 1547, 65, 1697, +-32768, 16, 52, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 2444,-32768, 1529, 1497, 4357, 4378, 4399, 4420, + 4441, 4462, 280, 6244, 281, 6244, 298, 6244, 1698, 16, + 1700, 65, 65, 65, 65, 65, 65, 65, 1701, 65, + 1722, 65, 1723,-32768, 1551,-32768, 4483, 4504, 4525, 6106, + 6129, 6152, 6244,-32768, 6244,-32768, 6244,-32768, 16, 65, + 65, 65,-32768,-32768,-32768, 1552, 4546, 4567, 4588, 1555, + 1556, 1558, 16, 65, 65, 65, 65, 65, 65, 1561, + 4609, 4630, 4651, 304, 6244, 311, 6244, 315, 6244, 52, + 65, 65, 65, 65, 1735, 65, 1736, 65, 1737, 1571, + 6175, 6198, 6221, 6244,-32768, 6244,-32768, 6244,-32768, 1739, +-32768,-32768,-32768,-32768, 1567, 1573, 1583, 65, 65, 65, + 318, 6244, 322, 6244, 327, 6244, 65, 1758, 65, 1759, + 65, 1761, 6244,-32768, 6244,-32768, 6244,-32768, 1769, 1770, +-32768 }; static const short yypgoto[] = {-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 1121,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 1251,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768, -253, -2,-32768, - 1635, 1636, -313, 264, 1642,-32768,-32768,-32768,-32768, 484, - -1014,-32768,-32768, -75, -847, -23,-32768, 1066, 131,-32768, - -85,-32768, -887, 829, 784, -406, -892,-32768,-32768,-32768 +-32768,-32768,-32768,-32768,-32768,-32768,-32768, -253, -20,-32768, + 1764, 1765, -309, 234, 1767,-32768,-32768,-32768,-32768, 605, + -1027,-32768,-32768, -72, -869, -23,-32768, 1194, 276,-32768, + -85,-32768, -939, 932, 357, -408, -695, 983,-32768,-32768 }; -#define YYLAST 6585 +#define YYLAST 6417 static const short yytable[] = { 129, - 223, 461, 190, 1082, 402, 228, 804, 172, 903, 182, - 76, 1000, 808, 180, 961, 579, 938, 1177, 1006, 138, - 128, 141, 258, 970, 1016, 809, 88, 291, 328, 1017, - 977, 9, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 1022, 685, 1016, 312, 313, 312, - 313, 1017, 122, 123, 810, 468, 469, 88, 89, 857, - 663, 866, 8, 92, 93, 94, 95, 96, 97, 98, + 223, 815, 128, 1093, 403, 190, 463, 976, 953, 228, + 579, 172, 699, 182, 76, 584, 985, 1035, 88, 292, + 1184, 138, 180, 992, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 823, 1029, 1029, 141, + 329, 258, 1030, 1030, 690, 313, 314, 313, 314, 824, + 273, 274, 275, 276, 277, 470, 471, 88, 89, 872, + 278, 454, 1019, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 252, 253, 254, 173, 1016, - 255, 257, 259, 260, 1017, 1065, 177, 312, 313, 178, - 280, 281, 282, 283, 336, 285, 286, 79, 288, 289, - 290, 329, 295, 836, 421, 837, 312, 313, 422, 80, - 159, 160, 312, 313, 139, 686, 687, 310, 311, 81, - 140, 161, 142, 314, 1093, 1081, 571, 162, 838, 181, - 839, 312, 313, 150, 151, 327, 152, 330, 134, 332, - 333, 683, 312, 313, 135, 594, 846, 595, 315, 312, - 313, 77, 847, 165, 1128, 312, 313, 1239, 840, 183, - 841, 229, 805, 174, 904, 1094, 119, 120, 82, 1098, - 939, 1178, 121, 41, 42, 43, 44, 124, 46, 1082, - 513, 372, 91, 292, 514, 83, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 119, 120, 1024, - 84, 1025, 167, 121, 948, 168, 169, 10, 124, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 133, 403, 122, 123, 401, 1067, - 427, 1068, 225, 430, 226, 1004, 147, 567, 436, 312, - 313, 568, 441, 442, 443, 85, 445, 446, 447, 448, - 449, 450, 451, 798, 122, 123, 520, 86, 307, 308, - 309, 312, 313, 463, 464, 465, 316, 148, 470, 1186, - 1187, 1188, 1189, 823, 824, 476, 1193, 452, 274, 275, - 276, 481, 87, 88, 89, 90, 277, 91, 132, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 1285, 114, 1286, 115, 116, 117, 118, 11, 12, - 13, 14, 15, 16, 17, 18, 122, 123, 374, 694, - 312, 313, 225, 594, 226, 122, 123, 136, 137, 713, - 519, 1244, 1245, 570, 143, 1248, 462, 144, 574, 263, - 264, 265, 266, 267, 145, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 146, 312, 313, 572, 436, 277, - 115, 116, 117, 118, 797, 1023, 149, 949, 594, 1024, - 372, 722, 1287, 714, 1288, 596, 312, 313, 312, 313, - 601, 122, 123, 153, 1296, 115, 116, 117, 118, 610, - 611, 799, 1013, 320, 1014, 312, 313, 324, 614, 1289, - 171, 1290, 455, 456, 158, 618, 122, 123, 1384, 175, - 1385, 1015, 176, 166, 626, 627, 1386, 179, 1387, 115, - 116, 117, 118, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 1334, 119, 120, 170, 1388, 277, 1389, 121, - 122, 123, 184, 185, 124, 1440, 125, 1441, 126, 521, - 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, - 532, 1362, 272, 273, 274, 275, 276, 765, 766, 767, - 768, 769, 277, 262, 186, 664, 263, 264, 265, 266, - 267, 932, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 122, 123, 679, 187, 188, 277, 434, 189, 226, - 680, 681, 682, 221, 436, 154, 224, 688, 155, 156, - 1442, 157, 1443, 693, 265, 266, 267, 261, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 230, 372, 704, - 706, 231, 277, 122, 123, 232, 778, 122, 123, 592, - 233, 226, 609, 818, 1444, 226, 1445, 234, 1446, 1473, - 1475, 1474, 1476, 1477, 235, 1478, 731, 732, 236, 734, - 237, 238, 239, 738, 533, 240, 241, 743, 744, 242, - 243, 244, 245, 88, 89, 246, 247, 278, 248, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 249, 781, 782, 783, 784, 785, 786, 787, 788, - 789, 790, 791, 792, 405, 250, 251, 279, 284, 287, - 263, 264, 265, 266, 267, 853, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 296, 297, 298, 300, 301, - 277, 317, 800, 302, 318, 819, 303, 304, 305, 306, - 323, 331, 322, 334, 335, 337, 1073, 319, 832, 833, - 834, 338, 339, 340, 367, 341, 342, 343, 344, 373, - 695, 345, 346, 850, 851, 369, 347, 88, 435, 348, - 349, 350, 351, 92, 93, 94, 95, 96, 97, 98, + 109, 110, 111, 112, 113, 252, 253, 254, 825, 1029, + 255, 257, 173, 261, 1030, 1104, 177, 313, 314, 178, + 281, 282, 283, 284, 9, 286, 287, 337, 289, 290, + 291, 134, 296, 851, 924, 852, 423, 135, 313, 314, + 424, 259, 260, 861, 691, 692, 139, 311, 312, 862, + 313, 314, 140, 330, 853, 8, 854, 573, 313, 314, + 776, 777, 778, 779, 780, 328, 464, 331, 181, 333, + 334, 688, 150, 151, 855, 152, 856, 515, 1092, 1244, + 142, 516, 79, 313, 314, 77, 1105, 80, 119, 120, + 1109, 81, 954, 183, 121, 229, 580, 174, 700, 124, + 315, 1093, 122, 123, 1185, 293, 82, 599, 225, 600, + 226, 373, 85, 313, 314, 86, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 119, 120, 313, + 314, 122, 123, 121, 87, 145, 963, 404, 124, 668, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 10, 313, 314, 569, 159, + 160, 429, 570, 167, 432, 83, 168, 169, 881, 438, + 161, 313, 314, 443, 444, 445, 162, 447, 448, 449, + 450, 451, 452, 453, 1193, 1194, 1195, 1196, 316, 313, + 314, 1200, 313, 314, 465, 466, 467, 313, 314, 472, + 91, 84, 122, 123, 132, 733, 478, 133, 225, 522, + 226, 922, 483, 1026, 275, 276, 277, 1078, 165, 88, + 89, 90, 278, 91, 136, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 705, 114, 313, + 314, 599, 808, 521, 1249, 1250, 599, 147, 1253, 313, + 314, 724, 820, 137, 821, 1027, 11, 12, 13, 14, + 15, 16, 17, 18, 1036, 1028, 122, 123, 1037, 576, + 574, 264, 265, 266, 267, 268, 143, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 122, 123, 838, 839, + 438, 278, 436, 321, 226, 725, 1300, 325, 402, 964, + 122, 123, 373, 1037, 148, 1038, 597, 601, 226, 122, + 123, 809, 606, 149, 1289, 833, 1290, 226, 144, 146, + 153, 615, 616, 308, 309, 310, 810, 1291, 171, 1292, + 619, 317, 115, 116, 117, 118, 154, 623, 158, 155, + 156, 1293, 157, 1294, 1338, 175, 631, 632, 1388, 1390, + 1389, 1391, 166, 122, 123, 115, 116, 117, 118, 170, + 176, 572, 41, 42, 43, 44, 1392, 46, 1393, 119, + 120, 179, 1444, 1366, 1445, 121, 122, 123, 185, 1446, + 124, 1447, 125, 1448, 126, 1449, 1477, 184, 1478, 669, + 1479, 295, 1480, 375, 186, 1481, 300, 1482, 264, 265, + 266, 267, 268, 187, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 188, 189, 221, 230, 322, 278, 224, + 280, 231, 232, 326, 327, 684, 749, 233, 234, 235, + 947, 236, 685, 686, 687, 237, 438, 238, 239, 693, + 115, 116, 117, 118, 240, 241, 242, 243, 704, 262, + 244, 245, 246, 115, 116, 117, 118, 247, 248, 249, + 1450, 122, 123, 373, 715, 717, 250, 251, 279, 285, + 288, 789, 298, 263, 122, 123, 323, 297, 457, 458, + 299, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 301, 742, 743, 302, 745, 278, 318, 303, 304, 305, + 88, 89, 754, 755, 306, 307, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 319, 320, + 324, 332, 335, 407, 336, 338, 339, 792, 793, 794, + 795, 796, 797, 798, 799, 800, 801, 802, 803, 368, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 811, + 696, 349, 350, 351, 816, 352, 819, 353, 354, 868, + 355, 264, 265, 266, 267, 268, 356, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 834, 357, 370, 372, + 358, 278, 371, 750, 359, 360, 361, 362, 363, 847, + 848, 849, 364, 1084, 365, 366, 367, 374, 278, 398, + 477, 405, 400, 406, 865, 866, 441, 446, 474, 614, + 264, 265, 266, 267, 268, 475, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 480, 484, 485, 486, 487, + 278, 488, 489, 490, 491, 492, 571, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 534, 900, + 119, 120, 493, 494, 495, 496, 121, 497, 498, 499, + 500, 124, 501, 502, 256, 503, 915, 504, 505, 506, + 264, 265, 266, 267, 268, 967, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 507, 508, 509, 928, 373, + 278, 510, 511, 998, 934, 935, 512, 264, 265, 266, + 267, 268, 513, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 514, 955, 956, 517, 519, 278, 578, 518, + 575, 617, 577, 966, 267, 268, 969, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 979, 583, 618, 585, + 706, 278, 586, 986, 987, 988, 587, 588, 590, 591, + 993, 593, 535, 594, 997, 595, 602, 625, 999, 1000, + 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, + 626, 627, 628, 630, 1043, 737, 738, 739, 1017, 1018, + 634, 635, 636, 637, 638, 639, 1020, 665, 640, 641, + 642, 643, 644, 756, 645, 646, 647, 648, 649, 650, + 651, 1024, 765, 523, 524, 525, 526, 527, 528, 529, + 530, 531, 532, 533, 534, 652, 653, 654, 655, 1041, + 656, 657, 658, 707, 708, 659, 710, 88, 89, 683, + 712, 713, 689, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 726, 727, 728, 263, 264, - 265, 266, 267, 352, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 745, 479, 353, 354, 355, 277, 370, - 739, 356, 754, 119, 120, 900, 885, 952, 371, 121, - 357, 908, 358, 359, 124, 397, 360, 256, 691, 361, - 362, 363, 364, 913, 372, 365, 366, 277, 983, 919, - 920, 263, 264, 265, 266, 267, 399, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 404, 439, 940, 941, - 444, 277, 472, 473, 475, 478, 482, 483, 951, 266, - 267, 954, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 964, 484, 485, 486, 487, 277, 488, 971, 972, - 973, 489, 490, 491, 492, 978, 493, 494, 495, 982, - 496, 497, 498, 984, 985, 986, 987, 988, 989, 990, - 991, 992, 993, 994, 995, 499, 1030, 119, 120, 500, - 501, 502, 503, 121, 504, 505, 506, 507, 124, 508, - 509, 1007, 521, 522, 523, 524, 525, 526, 527, 528, - 529, 530, 531, 532, 510, 511, 1011, 516, 512, 263, - 264, 265, 266, 267, 515, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 1028, 517, 573, 576, 294, 277, - 575, 578, 581, 299, 580, 263, 264, 265, 266, 267, - 910, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 582, 583, 585, 586, 321, 277, 588, 612, 589, 590, - 325, 326, 597, 708, 623, 613, 933, 620, 935, 621, - 937, 622, 625, 629, 630, 1066, 631, 632, 660, 633, - 1070, 1071, 634, 635, 636, 637, 638, 639, 640, 1076, - 1077, 1078, 661, 641, 678, 684, 1083, 1084, 729, 642, - 643, 689, 644, 1088, 645, 690, 666, 780, 646, 647, - 648, 1096, 649, 650, 651, 1146, 692, 698, 700, 1104, - 652, 710, 653, 654, 1109, 709, 711, 1112, 667, 1114, - 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, - 1125, 655, 656, 657, 658, 659, 662, 668, 712, 715, - 1134, 716, 669, 717, 718, 670, 719, 671, 720, 721, - 672, 673, 674, 675, 676, 88, 89, 677, 735, 730, - 1185, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 740, 742, 741, 746, 747, 748, 749, - 750, 753, 755, 756, 759, 760, 761, 1172, 762, 1218, - 263, 264, 265, 266, 267, 763, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 803, 772, 773, 775, 774, - 277, 776, 777, 779, 801, 1198, 1199, 1200, 1201, 1202, - 1203, 1204, 1205, 1206, 802, 263, 264, 265, 266, 267, - 807, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 811, 813, 815, 816, 835, 277, 844, 1271, 849, 886, - 852, 859, 854, 858, 899, 861, 860, 862, 863, 901, - 864, 865, 569, 867, 870, 871, 872, 1237, 868, 902, - 869, 873, 909, 911, 906, 1295, 874, 875, 876, 877, - 878, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, - 1260, 1262, 1264, 879, 880, 881, 883, 884, 882, 1319, - 912, 916, 917, 918, 921, 119, 120, 922, 923, 924, - 925, 121, 926, 927, 934, 936, 124, 942, 953, 591, - 956, 946, 957, 958, 959, 998, 1294, 960, 962, 963, - 965, 966, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, - 1308, 1309, 967, 1311, 968, 1313, 969, 975, 976, 979, - 980, 999, 263, 264, 265, 266, 267, 981, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 996, 1002, 1003, - 1010, 1026, 277, 1331, 1332, 1012, 1031, 1033, 1336, 1337, - 1338, 1339, 1340, 1341, 1079, 1027, 1034, 997, 1036, 1035, - 1037, 1039, 1069, 1040, 1041, 1045, 1046, 1047, 1050, 1049, - 1091, 1359, 1092, 1085, 1052, 1095, 1363, 1364, 1365, 1366, - 1367, 1368, 1370, 1372, 1374, 1097, 1099, 1100, 1101, 1080, - 1143, 1102, 1103, 1105, 1107, 1108, 1110, 1111, 1126, 1113, - 1129, 1133, 1132, 1145, 1393, 1394, 1395, 1396, 1397, 1398, - 1399, 1139, 1401, 1142, 1403, 696, 697, 1147, 699, 1148, - 1149, 1151, 701, 702, 1152, 1156, 1154, 1158, 1175, 1171, - 1176, 1173, 1413, 1414, 1415, 1179, 1180, 1181, 1184, 1190, - 1191, 1192, 1194, 1195, 1196, 1197, 1427, 1428, 1429, 1431, - 1433, 1435, 1210, 1213, 1242, 733, 1243, 1246, 736, 1247, - 1216, 1219, 1220, 1447, 1448, 1449, 1450, 1217, 1452, 1249, - 1454, 1266, 751, 752, 1221, 1222, 1223, 1267, 757, 758, - 1224, 1293, 1234, 1235, 1236, 764, 1238, 771, 1240, 1272, - 1468, 1470, 1472, 1269, 1274, 1275, 1298, 1299, 1270, 1479, - 1310, 1481, 1273, 1483, 263, 264, 265, 266, 267, 1291, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 1292, - 1008, 1312, 1314, 1315, 277, 1316, 1317, 1356, 1320, 1321, - 1333, 812, 1348, 814, 1349, 1360, 1357, 1358, 1347, 1376, - 1377, 1390, 1392, 820, 821, 822, 1009, 1400, 825, 826, - 827, 828, 829, 830, 831, 88, 89, 1402, 1423, 1404, - 1405, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 88, 89, 1419, 1456, 1424, 1425, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 88, 705, 1451, 1486, 1453, 1455, 92, 93, 94, + 109, 110, 111, 112, 113, 660, 661, 662, 663, 666, + 664, 694, 667, 744, 671, 695, 747, 266, 267, 268, + 672, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 762, 763, 1087, 1088, 1089, 278, 768, 769, 697, 1094, + 1095, 719, 673, 775, 674, 782, 1099, 675, 676, 677, + 678, 679, 680, 681, 1107, 703, 698, 682, 709, 1153, + 711, 721, 1115, 740, 720, 722, 723, 1120, 791, 726, + 1123, 727, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, + 1133, 1134, 1135, 1136, 728, 729, 730, 731, 1138, 732, + 741, 1141, 746, 752, 751, 827, 753, 829, 757, 758, + 759, 760, 761, 764, 766, 767, 770, 835, 836, 837, + 1192, 814, 840, 841, 842, 843, 844, 845, 846, 771, + 26, 27, 28, 29, 30, 31, 32, 33, 772, 34, + 925, 36, 37, 773, 39, 40, 774, 119, 120, 783, + 784, 786, 785, 121, 787, 788, 790, 812, 124, 1223, + 51, 596, 813, 1012, 822, 817, 948, 826, 950, 828, + 952, 830, 831, 850, 52, 53, 859, 867, 869, 873, + 874, 864, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, + 1213, 875, 876, 877, 1217, 878, 883, 879, 264, 265, + 266, 267, 268, 481, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 880, 882, 1275, 885, 884, 278, 886, + 264, 265, 266, 267, 268, 887, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 62, 888, 889, 901, 890, + 278, 891, 1299, 914, 892, 897, 1255, 1256, 1257, 1258, + 1259, 1260, 1261, 1262, 1263, 1265, 1267, 1269, 893, 894, + 962, 895, 1021, 896, 898, 899, 1323, 970, 264, 265, + 266, 267, 268, 916, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 917, 919, 921, 989, 926, 278, 927, + 1298, 931, 932, 933, 936, 937, 1304, 1305, 1306, 1307, + 1308, 1309, 1310, 1311, 1312, 1313, 938, 1315, 939, 1317, + 264, 265, 266, 267, 268, 940, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 941, 942, 949, 951, 961, + 278, 957, 968, 971, 972, 978, 973, 1335, 1336, 974, + 975, 977, 1340, 1341, 1342, 1343, 1344, 1345, 264, 265, + 266, 267, 268, 980, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 981, 982, 1363, 984, 983, 278, 991, + 1367, 1368, 1369, 1370, 1371, 1372, 1374, 1376, 1378, 990, + 994, 995, 996, 1015, 1016, 1011, 1040, 1013, 1014, 1023, + 1044, 1025, 1039, 1046, 1049, 1047, 1048, 1050, 1397, 1398, + 1399, 1400, 1401, 1402, 1403, 1052, 1405, 1058, 1407, 264, + 265, 266, 267, 268, 1053, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 1054, 1059, 1417, 1418, 1419, 278, + 1060, 1062, 1063, 1097, 1079, 1098, 1080, 1065, 1101, 1090, + 1431, 1432, 1433, 1435, 1437, 1439, 1091, 1096, 1103, 1102, + 1106, 1108, 1110, 1111, 1117, 1112, 1121, 1451, 1452, 1453, + 1454, 1113, 1456, 1114, 1458, 1116, 1118, 1119, 264, 265, + 266, 267, 268, 1122, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 1124, 1472, 1474, 1476, 1145, 278, 1137, + 1139, 1140, 1146, 1483, 455, 1485, 1022, 1487, 88, 89, + 1158, 1159, 1182, 1149, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 1152, 1150, 1183, 1154, + 1155, 1156, 1161, 1165, 1163, 1180, 1186, 1187, 1188, 1191, + 1197, 88, 89, 1198, 1204, 1189, 1190, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 88, - 907, 1436, 1487, 1460, 1480, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 263, 264, 265, - 266, 267, 1144, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 947, 1464, 1465, 1466, 1482, 277, 1484, 955, - 665, 67, 68, 263, 264, 265, 266, 267, 69, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 974, 707, - 0, 1214, 0, 277, 0, 119, 120, 0, 577, 0, - 0, 121, 0, 0, 0, 945, 124, 0, 0, 703, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 593, - 0, 0, 0, 119, 120, 0, 0, 0, 0, 121, - 0, 0, 0, 0, 124, 0, 0, 914, 0, 0, - 0, 0, 0, 737, 0, 0, 0, 0, 0, 0, - 0, 119, 120, 0, 0, 0, 0, 121, 817, 0, - 0, 0, 124, 263, 264, 265, 266, 267, 0, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 0, 119, - 120, 0, 0, 277, 0, 121, 0, 0, 0, 930, - 124, 931, 0, 0, 0, 0, 0, 0, 0, 263, - 264, 265, 266, 267, 0, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 0, 0, 0, 0, 0, 277, - 263, 264, 265, 266, 267, 0, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 0, 0, 1086, 0, 1087, - 277, 0, 1090, 263, 264, 265, 266, 267, 424, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 1106, 0, - 0, 0, 0, 277, 263, 264, 265, 266, 267, 0, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 0, - 0, 0, 0, 0, 277, 0, 0, 0, 263, 264, - 265, 266, 267, 1138, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 263, 264, 265, 266, 267, 277, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 0, 0, - 0, 0, 0, 277, 0, 0, 0, 26, 27, 28, - 29, 30, 31, 32, 33, 0, 34, 0, 36, 37, - 0, 39, 40, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1182, 1183, 51, 0, 0, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 1151, + 1199, 1201, 1202, 1203, 1218, 1221, 1222, 1224, 88, 437, + 1225, 1226, 1220, 1227, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 582, 1228, 1229, 1247, + 1239, 1240, 88, 716, 1241, 1243, 1245, 1246, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 1248, 1272, 598, 264, 265, 266, 267, 268, 1251, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 119, 120, + 1252, 1254, 1270, 278, 121, 1271, 1278, 1276, 1273, 124, + 88, 818, 714, 1301, 1274, 1279, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 748, 1277, + 1295, 119, 120, 1297, 1296, 1302, 1303, 121, 1314, 1316, + 1318, 1381, 124, 832, 1319, 929, 264, 265, 266, 267, + 268, 1339, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 1320, 1321, 1324, 1325, 1337, 278, 1351, 119, 120, + 1352, 1353, 1364, 1394, 121, 1396, 1404, 1380, 1365, 124, + 1360, 264, 265, 266, 267, 268, 1361, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 1362, 1406, 1408, 1409, + 1423, 278, 119, 120, 1427, 1428, 1395, 1429, 121, 1440, + 1455, 1457, 1459, 124, 1464, 1460, 1468, 264, 265, 266, + 267, 268, 1469, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 1470, 1484, 1486, 1416, 1488, 278, 1490, 1491, + 67, 68, 670, 69, 264, 265, 266, 267, 268, 1430, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 1219, + 119, 120, 718, 960, 278, 918, 121, 0, 0, 0, + 945, 124, 946, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 264, 265, + 266, 267, 268, 278, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 0, 0, 0, 0, 0, 278, 26, + 27, 28, 29, 30, 31, 32, 33, 0, 34, 0, + 36, 37, 0, 39, 40, 0, 26, 27, 28, 29, + 30, 31, 32, 33, 0, 34, 0, 36, 37, 51, + 39, 40, 0, 0, -8, 1, 0, -8, -51, 0, + 0, 0, 0, 52, 53, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 52, 53, 26, 27, 28, 29, 30, 31, 32, - 33, 0, 34, 0, 36, 37, 0, 39, 40, 0, - 0, 0, 1215, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 52, 53, 26, - 27, 28, 29, 30, 31, 32, 33, 0, 34, 1241, - 36, 37, 62, 39, 40, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, - 0, 0, 0, 1268, -8, 1, 0, -8, -51, 0, - 0, 0, 0, 52, 53, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 466, 0, 0, 0, 62, 0, - 0, 0, 0, 0, 0, -51, 1297, -51, -51, -51, + 52, 53, 0, 0, 0, -51, 0, -51, -51, -51, -51, -51, -51, -51, -51, -51, 0, -51, -51, -51, -51, -51, -51, -51, 0, 0, 0, -51, -51, -51, -51, -51, -51, 0, -51, -51, -51, -51, -51, 0, - 471, 0, 0, 0, 62, 0, 0, 0, 0, 0, - 0, 0, -51, -51, 1335, 0, 0, 0, 0, 0, - -51, 0, -51, -51, -51, -51, -51, -51, -51, 0, + 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, + 0, 0, -51, -51, 0, 0, 0, 0, 0, 0, + -51, 62, -51, -51, -51, -51, -51, -51, -51, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 468, 0, -8, -8, + -8, -8, -8, -8, -8, -8, 23, 0, 264, 265, + 266, 267, 268, 473, 269, 270, 271, 272, 273, 274, + 275, 276, 277, -51, 2, 3, 0, 4, 278, 0, + 0, 0, 0, 24, 456, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 0, 34, 35, 36, 37, 38, + 39, 40, 0, 0, 0, 41, 42, 43, 44, 45, + 46, 191, 47, 48, 49, 50, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1361, 0, 0, 0, 0, 0, 0, -8, -8, - -8, -8, -8, -8, -8, -8, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1391, - 0, 0, 0, -51, 2, 3, 0, 4, 0, 263, - 264, 265, 266, 267, 23, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 0, 0, 0, 0, 1412, 277, - 0, 0, 0, 0, 0, 1074, 0, 1075, 0, 0, - 0, 24, 1426, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 0, 34, 35, 36, 37, 38, 39, 40, - 0, 0, 0, 41, 42, 43, 44, 45, 46, 191, - 47, 48, 49, 50, 51, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 52, 53, - 0, 0, 0, 0, 0, 0, 54, 0, 55, 56, - 57, 58, 59, 60, 61, 263, 264, 265, 266, 267, - 0, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 0, 0, 0, 0, 0, 277, 0, 0, 192, 193, - 194, 1211, 0, 1212, 0, 0, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 0, 0, 0, 62, - 0, 0, 0, 0, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 0, 215, 216, 217, 218, 219, - 220, 263, 264, 265, 266, 267, 0, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 0, 0, 0, 0, - 0, 277, 0, 0, 263, 264, 265, 266, 267, 429, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 0, - 0, 0, 0, 0, 277, 0, 0, 263, 264, 265, - 266, 267, 431, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 0, 0, 0, 0, 0, 277, 0, 0, - 263, 264, 265, 266, 267, 598, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 0, 0, 0, 0, 0, - 277, 0, 0, 263, 264, 265, 266, 267, 602, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 0, 0, - 0, 0, 0, 277, 0, 0, 263, 264, 265, 266, - 267, 603, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 0, 0, 0, 0, 0, 277, 0, 0, 263, - 264, 265, 266, 267, 725, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 0, 0, 0, 0, 0, 277, - 0, 0, 263, 264, 265, 266, 267, 928, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 0, 0, 0, - 0, 0, 277, 0, 0, 263, 264, 265, 266, 267, - 1089, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 0, 0, 0, 0, 0, 277, 0, 0, 263, 264, - 265, 266, 267, 1130, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 0, 0, 0, 0, 0, 277, 0, - 0, 263, 264, 265, 266, 267, 1135, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 0, 0, 0, 0, - 0, 277, 0, 0, 263, 264, 265, 266, 267, 1136, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 0, - 0, 0, 0, 0, 277, 0, 0, 263, 264, 265, - 266, 267, 1137, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 0, 0, 0, 0, 0, 277, 0, 0, - 263, 264, 265, 266, 267, 1140, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 0, 0, 0, 0, 0, - 277, 0, 0, 263, 264, 265, 266, 267, 1141, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 0, 0, - 0, 0, 0, 277, 0, 0, 263, 264, 265, 266, - 267, 1174, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 0, 0, 0, 0, 0, 277, 0, 0, 263, - 264, 265, 266, 267, 1265, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 0, 0, 0, 0, 0, 277, - 0, 0, 263, 264, 265, 266, 267, 1346, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 0, 0, 0, - 0, 0, 277, 0, 0, 263, 264, 265, 266, 267, - 1375, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 0, 0, 0, 0, 0, 277, 263, 264, 265, 266, - 267, 453, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 0, 0, 0, 0, 0, 277, 263, 264, 265, - 266, 267, 454, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 0, 0, 0, 0, 0, 277, 263, 264, - 265, 266, 267, 557, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 0, 0, 0, 0, 0, 277, 263, - 264, 265, 266, 267, 564, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 0, 0, 0, 0, 0, 277, - 263, 264, 265, 266, 267, 565, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 0, 0, 0, 0, 0, - 277, 263, 264, 265, 266, 267, 566, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 0, 0, 0, 0, - 0, 277, 263, 264, 265, 266, 267, 615, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 0, 0, 0, - 0, 0, 277, 263, 264, 265, 266, 267, 616, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 0, 0, - 0, 0, 0, 277, 263, 264, 265, 266, 267, 617, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 0, - 0, 0, 0, 0, 277, 263, 264, 265, 266, 267, - 723, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 0, 0, 0, 0, 0, 277, 263, 264, 265, 266, - 267, 724, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 0, 0, 0, 0, 0, 277, 263, 264, 265, - 266, 267, 842, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 0, 0, 0, 0, 0, 277, 263, 264, - 265, 266, 267, 843, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 0, 0, 0, 0, 0, 277, 263, - 264, 265, 266, 267, 855, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 0, 0, 0, 0, 0, 277, - 263, 264, 265, 266, 267, 856, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 0, 0, 0, 0, 0, - 277, 263, 264, 265, 266, 267, 887, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 0, 0, 0, 0, - 0, 277, 263, 264, 265, 266, 267, 888, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 0, 0, 0, - 0, 0, 277, 263, 264, 265, 266, 267, 889, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 0, 0, - 0, 0, 0, 277, 263, 264, 265, 266, 267, 890, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 0, - 0, 0, 0, 0, 277, 263, 264, 265, 266, 267, - 891, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 0, 0, 0, 0, 0, 277, 263, 264, 265, 266, - 267, 892, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 0, 0, 0, 0, 0, 277, 263, 264, 265, - 266, 267, 893, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 0, 0, 0, 0, 0, 277, 263, 264, - 265, 266, 267, 894, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 0, 0, 0, 0, 0, 277, 263, - 264, 265, 266, 267, 895, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 0, 0, 0, 0, 0, 277, - 263, 264, 265, 266, 267, 896, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 0, 0, 0, 0, 0, - 277, 263, 264, 265, 266, 267, 897, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 0, 0, 0, 0, - 0, 277, 263, 264, 265, 266, 267, 898, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 0, 0, 0, - 0, 0, 277, 263, 264, 265, 266, 267, 915, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 0, 0, - 0, 0, 0, 277, 263, 264, 265, 266, 267, 1005, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 0, - 0, 0, 0, 0, 277, 263, 264, 265, 266, 267, - 1020, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 0, 0, 0, 0, 0, 277, 263, 264, 265, 266, - 267, 1021, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 0, 0, 0, 0, 0, 277, 263, 264, 265, - 266, 267, 1029, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 0, 0, 0, 0, 0, 277, 263, 264, - 265, 266, 267, 1032, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 0, 0, 0, 0, 0, 277, 263, - 264, 265, 266, 267, 1043, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 0, 0, 0, 0, 0, 277, - 263, 264, 265, 266, 267, 1048, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 0, 0, 0, 0, 0, - 277, 263, 264, 265, 266, 267, 1051, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 0, 0, 0, 0, - 0, 277, 263, 264, 265, 266, 267, 1053, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 0, 0, 0, - 0, 0, 277, 263, 264, 265, 266, 267, 1054, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 0, 0, - 0, 0, 0, 277, 263, 264, 265, 266, 267, 1055, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 0, - 0, 0, 0, 0, 277, 263, 264, 265, 266, 267, - 1056, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 0, 0, 0, 0, 0, 277, 263, 264, 265, 266, - 267, 1057, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 0, 0, 0, 0, 0, 277, 263, 264, 265, - 266, 267, 1058, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 0, 0, 0, 0, 0, 277, 263, 264, - 265, 266, 267, 1059, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 0, 0, 0, 0, 0, 277, 263, - 264, 265, 266, 267, 1060, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 0, 0, 0, 0, 0, 277, - 263, 264, 265, 266, 267, 1061, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 0, 0, 0, 0, 0, - 277, 263, 264, 265, 266, 267, 1062, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 0, 0, 0, 0, - 0, 277, 263, 264, 265, 266, 267, 1063, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 0, 0, 0, - 0, 0, 277, 263, 264, 265, 266, 267, 1064, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 0, 0, - 0, 0, 0, 277, 263, 264, 265, 266, 267, 1072, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 0, - 0, 0, 0, 0, 277, 263, 264, 265, 266, 267, - 1131, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 0, 0, 0, 0, 0, 277, 263, 264, 265, 266, - 267, 1150, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 0, 0, 0, 0, 0, 277, 263, 264, 265, - 266, 267, 1159, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 0, 0, 0, 0, 0, 277, 263, 264, - 265, 266, 267, 1160, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 0, 0, 0, 0, 0, 277, 263, - 264, 265, 266, 267, 1161, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 0, 0, 0, 0, 0, 277, - 263, 264, 265, 266, 267, 1162, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 0, 0, 0, 0, 0, - 277, 263, 264, 265, 266, 267, 1163, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 0, 0, 0, 0, - 0, 277, 263, 264, 265, 266, 267, 1164, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 0, 0, 0, - 0, 0, 277, 263, 264, 265, 266, 267, 1165, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 0, 0, - 0, 0, 0, 277, 263, 264, 265, 266, 267, 1166, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 0, - 0, 0, 0, 0, 277, 263, 264, 265, 266, 267, - 1167, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 0, 0, 0, 0, 0, 277, 263, 264, 265, 266, - 267, 1225, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 0, 0, 0, 0, 0, 277, 263, 264, 265, - 266, 267, 1226, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 0, 0, 0, 0, 0, 277, 263, 264, - 265, 266, 267, 1227, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 0, 0, 0, 0, 0, 277, 263, - 264, 265, 266, 267, 1228, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 0, 0, 0, 0, 0, 277, - 263, 264, 265, 266, 267, 1229, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 0, 0, 0, 0, 0, - 277, 263, 264, 265, 266, 267, 1230, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 0, 0, 0, 0, - 0, 277, 263, 264, 265, 266, 267, 1231, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 0, 0, 0, - 0, 0, 277, 263, 264, 265, 266, 267, 1232, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 0, 0, - 0, 0, 0, 277, 263, 264, 265, 266, 267, 1233, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 0, - 0, 0, 0, 0, 277, 263, 264, 265, 266, 267, - 1276, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 0, 0, 0, 0, 0, 277, 263, 264, 265, 266, - 267, 1277, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 0, 0, 0, 0, 0, 277, 263, 264, 265, - 266, 267, 1278, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 0, 0, 0, 0, 0, 277, 263, 264, - 265, 266, 267, 1279, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 0, 0, 0, 0, 0, 277, 263, - 264, 265, 266, 267, 1280, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 0, 0, 0, 0, 0, 277, - 263, 264, 265, 266, 267, 1281, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 0, 0, 0, 0, 0, - 277, 263, 264, 265, 266, 267, 1282, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 0, 0, 0, 0, - 0, 277, 263, 264, 265, 266, 267, 1283, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 0, 0, 0, - 0, 0, 277, 263, 264, 265, 266, 267, 1284, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 0, 0, - 0, 0, 0, 277, 263, 264, 265, 266, 267, 1318, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 0, - 0, 0, 0, 0, 277, 263, 264, 265, 266, 267, - 1322, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 0, 0, 0, 0, 0, 277, 263, 264, 265, 266, - 267, 1323, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 0, 0, 0, 0, 0, 277, 263, 264, 265, - 266, 267, 1324, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 0, 0, 0, 0, 0, 277, 263, 264, - 265, 266, 267, 1325, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 0, 0, 0, 0, 0, 277, 263, - 264, 265, 266, 267, 1326, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 0, 0, 0, 0, 0, 277, - 263, 264, 265, 266, 267, 1327, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 0, 0, 0, 0, 0, - 277, 263, 264, 265, 266, 267, 1345, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 0, 0, 0, 0, - 0, 277, 263, 264, 265, 266, 267, 1350, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 0, 0, 0, - 0, 0, 277, 263, 264, 265, 266, 267, 1351, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 0, 0, - 0, 0, 0, 277, 263, 264, 265, 266, 267, 1352, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 0, - 0, 0, 0, 0, 277, 263, 264, 265, 266, 267, - 1353, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 0, 0, 0, 0, 0, 277, 263, 264, 265, 266, - 267, 1354, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 0, 0, 0, 0, 0, 277, 263, 264, 265, - 266, 267, 1355, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 0, 0, 0, 0, 0, 277, 263, 264, - 265, 266, 267, 1378, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 0, 0, 0, 0, 0, 277, 263, - 264, 265, 266, 267, 1379, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 0, 0, 0, 0, 0, 277, - 263, 264, 265, 266, 267, 1380, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 0, 0, 0, 0, 0, - 277, 263, 264, 265, 266, 267, 1381, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 0, 0, 0, 0, - 0, 277, 263, 264, 265, 266, 267, 1382, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 0, 0, 0, - 0, 0, 277, 263, 264, 265, 266, 267, 1383, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 0, 0, - 0, 0, 0, 277, 263, 264, 265, 266, 267, 1406, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 0, - 0, 0, 0, 0, 277, 263, 264, 265, 266, 267, - 1407, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 0, 0, 0, 0, 0, 277, 263, 264, 265, 266, - 267, 1408, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 0, 0, 0, 0, 0, 277, 263, 264, 265, - 266, 267, 1420, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 0, 0, 0, 0, 0, 277, 263, 264, - 265, 266, 267, 1421, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 0, 0, 0, 0, 0, 277, 263, - 264, 265, 266, 267, 1422, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 0, 0, 0, 0, 0, 277, - 263, 264, 265, 266, 267, 1437, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 0, 0, 0, 0, 0, - 277, 263, 264, 265, 266, 267, 1438, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 0, 0, 0, 0, - 0, 277, 263, 264, 265, 266, 267, 1439, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 0, 0, 0, - 0, 0, 277, 0, 0, 0, 400, 263, 264, 265, - 266, 267, 0, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 0, 0, 0, 0, 0, 277, 0, 0, - 0, 518, 263, 264, 265, 266, 267, 0, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 0, 0, 0, - 0, 0, 277, 0, 0, 0, 619, 263, 264, 265, - 266, 267, 0, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 0, 0, 0, 0, 0, 277, 0, 0, - 0, 1127, 263, 264, 265, 266, 267, 0, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 0, 0, 0, - 0, 0, 277, 0, 398, 263, 264, 265, 266, 267, - 0, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 0, 0, 0, 0, 0, 277, 0, 423, 263, 264, - 265, 266, 267, 0, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 0, 0, 0, 0, 0, 277, 0, - 425, 263, 264, 265, 266, 267, 0, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 0, 0, 0, 0, - 0, 277, 0, 426, 263, 264, 265, 266, 267, 0, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 0, - 0, 0, 0, 0, 277, 0, 428, 263, 264, 265, - 266, 267, 0, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 0, 0, 0, 0, 0, 277, 0, 432, - 263, 264, 265, 266, 267, 0, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 0, 0, 0, 0, 0, - 277, 0, 433, 263, 264, 265, 266, 267, 0, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 0, 0, - 0, 0, 0, 277, 0, 440, 263, 264, 265, 266, - 267, 0, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 0, 0, 0, 0, 0, 277, 0, 474, 263, - 264, 265, 266, 267, 0, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 0, 0, 0, 0, 0, 277, - 0, 477, 263, 264, 265, 266, 267, 0, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 0, 0, 0, - 0, 0, 277, 0, 480, 263, 264, 265, 266, 267, - 0, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 0, 0, 0, 0, 0, 277, 0, 546, 263, 264, - 265, 266, 267, 0, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 0, 0, 0, 0, 0, 277, 0, - 547, 263, 264, 265, 266, 267, 0, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 0, 0, 0, 0, - 0, 277, 0, 548, 263, 264, 265, 266, 267, 0, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 0, - 0, 0, 0, 0, 277, 0, 549, 263, 264, 265, - 266, 267, 0, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 0, 0, 0, 0, 0, 277, 0, 550, - 263, 264, 265, 266, 267, 0, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 0, 0, 0, 0, 0, - 277, 0, 551, 263, 264, 265, 266, 267, 0, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 0, 0, - 0, 0, 0, 277, 0, 552, 263, 264, 265, 266, - 267, 0, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 0, 0, 0, 0, 0, 277, 0, 553, 263, - 264, 265, 266, 267, 0, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 0, 0, 0, 0, 0, 277, - 0, 554, 263, 264, 265, 266, 267, 0, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 0, 0, 0, - 0, 0, 277, 0, 555, 263, 264, 265, 266, 267, - 0, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 0, 0, 0, 0, 0, 277, 0, 556, 263, 264, - 265, 266, 267, 0, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 0, 0, 0, 0, 0, 277, 0, - 558, 263, 264, 265, 266, 267, 0, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 0, 0, 0, 0, - 0, 277, 0, 559, 263, 264, 265, 266, 267, 0, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 0, - 0, 0, 0, 0, 277, 0, 560, 263, 264, 265, - 266, 267, 0, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 0, 0, 0, 0, 0, 277, 0, 561, - 263, 264, 265, 266, 267, 0, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 0, 0, 0, 0, 0, - 277, 0, 562, 263, 264, 265, 266, 267, 0, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 0, 0, - 0, 0, 0, 277, 0, 563, 263, 264, 265, 266, - 267, 0, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 0, 0, 0, 0, 0, 277, 0, 584, 263, - 264, 265, 266, 267, 0, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 0, 0, 0, 0, 0, 277, - 0, 587, 263, 264, 265, 266, 267, 0, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 0, 0, 0, - 0, 0, 277, 0, 599, 263, 264, 265, 266, 267, - 0, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 0, 0, 0, 0, 0, 277, 0, 600, 263, 264, - 265, 266, 267, 0, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 0, 0, 0, 0, 0, 277, 0, - 604, 263, 264, 265, 266, 267, 0, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 0, 0, 0, 0, - 0, 277, 0, 605, 263, 264, 265, 266, 267, 0, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 0, - 0, 0, 0, 0, 277, 0, 606, 263, 264, 265, - 266, 267, 0, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 0, 0, 0, 0, 0, 277, 0, 607, - 263, 264, 265, 266, 267, 0, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 0, 0, 0, 0, 0, - 277, 0, 608, 263, 264, 265, 266, 267, 0, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 0, 0, - 0, 0, 0, 277, 0, 624, 263, 264, 265, 266, - 267, 0, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 0, 0, 0, 0, 0, 277, 0, 628, 263, - 264, 265, 266, 267, 0, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 0, 0, 0, 0, 0, 277, - 0, 793, 263, 264, 265, 266, 267, 0, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 0, 0, 0, - 0, 0, 277, 0, 794, 263, 264, 265, 266, 267, - 0, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 0, 0, 0, 0, 0, 277, 0, 795, 263, 264, - 265, 266, 267, 0, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 0, 0, 0, 0, 0, 277, 0, - 796, 263, 264, 265, 266, 267, 0, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 0, 0, 0, 0, - 0, 277, 0, 845, 263, 264, 265, 266, 267, 0, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 0, - 0, 0, 0, 0, 277, 0, 929, 263, 264, 265, - 266, 267, 0, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 0, 0, 0, 0, 0, 277, 0, 950, - 263, 264, 265, 266, 267, 0, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 0, 0, 0, 0, 0, - 277, 0, 1038, 263, 264, 265, 266, 267, 0, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 0, 0, - 0, 0, 0, 277, 0, 1042, 263, 264, 265, 266, - 267, 0, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 0, 0, 0, 0, 0, 277, 0, 1044, 263, - 264, 265, 266, 267, 0, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 0, 0, 0, 0, 0, 277, - 0, 1153, 263, 264, 265, 266, 267, 0, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 0, 0, 0, - 0, 0, 277, 0, 1155, 263, 264, 265, 266, 267, - 0, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 0, 0, 0, 0, 0, 277, 0, 1157, 263, 264, - 265, 266, 267, 0, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 0, 0, 0, 0, 0, 277, 0, - 1168, 263, 264, 265, 266, 267, 0, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 0, 0, 0, 0, - 0, 277, 0, 1169, 263, 264, 265, 266, 267, 0, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 0, - 0, 0, 0, 0, 277, 0, 1170, 263, 264, 265, - 266, 267, 0, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 0, 0, 0, 0, 0, 277, 0, 1328, - 263, 264, 265, 266, 267, 0, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 0, 0, 0, 0, 0, - 277, 0, 1329, 263, 264, 265, 266, 267, 0, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 0, 0, - 0, 0, 0, 277, 0, 1330, 263, 264, 265, 266, - 267, 0, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 0, 0, 0, 0, 0, 277, 0, 1409, 263, - 264, 265, 266, 267, 0, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 0, 0, 0, 0, 0, 277, - 0, 1410, 263, 264, 265, 266, 267, 0, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 0, 0, 0, - 0, 0, 277, 0, 1411, 263, 264, 265, 266, 267, - 0, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 0, 0, 0, 0, 0, 277, 0, 1457, 263, 264, - 265, 266, 267, 0, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 0, 0, 0, 0, 0, 277, 0, - 1458, 263, 264, 265, 266, 267, 0, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 0, 0, 0, 0, - 0, 277, 0, 1459, 263, 264, 265, 266, 267, 0, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 0, - 0, 0, 0, 0, 277 + 52, 53, 0, 0, 0, 0, 0, 0, 54, 0, + 55, 56, 57, 58, 59, 60, 61, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 0, 278, 0, 0, + 192, 193, 194, 1085, 0, 1086, 0, 0, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 0, 0, + 0, 62, 0, 0, 0, 0, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 0, 215, 216, 217, + 218, 219, 220, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 0, 278, 0, 0, 0, 0, 0, 1178, + 0, 1179, 264, 265, 266, 267, 268, 0, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, + 0, 0, 278, 0, 0, 264, 265, 266, 267, 268, + 426, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 0, 278, 0, 0, 264, 265, + 266, 267, 268, 431, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 0, 0, 0, 0, 0, 278, 0, + 0, 264, 265, 266, 267, 268, 433, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 0, 278, 0, 0, 264, 265, 266, 267, 268, 603, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, + 0, 0, 0, 0, 278, 0, 0, 264, 265, 266, + 267, 268, 607, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 0, 278, 0, 0, + 264, 265, 266, 267, 268, 608, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 0, 0, 0, 0, 0, + 278, 0, 0, 264, 265, 266, 267, 268, 736, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 0, 278, 0, 0, 264, 265, 266, 267, + 268, 943, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 0, 0, 0, 0, 0, 278, 0, 0, 264, + 265, 266, 267, 268, 1081, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 0, 278, + 0, 0, 264, 265, 266, 267, 268, 1100, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, + 0, 0, 278, 0, 0, 264, 265, 266, 267, 268, + 1142, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 0, 278, 0, 0, 264, 265, + 266, 267, 268, 1143, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 0, 0, 0, 0, 0, 278, 0, + 0, 264, 265, 266, 267, 268, 1144, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 0, 278, 0, 0, 264, 265, 266, 267, 268, 1147, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, + 0, 0, 0, 0, 278, 0, 0, 264, 265, 266, + 267, 268, 1148, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 0, 278, 0, 0, + 264, 265, 266, 267, 268, 1181, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 0, 0, 0, 0, 0, + 278, 0, 0, 264, 265, 266, 267, 268, 1242, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 0, 278, 0, 0, 264, 265, 266, 267, + 268, 1350, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 0, 0, 0, 0, 0, 278, 0, 0, 264, + 265, 266, 267, 268, 1379, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 0, 278, + 264, 265, 266, 267, 268, 559, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 0, 0, 0, 0, 0, + 278, 264, 265, 266, 267, 268, 566, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 0, 278, 264, 265, 266, 267, 268, 567, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, + 0, 0, 278, 264, 265, 266, 267, 268, 568, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 0, 278, 264, 265, 266, 267, 268, 620, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, + 0, 0, 0, 0, 278, 264, 265, 266, 267, 268, + 621, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 0, 278, 264, 265, 266, 267, + 268, 622, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 0, 0, 0, 0, 0, 278, 264, 265, 266, + 267, 268, 734, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 0, 278, 264, 265, + 266, 267, 268, 735, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 0, 0, 0, 0, 0, 278, 264, + 265, 266, 267, 268, 857, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 0, 278, + 264, 265, 266, 267, 268, 858, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 0, 0, 0, 0, 0, + 278, 264, 265, 266, 267, 268, 870, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 0, 278, 264, 265, 266, 267, 268, 871, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, + 0, 0, 278, 264, 265, 266, 267, 268, 902, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 0, 278, 264, 265, 266, 267, 268, 903, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, + 0, 0, 0, 0, 278, 264, 265, 266, 267, 268, + 904, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 0, 278, 264, 265, 266, 267, + 268, 905, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 0, 0, 0, 0, 0, 278, 264, 265, 266, + 267, 268, 906, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 0, 278, 264, 265, + 266, 267, 268, 907, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 0, 0, 0, 0, 0, 278, 264, + 265, 266, 267, 268, 908, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 0, 278, + 264, 265, 266, 267, 268, 909, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 0, 0, 0, 0, 0, + 278, 264, 265, 266, 267, 268, 910, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 0, 278, 264, 265, 266, 267, 268, 911, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, + 0, 0, 278, 264, 265, 266, 267, 268, 912, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 0, 278, 264, 265, 266, 267, 268, 913, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, + 0, 0, 0, 0, 278, 264, 265, 266, 267, 268, + 923, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 0, 278, 264, 265, 266, 267, + 268, 930, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 0, 0, 0, 0, 0, 278, 264, 265, 266, + 267, 268, 1033, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 0, 278, 264, 265, + 266, 267, 268, 1034, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 0, 0, 0, 0, 0, 278, 264, + 265, 266, 267, 268, 1042, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 0, 278, + 264, 265, 266, 267, 268, 1045, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 0, 0, 0, 0, 0, + 278, 264, 265, 266, 267, 268, 1056, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 0, 278, 264, 265, 266, 267, 268, 1061, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, + 0, 0, 278, 264, 265, 266, 267, 268, 1064, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 0, 278, 264, 265, 266, 267, 268, 1066, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, + 0, 0, 0, 0, 278, 264, 265, 266, 267, 268, + 1067, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 0, 278, 264, 265, 266, 267, + 268, 1068, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 0, 0, 0, 0, 0, 278, 264, 265, 266, + 267, 268, 1069, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 0, 278, 264, 265, + 266, 267, 268, 1070, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 0, 0, 0, 0, 0, 278, 264, + 265, 266, 267, 268, 1071, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 0, 278, + 264, 265, 266, 267, 268, 1072, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 0, 0, 0, 0, 0, + 278, 264, 265, 266, 267, 268, 1073, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 0, 278, 264, 265, 266, 267, 268, 1074, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, + 0, 0, 278, 264, 265, 266, 267, 268, 1075, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 0, 278, 264, 265, 266, 267, 268, 1076, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, + 0, 0, 0, 0, 278, 264, 265, 266, 267, 268, + 1077, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 0, 278, 264, 265, 266, 267, + 268, 1082, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 0, 0, 0, 0, 0, 278, 264, 265, 266, + 267, 268, 1083, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 0, 278, 264, 265, + 266, 267, 268, 1157, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 0, 0, 0, 0, 0, 278, 264, + 265, 266, 267, 268, 1166, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 0, 278, + 264, 265, 266, 267, 268, 1167, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 0, 0, 0, 0, 0, + 278, 264, 265, 266, 267, 268, 1168, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 0, 278, 264, 265, 266, 267, 268, 1169, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, + 0, 0, 278, 264, 265, 266, 267, 268, 1170, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 0, 278, 264, 265, 266, 267, 268, 1171, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, + 0, 0, 0, 0, 278, 264, 265, 266, 267, 268, + 1172, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 0, 278, 264, 265, 266, 267, + 268, 1173, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 0, 0, 0, 0, 0, 278, 264, 265, 266, + 267, 268, 1174, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 0, 278, 264, 265, + 266, 267, 268, 1230, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 0, 0, 0, 0, 0, 278, 264, + 265, 266, 267, 268, 1231, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 0, 278, + 264, 265, 266, 267, 268, 1232, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 0, 0, 0, 0, 0, + 278, 264, 265, 266, 267, 268, 1233, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 0, 278, 264, 265, 266, 267, 268, 1234, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, + 0, 0, 278, 264, 265, 266, 267, 268, 1235, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 0, 278, 264, 265, 266, 267, 268, 1236, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, + 0, 0, 0, 0, 278, 264, 265, 266, 267, 268, + 1237, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 0, 278, 264, 265, 266, 267, + 268, 1238, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 0, 0, 0, 0, 0, 278, 264, 265, 266, + 267, 268, 1280, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 0, 278, 264, 265, + 266, 267, 268, 1281, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 0, 0, 0, 0, 0, 278, 264, + 265, 266, 267, 268, 1282, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 0, 278, + 264, 265, 266, 267, 268, 1283, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 0, 0, 0, 0, 0, + 278, 264, 265, 266, 267, 268, 1284, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 0, 278, 264, 265, 266, 267, 268, 1285, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, + 0, 0, 278, 264, 265, 266, 267, 268, 1286, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 0, 278, 264, 265, 266, 267, 268, 1287, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, + 0, 0, 0, 0, 278, 264, 265, 266, 267, 268, + 1288, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 0, 278, 264, 265, 266, 267, + 268, 1322, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 0, 0, 0, 0, 0, 278, 264, 265, 266, + 267, 268, 1326, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 0, 278, 264, 265, + 266, 267, 268, 1327, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 0, 0, 0, 0, 0, 278, 264, + 265, 266, 267, 268, 1328, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 0, 278, + 264, 265, 266, 267, 268, 1329, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 0, 0, 0, 0, 0, + 278, 264, 265, 266, 267, 268, 1330, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 0, 278, 264, 265, 266, 267, 268, 1331, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, + 0, 0, 278, 264, 265, 266, 267, 268, 1349, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 0, 278, 264, 265, 266, 267, 268, 1354, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, + 0, 0, 0, 0, 278, 264, 265, 266, 267, 268, + 1355, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 0, 278, 264, 265, 266, 267, + 268, 1356, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 0, 0, 0, 0, 0, 278, 264, 265, 266, + 267, 268, 1357, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 0, 278, 264, 265, + 266, 267, 268, 1358, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 0, 0, 0, 0, 0, 278, 264, + 265, 266, 267, 268, 1359, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 0, 278, + 264, 265, 266, 267, 268, 1382, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 0, 0, 0, 0, 0, + 278, 264, 265, 266, 267, 268, 1383, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 0, 278, 264, 265, 266, 267, 268, 1384, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, + 0, 0, 278, 264, 265, 266, 267, 268, 1385, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 0, 278, 264, 265, 266, 267, 268, 1386, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, + 0, 0, 0, 0, 278, 264, 265, 266, 267, 268, + 1387, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 0, 278, 264, 265, 266, 267, + 268, 1410, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 0, 0, 0, 0, 0, 278, 264, 265, 266, + 267, 268, 1411, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 0, 278, 264, 265, + 266, 267, 268, 1412, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 0, 0, 0, 0, 0, 278, 264, + 265, 266, 267, 268, 1424, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 0, 278, + 264, 265, 266, 267, 268, 1425, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 0, 0, 0, 0, 0, + 278, 264, 265, 266, 267, 268, 1426, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 0, 278, 264, 265, 266, 267, 268, 1441, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, + 0, 0, 278, 264, 265, 266, 267, 268, 1442, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 0, 278, 264, 265, 266, 267, 268, 1443, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, + 0, 0, 0, 0, 278, 0, 0, 0, 401, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 0, 278, + 0, 0, 0, 520, 264, 265, 266, 267, 268, 0, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, + 0, 0, 0, 0, 278, 0, 0, 0, 624, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 0, 278, + 0, 0, 0, 920, 264, 265, 266, 267, 268, 0, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, + 0, 0, 0, 0, 278, 0, 399, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 0, 278, 0, 425, + 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 0, 0, 0, 0, 0, + 278, 0, 427, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 0, 278, 0, 428, 264, 265, 266, 267, + 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 0, 0, 0, 0, 0, 278, 0, 430, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 0, 278, + 0, 434, 264, 265, 266, 267, 268, 0, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, + 0, 0, 278, 0, 435, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 0, 278, 0, 442, 264, 265, + 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 0, 0, 0, 0, 0, 278, 0, + 476, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 0, 278, 0, 479, 264, 265, 266, 267, 268, 0, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, + 0, 0, 0, 0, 278, 0, 482, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 0, 278, 0, 548, + 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 0, 0, 0, 0, 0, + 278, 0, 549, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 0, 278, 0, 550, 264, 265, 266, 267, + 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 0, 0, 0, 0, 0, 278, 0, 551, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 0, 278, + 0, 552, 264, 265, 266, 267, 268, 0, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, + 0, 0, 278, 0, 553, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 0, 278, 0, 554, 264, 265, + 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 0, 0, 0, 0, 0, 278, 0, + 555, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 0, 278, 0, 556, 264, 265, 266, 267, 268, 0, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, + 0, 0, 0, 0, 278, 0, 557, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 0, 278, 0, 558, + 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 0, 0, 0, 0, 0, + 278, 0, 560, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 0, 278, 0, 561, 264, 265, 266, 267, + 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 0, 0, 0, 0, 0, 278, 0, 562, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 0, 278, + 0, 563, 264, 265, 266, 267, 268, 0, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, + 0, 0, 278, 0, 564, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 0, 278, 0, 565, 264, 265, + 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 0, 0, 0, 0, 0, 278, 0, + 589, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 0, 278, 0, 592, 264, 265, 266, 267, 268, 0, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, + 0, 0, 0, 0, 278, 0, 604, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 0, 278, 0, 605, + 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 0, 0, 0, 0, 0, + 278, 0, 609, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 0, 278, 0, 610, 264, 265, 266, 267, + 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 0, 0, 0, 0, 0, 278, 0, 611, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 0, 278, + 0, 612, 264, 265, 266, 267, 268, 0, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, + 0, 0, 278, 0, 613, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 0, 278, 0, 629, 264, 265, + 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 0, 0, 0, 0, 0, 278, 0, + 633, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 0, 278, 0, 804, 264, 265, 266, 267, 268, 0, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, + 0, 0, 0, 0, 278, 0, 805, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 0, 278, 0, 806, + 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 0, 0, 0, 0, 0, + 278, 0, 807, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 0, 278, 0, 860, 264, 265, 266, 267, + 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 0, 0, 0, 0, 0, 278, 0, 944, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 0, 278, + 0, 965, 264, 265, 266, 267, 268, 0, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, + 0, 0, 278, 0, 1051, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 0, 278, 0, 1055, 264, 265, + 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 0, 0, 0, 0, 0, 278, 0, + 1057, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 0, 278, 0, 1160, 264, 265, 266, 267, 268, 0, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, + 0, 0, 0, 0, 278, 0, 1162, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 0, 278, 0, 1164, + 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 0, 0, 0, 0, 0, + 278, 0, 1175, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 0, 278, 0, 1176, 264, 265, 266, 267, + 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 0, 0, 0, 0, 0, 278, 0, 1177, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 0, 0, 0, 0, 0, 278, + 0, 1332, 264, 265, 266, 267, 268, 0, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 0, 0, 0, + 0, 0, 278, 0, 1333, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 0, 0, 0, 0, 0, 278, 0, 1334, 264, 265, + 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 0, 0, 0, 0, 0, 278, 0, + 1413, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 0, 0, 0, 0, + 0, 278, 0, 1414, 264, 265, 266, 267, 268, 0, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 0, + 0, 0, 0, 0, 278, 0, 1415, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 0, 0, 0, 0, 0, 278, 0, 1461, + 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 0, 0, 0, 0, 0, + 278, 0, 1462, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 0, 278, 0, 1463, 264, 265, 266, 267, + 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 0, 0, 0, 0, 0, 278 }; static const short yycheck[] = { 23, - 86, 315, 78, 1018, 258, 4, 4, 4, 4, 4, - 3, 904, 6, 38, 862, 422, 6, 6, 6, 59, - 23, 59, 4, 871, 60, 6, 3, 4, 81, 65, - 878, 144, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 942, 4, 60, 163, 164, 163, - 164, 65, 170, 171, 45, 6, 7, 3, 4, 175, - 178, 175, 6, 9, 10, 11, 12, 13, 14, 15, + 86, 697, 23, 1031, 258, 78, 316, 877, 6, 4, + 4, 4, 4, 4, 3, 424, 886, 957, 3, 4, + 6, 59, 38, 893, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 6, 60, 60, 59, + 81, 4, 65, 65, 4, 163, 164, 163, 164, 6, + 163, 164, 165, 166, 167, 6, 7, 3, 4, 175, + 173, 179, 6, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 119, 120, 121, 95, 60, - 124, 125, 84, 127, 65, 998, 34, 163, 164, 37, - 134, 135, 136, 137, 190, 139, 140, 7, 142, 143, - 144, 174, 146, 179, 175, 181, 163, 164, 179, 6, - 163, 164, 163, 164, 174, 84, 85, 161, 162, 6, - 180, 174, 180, 180, 1032, 181, 400, 180, 179, 174, - 181, 163, 164, 37, 38, 179, 40, 181, 174, 183, - 184, 568, 163, 164, 180, 179, 174, 181, 180, 163, - 164, 164, 180, 43, 1067, 163, 164, 181, 179, 174, - 181, 180, 180, 180, 180, 1033, 163, 164, 6, 1037, - 180, 180, 169, 53, 54, 55, 56, 174, 58, 1214, - 175, 225, 7, 180, 179, 6, 230, 231, 232, 233, + 26, 27, 28, 29, 30, 119, 120, 121, 45, 60, + 124, 125, 95, 127, 65, 1045, 34, 163, 164, 37, + 134, 135, 136, 137, 144, 139, 140, 190, 142, 143, + 144, 174, 146, 179, 820, 181, 175, 180, 163, 164, + 179, 84, 85, 174, 84, 85, 174, 161, 162, 180, + 163, 164, 180, 174, 179, 6, 181, 401, 163, 164, + 99, 100, 101, 102, 103, 179, 179, 181, 174, 183, + 184, 570, 37, 38, 179, 40, 181, 175, 181, 181, + 180, 179, 7, 163, 164, 164, 1046, 6, 163, 164, + 1050, 6, 180, 174, 169, 180, 180, 180, 180, 174, + 180, 1219, 170, 171, 180, 180, 6, 179, 176, 181, + 178, 225, 174, 163, 164, 174, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 163, 164, 179, - 6, 181, 34, 169, 8, 37, 38, 3, 174, 263, + 244, 245, 246, 247, 248, 249, 250, 163, 164, 163, + 164, 170, 171, 169, 174, 42, 8, 258, 174, 178, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 6, 258, 170, 171, 7, 179, - 284, 181, 176, 287, 178, 179, 38, 175, 292, 163, - 164, 179, 296, 297, 298, 174, 300, 301, 302, 303, - 304, 305, 306, 7, 170, 171, 180, 174, 158, 159, - 160, 163, 164, 317, 318, 319, 166, 38, 322, 1147, - 1148, 1149, 1150, 51, 52, 329, 1154, 179, 165, 166, - 167, 335, 174, 3, 4, 5, 173, 7, 174, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 179, 32, 181, 149, 150, 151, 152, 114, 115, - 116, 117, 118, 119, 120, 121, 170, 171, 228, 175, - 163, 164, 176, 179, 178, 170, 171, 174, 174, 6, - 373, 1219, 1220, 178, 174, 1223, 179, 174, 402, 153, - 154, 155, 156, 157, 42, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 174, 163, 164, 400, 422, 173, - 149, 150, 151, 152, 175, 175, 38, 181, 179, 179, - 434, 179, 179, 50, 181, 439, 163, 164, 163, 164, - 444, 170, 171, 40, 1272, 149, 150, 151, 152, 453, - 454, 685, 179, 170, 179, 163, 164, 174, 462, 179, - 38, 181, 312, 313, 180, 469, 170, 171, 179, 6, - 181, 179, 6, 180, 478, 479, 179, 174, 181, 149, - 150, 151, 152, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 1320, 163, 164, 180, 179, 173, 181, 169, - 170, 171, 174, 6, 174, 179, 176, 181, 178, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 1349, 163, 164, 165, 166, 167, 99, 100, 101, - 102, 103, 173, 6, 4, 518, 153, 154, 155, 156, - 157, 835, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 170, 171, 557, 4, 38, 173, 176, 3, 178, - 564, 565, 566, 174, 568, 34, 5, 571, 37, 38, - 179, 40, 181, 577, 155, 156, 157, 6, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 174, 592, 593, - 594, 174, 173, 170, 171, 174, 662, 170, 171, 176, - 174, 178, 452, 176, 179, 178, 181, 174, 1436, 179, - 179, 181, 181, 179, 174, 181, 620, 621, 174, 623, - 174, 174, 174, 8, 181, 174, 174, 631, 632, 174, - 174, 174, 174, 3, 4, 174, 174, 6, 174, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 174, 666, 667, 668, 669, 670, 671, 672, 673, - 674, 675, 676, 677, 6, 174, 174, 5, 174, 174, - 153, 154, 155, 156, 157, 741, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 180, 174, 174, 180, 180, - 173, 180, 685, 174, 180, 709, 174, 174, 174, 174, - 6, 87, 176, 6, 174, 174, 1010, 180, 722, 723, - 724, 174, 174, 174, 5, 174, 174, 174, 174, 4, - 580, 174, 174, 737, 738, 179, 174, 3, 4, 174, - 174, 174, 174, 9, 10, 11, 12, 13, 14, 15, + 274, 275, 276, 277, 278, 3, 163, 164, 175, 163, + 164, 285, 179, 34, 288, 6, 37, 38, 175, 293, + 174, 163, 164, 297, 298, 299, 180, 301, 302, 303, + 304, 305, 306, 307, 1154, 1155, 1156, 1157, 180, 163, + 164, 1161, 163, 164, 318, 319, 320, 163, 164, 323, + 7, 6, 170, 171, 174, 179, 330, 6, 176, 180, + 178, 179, 336, 179, 165, 166, 167, 1013, 43, 3, + 4, 5, 173, 7, 174, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 175, 32, 163, + 164, 179, 175, 374, 1224, 1225, 179, 38, 1228, 163, + 164, 6, 179, 174, 181, 179, 114, 115, 116, 117, + 118, 119, 120, 121, 175, 179, 170, 171, 179, 403, + 401, 153, 154, 155, 156, 157, 174, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 170, 171, 51, 52, + 424, 173, 176, 170, 178, 50, 1276, 174, 7, 181, + 170, 171, 436, 179, 38, 181, 176, 441, 178, 170, + 171, 7, 446, 38, 179, 176, 181, 178, 174, 174, + 40, 455, 456, 158, 159, 160, 690, 179, 38, 181, + 464, 166, 149, 150, 151, 152, 34, 471, 180, 37, + 38, 179, 40, 181, 1324, 6, 480, 481, 179, 179, + 181, 181, 180, 170, 171, 149, 150, 151, 152, 180, + 6, 178, 53, 54, 55, 56, 179, 58, 181, 163, + 164, 174, 179, 1353, 181, 169, 170, 171, 6, 179, + 174, 181, 176, 179, 178, 181, 179, 174, 181, 520, + 179, 145, 181, 228, 4, 179, 150, 181, 153, 154, + 155, 156, 157, 4, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 38, 3, 174, 174, 171, 173, 5, + 5, 174, 174, 177, 178, 559, 8, 174, 174, 174, + 850, 174, 566, 567, 568, 174, 570, 174, 174, 573, + 149, 150, 151, 152, 174, 174, 174, 174, 582, 6, + 174, 174, 174, 149, 150, 151, 152, 174, 174, 174, + 1440, 170, 171, 597, 598, 599, 174, 174, 6, 174, + 174, 667, 174, 6, 170, 171, 176, 180, 313, 314, + 174, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 180, 625, 626, 180, 628, 173, 180, 174, 174, 174, + 3, 4, 636, 637, 174, 174, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 180, 180, + 6, 87, 6, 6, 174, 174, 174, 671, 672, 673, + 674, 675, 676, 677, 678, 679, 680, 681, 682, 5, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 690, + 6, 174, 174, 174, 698, 174, 700, 174, 174, 752, + 174, 153, 154, 155, 156, 157, 174, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 720, 174, 179, 179, + 174, 173, 175, 175, 174, 174, 174, 174, 174, 733, + 734, 735, 174, 1023, 174, 174, 174, 4, 173, 5, + 82, 178, 7, 7, 748, 749, 7, 7, 7, 454, + 153, 154, 155, 156, 157, 7, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 180, 145, 5, 5, 5, + 173, 5, 5, 5, 5, 5, 400, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 790, + 163, 164, 5, 5, 5, 5, 169, 5, 5, 5, + 5, 174, 5, 5, 177, 5, 810, 5, 5, 5, + 153, 154, 155, 156, 157, 868, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 5, 132, 5, 832, 833, + 173, 5, 5, 899, 838, 839, 5, 153, 154, 155, + 156, 157, 3, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 5, 857, 858, 5, 5, 173, 4, 6, + 5, 181, 6, 867, 156, 157, 870, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 880, 6, 181, 7, + 585, 173, 6, 887, 888, 889, 7, 7, 7, 6, + 894, 6, 181, 7, 898, 7, 7, 180, 902, 903, + 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, + 180, 7, 174, 7, 967, 620, 621, 622, 922, 923, + 146, 179, 179, 179, 179, 179, 930, 5, 179, 179, + 179, 179, 179, 638, 179, 179, 179, 179, 179, 179, + 179, 945, 647, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 179, 179, 179, 179, 963, + 179, 179, 179, 587, 588, 179, 590, 3, 4, 6, + 594, 595, 6, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 615, 616, 617, 153, 154, - 155, 156, 157, 174, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 633, 8, 174, 174, 174, 173, 175, - 175, 174, 642, 163, 164, 799, 779, 853, 179, 169, - 174, 805, 174, 174, 174, 5, 174, 177, 6, 174, - 174, 174, 174, 817, 818, 174, 174, 173, 884, 823, - 824, 153, 154, 155, 156, 157, 7, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 178, 7, 842, 843, - 7, 173, 7, 7, 82, 180, 145, 5, 852, 156, - 157, 855, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 865, 5, 5, 5, 5, 173, 5, 872, 873, - 874, 5, 5, 5, 5, 879, 5, 5, 5, 883, - 5, 5, 5, 887, 888, 889, 890, 891, 892, 893, - 894, 895, 896, 897, 898, 5, 952, 163, 164, 5, - 5, 5, 5, 169, 5, 5, 132, 5, 174, 5, - 5, 915, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 5, 3, 930, 6, 5, 153, - 154, 155, 156, 157, 5, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 948, 5, 5, 4, 145, 173, - 6, 6, 6, 150, 7, 153, 154, 155, 156, 157, - 810, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 7, 7, 7, 6, 171, 173, 6, 181, 7, 7, - 177, 178, 7, 6, 174, 181, 836, 180, 838, 180, - 840, 7, 7, 146, 179, 999, 179, 179, 5, 179, - 1004, 1005, 179, 179, 179, 179, 179, 179, 179, 1013, - 1014, 1015, 175, 179, 6, 6, 1020, 1021, 6, 179, - 179, 6, 179, 1027, 179, 6, 174, 181, 179, 179, - 179, 1035, 179, 179, 179, 1091, 7, 7, 7, 1043, - 179, 7, 179, 179, 1048, 180, 7, 1051, 174, 1053, - 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, - 1064, 179, 179, 179, 179, 179, 179, 174, 7, 7, - 1074, 7, 174, 7, 7, 174, 7, 174, 7, 7, - 174, 174, 174, 174, 174, 3, 4, 174, 7, 6, - 1146, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 7, 3, 142, 3, 3, 165, 3, - 3, 3, 3, 3, 3, 3, 3, 1131, 3, 1185, - 153, 154, 155, 156, 157, 3, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 6, 3, 5, 3, 5, - 173, 3, 6, 4, 178, 1159, 1160, 1161, 1162, 1163, - 1164, 1165, 1166, 1167, 7, 153, 154, 155, 156, 157, - 6, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 6, 6, 6, 6, 180, 173, 6, 1243, 83, 6, - 180, 175, 179, 179, 5, 175, 179, 179, 175, 6, - 179, 179, 399, 179, 179, 179, 179, 1211, 175, 4, - 175, 179, 6, 6, 178, 1271, 179, 179, 175, 179, - 179, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, - 1234, 1235, 1236, 179, 179, 179, 179, 179, 175, 1295, - 6, 6, 6, 6, 6, 163, 164, 6, 6, 6, - 6, 169, 6, 6, 6, 6, 174, 7, 3, 177, - 6, 83, 3, 6, 165, 7, 1270, 6, 6, 3, - 6, 3, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, - 1284, 1285, 6, 1287, 6, 1289, 3, 6, 3, 3, - 3, 176, 153, 154, 155, 156, 157, 6, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 6, 6, 84, - 180, 180, 173, 1317, 1318, 181, 175, 179, 1322, 1323, - 1324, 1325, 1326, 1327, 6, 80, 179, 6, 175, 179, - 179, 179, 178, 175, 175, 179, 175, 175, 175, 179, - 142, 1345, 6, 83, 179, 3, 1350, 1351, 1352, 1353, - 1354, 1355, 1356, 1357, 1358, 6, 6, 3, 6, 180, - 179, 6, 6, 6, 6, 6, 3, 6, 6, 5, - 4, 181, 5, 181, 1378, 1379, 1380, 1381, 1382, 1383, - 1384, 6, 1386, 180, 1388, 582, 583, 179, 585, 179, - 179, 175, 589, 590, 175, 175, 179, 179, 6, 178, - 6, 179, 1406, 1407, 1408, 179, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 5, 1420, 1421, 1422, 1423, - 1424, 1425, 85, 5, 80, 622, 142, 6, 625, 6, - 179, 179, 179, 1437, 1438, 1439, 1440, 181, 1442, 5, - 1444, 5, 639, 640, 175, 175, 179, 6, 645, 646, - 179, 80, 180, 180, 180, 652, 179, 654, 179, 179, - 1464, 1465, 1466, 181, 175, 175, 6, 6, 180, 1473, - 6, 1475, 179, 1477, 153, 154, 155, 156, 157, 181, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 181, - 6, 6, 6, 6, 173, 6, 180, 180, 179, 179, - 147, 698, 179, 700, 179, 6, 180, 180, 148, 179, - 175, 6, 6, 710, 711, 712, 6, 6, 715, 716, - 717, 718, 719, 720, 721, 3, 4, 6, 180, 6, - 179, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 3, 4, 179, 175, 180, 180, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 3, 4, 6, 0, 6, 6, 9, 10, 11, + 26, 27, 28, 29, 30, 179, 179, 179, 179, 175, + 179, 6, 179, 627, 174, 6, 630, 155, 156, 157, + 174, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 644, 645, 1026, 1027, 1028, 173, 650, 651, 7, 1033, + 1034, 6, 174, 657, 174, 659, 1040, 174, 174, 174, + 174, 174, 174, 174, 1048, 6, 176, 174, 7, 1102, + 7, 7, 1056, 6, 180, 7, 7, 1061, 181, 7, + 1064, 7, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, + 1074, 1075, 1076, 1077, 7, 7, 7, 7, 1082, 7, + 6, 1085, 7, 142, 7, 709, 3, 711, 3, 3, + 165, 3, 3, 3, 3, 3, 3, 721, 722, 723, + 1153, 6, 726, 727, 728, 729, 730, 731, 732, 3, + 34, 35, 36, 37, 38, 39, 40, 41, 3, 43, + 825, 45, 46, 3, 48, 49, 3, 163, 164, 3, + 5, 3, 5, 169, 3, 6, 4, 178, 174, 1192, + 64, 177, 7, 6, 6, 178, 851, 6, 853, 6, + 855, 6, 6, 180, 78, 79, 6, 180, 179, 179, + 175, 83, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, + 1174, 179, 175, 179, 1178, 175, 175, 179, 153, 154, + 155, 156, 157, 8, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 179, 179, 1248, 179, 175, 173, 179, + 153, 154, 155, 156, 157, 179, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 139, 179, 179, 6, 179, + 173, 175, 1275, 5, 179, 175, 1230, 1231, 1232, 1233, + 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 179, 179, + 864, 179, 6, 179, 179, 179, 1299, 871, 153, 154, + 155, 156, 157, 6, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 4, 6, 84, 890, 6, 173, 6, + 1274, 6, 6, 6, 6, 6, 1280, 1281, 1282, 1283, + 1284, 1285, 1286, 1287, 1288, 1289, 6, 1291, 6, 1293, + 153, 154, 155, 156, 157, 6, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 6, 6, 6, 6, 83, + 173, 7, 3, 6, 3, 3, 6, 1321, 1322, 165, + 6, 6, 1326, 1327, 1328, 1329, 1330, 1331, 153, 154, + 155, 156, 157, 6, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 3, 6, 1349, 3, 6, 173, 3, + 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 6, + 3, 3, 6, 178, 178, 6, 80, 7, 6, 180, + 175, 181, 180, 179, 175, 179, 179, 179, 1382, 1383, + 1384, 1385, 1386, 1387, 1388, 179, 1390, 179, 1392, 153, + 154, 155, 156, 157, 175, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 175, 175, 1410, 1411, 1412, 173, + 175, 179, 175, 1037, 85, 1039, 4, 179, 1042, 6, + 1424, 1425, 1426, 1427, 1428, 1429, 180, 83, 6, 142, + 3, 6, 6, 3, 1058, 6, 3, 1441, 1442, 1443, + 1444, 6, 1446, 6, 1448, 6, 6, 6, 153, 154, + 155, 156, 157, 6, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 5, 1468, 1469, 1470, 1091, 173, 6, + 5, 181, 6, 1477, 179, 1479, 6, 1481, 3, 4, + 175, 175, 6, 180, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 181, 179, 6, 179, + 179, 179, 179, 179, 175, 179, 179, 6, 6, 6, + 6, 3, 4, 6, 5, 1149, 1150, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 3, - 4, 179, 0, 6, 6, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 153, 154, 155, - 156, 157, 6, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 849, 180, 180, 180, 6, 173, 6, 856, - 520, 7, 7, 153, 154, 155, 156, 157, 7, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 875, 594, - -1, 1178, -1, 173, -1, 163, 164, -1, 8, -1, - -1, 169, -1, -1, -1, 847, 174, -1, -1, 177, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, - -1, -1, -1, 163, 164, -1, -1, -1, -1, 169, - -1, -1, -1, -1, 174, -1, -1, 177, -1, -1, - -1, -1, -1, 8, -1, -1, -1, -1, -1, -1, - -1, 163, 164, -1, -1, -1, -1, 169, 8, -1, - -1, -1, 174, 153, 154, 155, 156, 157, -1, 159, - 160, 161, 162, 163, 164, 165, 166, 167, -1, 163, - 164, -1, -1, 173, -1, 169, -1, -1, -1, 179, - 174, 181, -1, -1, -1, -1, -1, -1, -1, 153, - 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, - 163, 164, 165, 166, 167, -1, -1, 1024, -1, 1026, - 173, -1, 1029, 153, 154, 155, 156, 157, 181, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 1045, -1, - -1, -1, -1, 173, 153, 154, 155, 156, 157, -1, - 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, - -1, -1, -1, -1, 173, -1, -1, -1, 153, 154, - 155, 156, 157, 1080, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 153, 154, 155, 156, 157, 173, 159, - 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, - -1, -1, -1, 173, -1, -1, -1, 34, 35, 36, - 37, 38, 39, 40, 41, -1, 43, -1, 45, 46, - -1, 48, 49, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1142, 1143, 64, -1, -1, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 6, + 6, 6, 6, 6, 5, 179, 181, 179, 3, 4, + 179, 175, 1186, 175, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 8, 179, 179, 80, + 180, 180, 3, 4, 180, 179, 179, 1221, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 142, 1245, 8, 153, 154, 155, 156, 157, 6, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 163, 164, + 6, 5, 5, 173, 169, 6, 175, 179, 181, 174, + 3, 4, 177, 1277, 180, 175, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 8, 179, + 181, 163, 164, 80, 181, 6, 6, 169, 6, 6, + 6, 175, 174, 8, 6, 177, 153, 154, 155, 156, + 157, 1325, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 6, 180, 179, 179, 147, 173, 148, 163, 164, + 179, 179, 6, 6, 169, 6, 6, 179, 1352, 174, + 180, 153, 154, 155, 156, 157, 180, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 180, 6, 6, 179, + 179, 173, 163, 164, 180, 180, 1380, 180, 169, 179, + 6, 6, 6, 174, 6, 175, 180, 153, 154, 155, + 156, 157, 180, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 180, 6, 6, 1409, 6, 173, 0, 0, + 7, 7, 522, 7, 153, 154, 155, 156, 157, 1423, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 1185, + 163, 164, 599, 862, 173, 813, 169, -1, -1, -1, + 179, 174, 181, 153, 154, 155, 156, 157, -1, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 153, 154, + 155, 156, 157, 173, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, 34, + 35, 36, 37, 38, 39, 40, 41, -1, 43, -1, + 45, 46, -1, 48, 49, -1, 34, 35, 36, 37, + 38, 39, 40, 41, -1, 43, -1, 45, 46, 64, + 48, 49, -1, -1, 0, 1, -1, 3, 4, -1, + -1, -1, -1, 78, 79, -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 78, 79, 34, 35, 36, 37, 38, 39, 40, - 41, -1, 43, -1, 45, 46, -1, 48, 49, -1, - -1, -1, 1179, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 78, 79, 34, - 35, 36, 37, 38, 39, 40, 41, -1, 43, 1216, - 45, 46, 139, 48, 49, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 64, - -1, -1, -1, 1240, 0, 1, -1, 3, 4, -1, - -1, -1, -1, 78, 79, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 181, -1, -1, -1, 139, -1, - -1, -1, -1, -1, -1, 31, 1273, 33, 34, 35, + 78, 79, -1, -1, -1, 31, -1, 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, -1, -1, -1, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, -1, - 181, -1, -1, -1, 139, -1, -1, -1, -1, -1, - -1, -1, 78, 79, 1321, -1, -1, -1, -1, -1, - 86, -1, 88, 89, 90, 91, 92, 93, 94, -1, + -1, -1, -1, -1, 139, -1, -1, -1, -1, -1, + -1, -1, 78, 79, -1, -1, -1, -1, -1, -1, + 86, 139, 88, 89, 90, 91, 92, 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1348, -1, -1, -1, -1, -1, -1, 114, 115, - 116, 117, 118, 119, 120, 121, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1376, - -1, -1, -1, 139, 140, 141, -1, 143, -1, 153, - 154, 155, 156, 157, 4, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, 1405, 173, - -1, -1, -1, -1, -1, 179, -1, 181, -1, -1, - -1, 31, 1419, 33, 34, 35, 36, 37, 38, 39, - 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, - -1, -1, -1, 53, 54, 55, 56, 57, 58, 37, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - -1, -1, -1, -1, -1, -1, 86, -1, 88, 89, - 90, 91, 92, 93, 94, 153, 154, 155, 156, 157, - -1, 159, 160, 161, 162, 163, 164, 165, 166, 167, - -1, -1, -1, -1, -1, 173, -1, -1, 96, 97, - 98, 179, -1, 181, -1, -1, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, -1, -1, -1, 139, - -1, -1, -1, -1, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, -1, 133, 134, 135, 136, 137, - 138, 153, 154, 155, 156, 157, -1, 159, 160, 161, + -1, -1, -1, -1, -1, -1, 181, -1, 114, 115, + 116, 117, 118, 119, 120, 121, 4, -1, 153, 154, + 155, 156, 157, 181, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 139, 140, 141, -1, 143, 173, -1, + -1, -1, -1, 31, 179, 33, 34, 35, 36, 37, + 38, 39, 40, 41, -1, 43, 44, 45, 46, 47, + 48, 49, -1, -1, -1, 53, 54, 55, 56, 57, + 58, 37, 60, 61, 62, 63, 64, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 78, 79, -1, -1, -1, -1, -1, -1, 86, -1, + 88, 89, 90, 91, 92, 93, 94, 153, 154, 155, + 156, 157, -1, 159, 160, 161, 162, 163, 164, 165, + 166, 167, -1, -1, -1, -1, -1, 173, -1, -1, + 96, 97, 98, 179, -1, 181, -1, -1, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, -1, -1, + -1, 139, -1, -1, -1, -1, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, + 136, 137, 138, 153, 154, 155, 156, 157, -1, 159, + 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, + -1, -1, -1, 173, -1, -1, -1, -1, -1, 179, + -1, 181, 153, 154, 155, 156, 157, -1, 159, 160, + 161, 162, 163, 164, 165, 166, 167, -1, -1, -1, + -1, -1, 173, -1, -1, 153, 154, 155, 156, 157, + 181, 159, 160, 161, 162, 163, 164, 165, 166, 167, + -1, -1, -1, -1, -1, 173, -1, -1, 153, 154, + 155, 156, 157, 181, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + -1, 153, 154, 155, 156, 157, 181, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, -1, 153, 154, 155, 156, 157, 181, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, @@ -1979,19 +1958,6 @@ static const short yycheck[] = { 23, 157, 181, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, -1, 153, 154, 155, 156, 157, 181, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, -1, 153, 154, 155, 156, 157, 181, 159, 160, - 161, 162, 163, 164, 165, 166, 167, -1, -1, -1, - -1, -1, 173, -1, -1, 153, 154, 155, 156, 157, - 181, 159, 160, 161, 162, 163, 164, 165, 166, 167, - -1, -1, -1, -1, -1, 173, 153, 154, 155, 156, - 157, 179, 159, 160, 161, 162, 163, 164, 165, 166, - 167, -1, -1, -1, -1, -1, 173, 153, 154, 155, - 156, 157, 179, 159, 160, 161, 162, 163, 164, 165, - 166, 167, -1, -1, -1, -1, -1, 173, 153, 154, - 155, 156, 157, 179, 159, 160, 161, 162, 163, 164, - 165, 166, 167, -1, -1, -1, -1, -1, 173, 153, - 154, 155, 156, 157, 179, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, 153, 154, 155, 156, 157, 179, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, -1, -1, -1, @@ -2209,24 +2175,19 @@ static const short yycheck[] = { 23, 162, 163, 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, 153, 154, 155, 156, 157, 179, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, -1, - -1, -1, 173, -1, -1, -1, 177, 153, 154, 155, - 156, 157, -1, 159, 160, 161, 162, 163, 164, 165, - 166, 167, -1, -1, -1, -1, -1, 173, -1, -1, - -1, 177, 153, 154, 155, 156, 157, -1, 159, 160, - 161, 162, 163, 164, 165, 166, 167, -1, -1, -1, - -1, -1, 173, -1, -1, -1, 177, 153, 154, 155, - 156, 157, -1, 159, 160, 161, 162, 163, 164, 165, - 166, 167, -1, -1, -1, -1, -1, 173, -1, -1, - -1, 177, 153, 154, 155, 156, 157, -1, 159, 160, - 161, 162, 163, 164, 165, 166, 167, -1, -1, -1, - -1, -1, 173, -1, 175, 153, 154, 155, 156, 157, - -1, 159, 160, 161, 162, 163, 164, 165, 166, 167, - -1, -1, -1, -1, -1, 173, -1, 175, 153, 154, - 155, 156, 157, -1, 159, 160, 161, 162, 163, 164, - 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, - 175, 153, 154, 155, 156, 157, -1, 159, 160, 161, - 162, 163, 164, 165, 166, 167, -1, -1, -1, -1, - -1, 173, -1, 175, 153, 154, 155, 156, 157, -1, + -1, -1, 173, 153, 154, 155, 156, 157, 179, 159, + 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, + -1, -1, -1, 173, 153, 154, 155, 156, 157, 179, + 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, + -1, -1, -1, -1, 173, -1, -1, -1, 177, 153, + 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, + 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, + -1, -1, -1, 177, 153, 154, 155, 156, 157, -1, + 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, + -1, -1, -1, -1, 173, -1, -1, -1, 177, 153, + 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, + 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, + -1, -1, -1, 177, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, 175, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, 164, 165, @@ -2366,11 +2327,19 @@ static const short yycheck[] = { 23, 162, 163, 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, 175, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, - -1, -1, -1, -1, 173 + -1, -1, -1, -1, 173, -1, 175, 153, 154, 155, + 156, 157, -1, 159, 160, 161, 162, 163, 164, 165, + 166, 167, -1, -1, -1, -1, -1, 173, -1, 175, + 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, + 163, 164, 165, 166, 167, -1, -1, -1, -1, -1, + 173, -1, 175, 153, 154, 155, 156, 157, -1, 159, + 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, + -1, -1, -1, 173, -1, 175, 153, 154, 155, 156, + 157, -1, 159, 160, 161, 162, 163, 164, 165, 166, + 167, -1, -1, -1, -1, -1, 173 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "/usr/lib/bison.simple" -/* This file comes from bison-1.28. */ +#line 3 "/usr/local/share/bison.simple" /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. @@ -2387,66 +2356,46 @@ static const short yycheck[] = { 23, You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* As a special exception, when this file is copied by Bison into a Bison output file, you may use that output file without restriction. This special exception was added by the Free Software Foundation in version 1.24 of Bison. */ -/* This is the parser code that is written into each bison parser - when the %semantic_parser declaration is not specified in the grammar. - It was written by Richard Stallman by simplifying the hairy parser - used when %semantic_parser is specified. */ - -#ifndef YYSTACK_USE_ALLOCA -#ifdef alloca -#define YYSTACK_USE_ALLOCA -#else /* alloca not defined */ +#ifndef alloca #ifdef __GNUC__ -#define YYSTACK_USE_ALLOCA #define alloca __builtin_alloca #else /* not GNU C. */ -#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) -#define YYSTACK_USE_ALLOCA +#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) #include <alloca.h> #else /* not sparc */ -/* We think this test detects Watcom and Microsoft C. */ -/* This used to test MSDOS, but that is a bad idea - since that symbol is in the user namespace. */ -#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) -#if 0 /* No need for malloc.h, which pollutes the namespace; - instead, just don't use alloca. */ +#if defined (MSDOS) && !defined (__TURBOC__) #include <malloc.h> -#endif #else /* not MSDOS, or __TURBOC__ */ #if defined(_AIX) -/* I don't know what this was needed for, but it pollutes the namespace. - So I turned it off. rms, 2 May 1997. */ -/* #include <malloc.h> */ +#include <malloc.h> #pragma alloca -#define YYSTACK_USE_ALLOCA -#else /* not MSDOS, or __TURBOC__, or _AIX */ -#if 0 -#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up, - and on HPUX 10. Eventually we can turn this on. */ -#define YYSTACK_USE_ALLOCA -#define alloca __builtin_alloca +#else /* not MSDOS, __TURBOC__, or _AIX */ +#ifdef __hpux +#ifdef __cplusplus +extern "C" { +void *alloca (unsigned int); +}; +#else /* not __cplusplus */ +void *alloca (); +#endif /* not __cplusplus */ #endif /* __hpux */ -#endif #endif /* not _AIX */ #endif /* not MSDOS, or __TURBOC__ */ -#endif /* not sparc */ -#endif /* not GNU C */ -#endif /* alloca not defined */ -#endif /* YYSTACK_USE_ALLOCA not defined */ +#endif /* not sparc. */ +#endif /* not GNU C. */ +#endif /* alloca not defined. */ -#ifdef YYSTACK_USE_ALLOCA -#define YYSTACK_ALLOC alloca -#else -#define YYSTACK_ALLOC malloc -#endif +/* This is the parser code that is written into each bison parser + when the %semantic_parser declaration is not specified in the grammar. + It was written by Richard Stallman by simplifying the hairy parser + used when %semantic_parser is specified. */ /* Note: there must be only one dollar sign in this file. It is replaced by the list of actions, each action @@ -2456,8 +2405,8 @@ static const short yycheck[] = { 23, #define yyclearin (yychar = YYEMPTY) #define YYEMPTY -2 #define YYEOF 0 -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab +#define YYACCEPT return(0) +#define YYABORT return(1) #define YYERROR goto yyerrlab1 /* Like YYERROR except do call yyerror. This remains here temporarily to ease the @@ -2538,12 +2487,12 @@ int yydebug; /* nonzero means print parse trace */ #ifndef YYMAXDEPTH #define YYMAXDEPTH 10000 #endif - -/* Define __yy_memcpy. Note that the size argument - should be passed with type unsigned int, because that is what the non-GCC - definitions require. With GCC, __builtin_memcpy takes an arg - of type size_t, but it can handle unsigned int. */ +/* Prevent warning if -Wstrict-prototypes. */ +#ifdef __GNUC__ +int yyparse (void); +#endif + #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ #define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) #else /* not GNU C or C++ */ @@ -2555,7 +2504,7 @@ static void __yy_memcpy (to, from, count) char *to; char *from; - unsigned int count; + int count; { register char *f = from; register char *t = to; @@ -2570,10 +2519,10 @@ __yy_memcpy (to, from, count) /* This is the most reliable way to avoid incompatibilities in available built-in functions on various systems. */ static void -__yy_memcpy (char *to, char *from, unsigned int count) +__yy_memcpy (char *to, char *from, int count) { - register char *t = to; register char *f = from; + register char *t = to; register int i = count; while (i-- > 0) @@ -2583,7 +2532,7 @@ __yy_memcpy (char *to, char *from, unsigned int count) #endif #endif -#line 217 "/usr/lib/bison.simple" +#line 196 "/usr/local/share/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. @@ -2604,15 +2553,6 @@ __yy_memcpy (char *to, char *from, unsigned int count) #define YYPARSE_PARAM_DECL #endif /* not YYPARSE_PARAM */ -/* Prevent warning if -Wstrict-prototypes. */ -#ifdef __GNUC__ -#ifdef YYPARSE_PARAM -int yyparse (void *); -#else -int yyparse (void); -#endif -#endif - int yyparse(YYPARSE_PARAM_ARG) YYPARSE_PARAM_DECL @@ -2641,7 +2581,6 @@ yyparse(YYPARSE_PARAM_ARG) #endif int yystacksize = YYINITDEPTH; - int yyfree_stacks = 0; #ifdef YYPURE int yychar; @@ -2726,32 +2665,18 @@ yynewstate: if (yystacksize >= YYMAXDEPTH) { yyerror("parser stack overflow"); - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); -#endif - } return 2; } yystacksize *= 2; if (yystacksize > YYMAXDEPTH) yystacksize = YYMAXDEPTH; -#ifndef YYSTACK_USE_ALLOCA - yyfree_stacks = 1; -#endif - yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); - __yy_memcpy ((char *)yyss, (char *)yyss1, - size * (unsigned int) sizeof (*yyssp)); - yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); - __yy_memcpy ((char *)yyvs, (char *)yyvs1, - size * (unsigned int) sizeof (*yyvsp)); + yyss = (short *) alloca (yystacksize * sizeof (*yyssp)); + __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp)); + yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp)); + __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp)); #ifdef YYLSP_NEEDED - yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); - __yy_memcpy ((char *)yyls, (char *)yyls1, - size * (unsigned int) sizeof (*yylsp)); + yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp)); + __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp)); #endif #endif /* no yyoverflow */ @@ -3802,7 +3727,23 @@ case 149: ; break;} case 150: -#line 974 "Gmsh.y" +#line 976 "Gmsh.y" +{ + ColorTable *ct = Get_ColorTable(0); + if(!ct) + vyyerror("View[%d] does not exist", 0); + else{ + ct->size = List_Nbr(yyvsp[-1].l); + if(ct->size > COLORTABLE_NBMAX_COLOR) + vyyerror("Too Many (%d>%d) Colors in View[%d].ColorTable", + ct->size, COLORTABLE_NBMAX_COLOR, 0); + else + for(i=0 ; i<ct->size ; i++) List_Read(yyvsp[-1].l, i, &ct->table[i]); + } + ; + break;} +case 151: +#line 991 "Gmsh.y" { ColorTable *ct = Get_ColorTable((int)yyvsp[-6].d); if(!ct) @@ -3817,24 +3758,24 @@ case 150: } ; break;} -case 151: -#line 999 "Gmsh.y" +case 152: +#line 1016 "Gmsh.y" { Cdbpts101((int)yyvsp[-4].d,yyvsp[-1].v[0],yyvsp[-1].v[1],yyvsp[-1].v[2],yyvsp[-1].v[3],yyvsp[-1].v[4]); yyval.s.Type = MSH_POINT; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 152: -#line 1006 "Gmsh.y" +case 153: +#line 1023 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_POINT,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_PHYSICAL_POINT; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 153: -#line 1012 "Gmsh.y" +case 154: +#line 1029 "Gmsh.y" { Vertex *v; Attractor *a; @@ -3854,8 +3795,8 @@ case 153: } ; break;} -case 154: -#line 1031 "Gmsh.y" +case 155: +#line 1048 "Gmsh.y" { for(i=0;i<List_Nbr(yyvsp[-3].l);i++){ List_Read(yyvsp[-3].l,i,&d); @@ -3867,31 +3808,31 @@ case 154: } ; break;} -case 155: -#line 1042 "Gmsh.y" +case 156: +#line 1059 "Gmsh.y" { yyval.s.Type = MSH_POINT; yyval.s.Num = (int)yyvsp[-2].d; ; break;} -case 156: -#line 1050 "Gmsh.y" +case 157: +#line 1067 "Gmsh.y" { Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_LINE,1,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL); yyval.s.Type = MSH_SEGM_LINE; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 157: -#line 1056 "Gmsh.y" +case 158: +#line 1073 "Gmsh.y" { Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_SPLN,3,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL); yyval.s.Type = MSH_SEGM_SPLN; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 158: -#line 1062 "Gmsh.y" +case 159: +#line 1079 "Gmsh.y" { Curve *c; Attractor *a; @@ -3911,16 +3852,16 @@ case 158: } ; break;} -case 159: -#line 1081 "Gmsh.y" +case 160: +#line 1098 "Gmsh.y" { Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_CIRC,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL); yyval.s.Type = MSH_SEGM_CIRC ; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 160: -#line 1087 "Gmsh.y" +case 161: +#line 1104 "Gmsh.y" { List_T *temp; int i,j; @@ -3937,48 +3878,48 @@ case 160: yyval.s.Num = (int)yyvsp[-6].d; ; break;} -case 161: -#line 1104 "Gmsh.y" +case 162: +#line 1121 "Gmsh.y" { Cdbseg101((int)yyvsp[-14].d,MSH_SEGM_PARAMETRIC,2,NULL,NULL,-1,-1,yyvsp[-10].d,yyvsp[-8].d,yyvsp[-6].c,yyvsp[-4].c,yyvsp[-2].c); yyval.s.Type = MSH_SEGM_PARAMETRIC ; yyval.s.Num = (int)yyvsp[-14].d; ; break;} -case 162: -#line 1110 "Gmsh.y" +case 163: +#line 1127 "Gmsh.y" { Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_ELLI,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL); yyval.s.Type = MSH_SEGM_ELLI ; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 163: -#line 1116 "Gmsh.y" +case 164: +#line 1133 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_LINE,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_PHYSICAL_LINE; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 164: -#line 1122 "Gmsh.y" +case 165: +#line 1139 "Gmsh.y" { yyval.s.Type = MSH_SEGM_LOOP; Cdbz101((int)yyvsp[-4].d,yyval.s.Type,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 165: -#line 1128 "Gmsh.y" +case 166: +#line 1145 "Gmsh.y" { Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_BSPLN,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL); yyval.s.Type = MSH_SEGM_BSPLN; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 166: -#line 1134 "Gmsh.y" +case 167: +#line 1151 "Gmsh.y" { List_T *Temp; int i; @@ -3998,8 +3939,8 @@ case 166: List_Delete(Temp); ; break;} -case 167: -#line 1153 "Gmsh.y" +case 168: +#line 1170 "Gmsh.y" { yyval.s.Num = (int)yyvsp[-2].d; Curve *c = FindCurve(yyval.s.Num,THEM); @@ -4009,16 +3950,16 @@ case 167: yyval.s.Type = c->Typ; ; break;} -case 168: -#line 1165 "Gmsh.y" +case 169: +#line 1182 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_SURF_PLAN,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_SURF_PLAN; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 169: -#line 1171 "Gmsh.y" +case 170: +#line 1188 "Gmsh.y" { Surface *s,*support; support = FindSurface((int)yyvsp[-4].d,THEM); @@ -4038,8 +3979,8 @@ case 169: } ; break;} -case 170: -#line 1190 "Gmsh.y" +case 171: +#line 1207 "Gmsh.y" { List_Read(yyvsp[-1].l,0,&d); i = (int)d; @@ -4061,38 +4002,38 @@ case 170: } ; break;} -case 171: -#line 1213 "Gmsh.y" +case 172: +#line 1230 "Gmsh.y" { CreateNurbsSurface ( (int) yyvsp[-16].d , (int)yyvsp[-4].d , (int)yyvsp[-2].d , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l); yyval.s.Type = MSH_SURF_NURBS; yyval.s.Num = (int)yyvsp[-16].d; ; break;} -case 172: -#line 1221 "Gmsh.y" +case 173: +#line 1238 "Gmsh.y" { CreateNurbsSurfaceSupport ((int)yyvsp[-16].d, (int) yyvsp[-4].d , (int) yyvsp[-2].d , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l); ; break;} -case 173: -#line 1225 "Gmsh.y" +case 174: +#line 1242 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_SURFACE,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_PHYSICAL_SURFACE; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 174: -#line 1231 "Gmsh.y" +case 175: +#line 1248 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_SURF_LOOP,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_SURF_LOOP; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 175: -#line 1237 "Gmsh.y" +case 176: +#line 1254 "Gmsh.y" { yyval.s.Num = (int)yyvsp[-2].d; Surface *s = FindSurface(yyval.s.Num,THEM); @@ -4102,85 +4043,85 @@ case 175: yyval.s.Type = s->Typ; ; break;} -case 176: -#line 1249 "Gmsh.y" +case 177: +#line 1266 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_VOLUME; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 177: -#line 1255 "Gmsh.y" +case 178: +#line 1272 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_VOLUME; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 178: -#line 1261 "Gmsh.y" +case 179: +#line 1278 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_PHYSICAL_VOLUME; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 179: -#line 1274 "Gmsh.y" +case 180: +#line 1291 "Gmsh.y" { TranslateShapes (yyvsp[-3].v[0],yyvsp[-3].v[1],yyvsp[-3].v[2],yyvsp[-1].l,1); yyval.l = yyvsp[-1].l; ; break;} -case 180: -#line 1279 "Gmsh.y" +case 181: +#line 1296 "Gmsh.y" { RotateShapes(yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].d,yyvsp[-1].l); yyval.l = yyvsp[-1].l; ; break;} -case 181: -#line 1284 "Gmsh.y" +case 182: +#line 1301 "Gmsh.y" { SymmetryShapes(yyvsp[-3].v[0],yyvsp[-3].v[1],yyvsp[-3].v[2],yyvsp[-3].v[3],yyvsp[-1].l,1); yyval.l = yyvsp[-1].l; ; break;} -case 182: -#line 1289 "Gmsh.y" +case 183: +#line 1306 "Gmsh.y" { DilatShapes(yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].d,yyvsp[-1].l,1); yyval.l = yyvsp[-1].l; ; break;} -case 183: -#line 1296 "Gmsh.y" -{ yyval.l = yyvsp[0].l; ; - break;} case 184: -#line 1297 "Gmsh.y" +#line 1313 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} case 185: -#line 1298 "Gmsh.y" +#line 1314 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} case 186: -#line 1303 "Gmsh.y" +#line 1315 "Gmsh.y" +{ yyval.l = yyvsp[0].l; ; + break;} +case 187: +#line 1320 "Gmsh.y" { yyval.l = List_Create(3,3,sizeof(Shape)); ; break;} -case 187: -#line 1307 "Gmsh.y" +case 188: +#line 1324 "Gmsh.y" { List_Add(yyval.l,&yyvsp[0].s); yyval.l = yyvsp[-1].l; ; break;} -case 188: -#line 1319 "Gmsh.y" +case 189: +#line 1336 "Gmsh.y" { yyval.l = List_Create(3,3,sizeof(Shape)); for(i=0;i<List_Nbr(yyvsp[-1].l);i++){ @@ -4191,8 +4132,8 @@ case 188: } ; break;} -case 189: -#line 1337 "Gmsh.y" +case 190: +#line 1354 "Gmsh.y" { for(i=0;i<List_Nbr(yyvsp[-1].l);i++){ List_Read (yyvsp[-1].l,i,&TheShape); @@ -4200,21 +4141,21 @@ case 189: } ; break;} -case 190: -#line 1344 "Gmsh.y" +case 191: +#line 1361 "Gmsh.y" { if(!strcmp(yyvsp[-4].c, "View")) FreeView((int)yyvsp[-2].d); ; break;} -case 191: -#line 1349 "Gmsh.y" +case 192: +#line 1366 "Gmsh.y" { Init_Mesh(THEM, 1); ; break;} -case 192: -#line 1361 "Gmsh.y" +case 193: +#line 1378 "Gmsh.y" { if(!strcmp(yyvsp[-2].c, "Include")){ @@ -4269,8 +4210,8 @@ case 192: vyyerror("Unknown Command '%s'", yyvsp[-2].c); ; break;} -case 193: -#line 1415 "Gmsh.y" +case 194: +#line 1432 "Gmsh.y" { if(!strcmp(yyvsp[-2].c, "Sleep")){ @@ -4290,14 +4231,14 @@ case 193: vyyerror("Unknown Command '%s'", yyvsp[-2].c); ; break;} -case 194: -#line 1434 "Gmsh.y" +case 195: +#line 1451 "Gmsh.y" { exit(0); ; break;} -case 195: -#line 1438 "Gmsh.y" +case 196: +#line 1455 "Gmsh.y" { if(!CTX.interactive){ // we're in interactive mode if(Tree_Nbr(THEM->Points) != Last_NumberOfPoints){ @@ -4312,8 +4253,8 @@ case 195: } ; break;} -case 196: -#line 1460 "Gmsh.y" +case 197: +#line 1477 "Gmsh.y" { FILE* ff; if(RecursionLevel) @@ -4328,8 +4269,8 @@ case 196: fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]); ; break;} -case 197: -#line 1474 "Gmsh.y" +case 198: +#line 1491 "Gmsh.y" { FILE* ff; if(RecursionLevel) @@ -4344,8 +4285,8 @@ case 197: fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]); ; break;} -case 198: -#line 1488 "Gmsh.y" +case 199: +#line 1505 "Gmsh.y" { FILE* ff; if(RecursionLevel) @@ -4371,8 +4312,8 @@ case 198: fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]); ; break;} -case 199: -#line 1513 "Gmsh.y" +case 200: +#line 1530 "Gmsh.y" { FILE* ff; if(RecursionLevel) @@ -4398,8 +4339,8 @@ case 199: fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]); ; break;} -case 200: -#line 1538 "Gmsh.y" +case 201: +#line 1555 "Gmsh.y" { if(LoopControlVariablesTab[ImbricatedLoop-1][1] > LoopControlVariablesTab[ImbricatedLoop-1][0]){ @@ -4426,104 +4367,104 @@ case 200: } ; break;} -case 201: -#line 1564 "Gmsh.y" +case 202: +#line 1581 "Gmsh.y" { if(!FunctionManager::Instance()->createFunction(yyvsp[0].c,yyin,yylineno)) vyyerror("Redefinition of function %s",yyvsp[0].c); skip_until(NULL, "Return"); ; break;} -case 202: -#line 1570 "Gmsh.y" +case 203: +#line 1587 "Gmsh.y" { if(!FunctionManager::Instance()->leaveFunction(&yyin,yylineno)) vyyerror("Error while exiting function"); ; break;} -case 203: -#line 1575 "Gmsh.y" +case 204: +#line 1592 "Gmsh.y" { if(!FunctionManager::Instance()->enterFunction(yyvsp[-1].c,&yyin,yylineno)) vyyerror("Unknown Function %s",yyvsp[-1].c); ; break;} -case 204: -#line 1580 "Gmsh.y" +case 205: +#line 1597 "Gmsh.y" { if(!yyvsp[-1].d) skip_until("If", "EndIf"); ; break;} -case 205: -#line 1584 "Gmsh.y" +case 206: +#line 1601 "Gmsh.y" { ; break;} -case 206: -#line 1595 "Gmsh.y" +case 207: +#line 1612 "Gmsh.y" { Curve *pc, *prc; Extrude_ProtudePoint(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,&pc,&prc,NULL); ; break;} -case 207: -#line 1600 "Gmsh.y" +case 208: +#line 1617 "Gmsh.y" { Curve *pc, *prc; Extrude_ProtudePoint(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d, &pc,&prc,NULL); ; break;} -case 208: -#line 1606 "Gmsh.y" +case 209: +#line 1623 "Gmsh.y" { Extrude_ProtudeCurve(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,NULL); ; break;} -case 209: -#line 1610 "Gmsh.y" +case 210: +#line 1627 "Gmsh.y" { Extrude_ProtudeCurve(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,NULL); ; break;} -case 210: -#line 1614 "Gmsh.y" +case 211: +#line 1631 "Gmsh.y" { Extrude_ProtudeSurface(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,0,NULL); ; break;} -case 211: -#line 1618 "Gmsh.y" +case 212: +#line 1635 "Gmsh.y" { Extrude_ProtudeSurface(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,0,NULL); ; break;} -case 212: -#line 1622 "Gmsh.y" +case 213: +#line 1639 "Gmsh.y" { int vol = NEWREG(); Extrude_ProtudeSurface(1,(int)yyvsp[-7].d,yyvsp[-5].v[0],yyvsp[-5].v[1],yyvsp[-5].v[2],0.,0.,0.,0.,vol,&extr); ; break;} -case 213: -#line 1627 "Gmsh.y" +case 214: +#line 1644 "Gmsh.y" { int vol = NEWREG(); Extrude_ProtudeSurface(0,(int)yyvsp[-11].d,yyvsp[-9].v[0],yyvsp[-9].v[1],yyvsp[-9].v[2],yyvsp[-7].v[0],yyvsp[-7].v[1],yyvsp[-7].v[2],yyvsp[-5].d,vol,&extr); ; break;} -case 214: -#line 1635 "Gmsh.y" +case 215: +#line 1652 "Gmsh.y" { ; break;} -case 215: -#line 1638 "Gmsh.y" +case 216: +#line 1655 "Gmsh.y" { ; break;} -case 216: -#line 1644 "Gmsh.y" +case 217: +#line 1661 "Gmsh.y" { double d; int j; @@ -4541,14 +4482,14 @@ case 216: } ; break;} -case 217: -#line 1661 "Gmsh.y" +case 218: +#line 1678 "Gmsh.y" { extr.mesh.Recombine = true; ; break;} -case 218: -#line 1672 "Gmsh.y" +case 219: +#line 1689 "Gmsh.y" { Curve *c; for(i=0;i<List_Nbr(yyvsp[-3].l);i++){ @@ -4566,8 +4507,8 @@ case 218: } ; break;} -case 219: -#line 1689 "Gmsh.y" +case 220: +#line 1706 "Gmsh.y" { Curve *c; for(i=0;i<List_Nbr(yyvsp[-6].l);i++){ @@ -4585,8 +4526,8 @@ case 219: } ; break;} -case 220: -#line 1706 "Gmsh.y" +case 221: +#line 1723 "Gmsh.y" { Curve *c; for(i=0;i<List_Nbr(yyvsp[-6].l);i++){ @@ -4604,8 +4545,8 @@ case 220: } ; break;} -case 221: -#line 1723 "Gmsh.y" +case 222: +#line 1740 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-4].d,THEM); if(!s) @@ -4627,8 +4568,8 @@ case 221: } ; break;} -case 222: -#line 1744 "Gmsh.y" +case 223: +#line 1761 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-4].d,THEM); if(!s) @@ -4649,8 +4590,8 @@ case 222: } ; break;} -case 223: -#line 1764 "Gmsh.y" +case 224: +#line 1781 "Gmsh.y" { Volume *v = FindVolume((int)yyvsp[-4].d,THEM); if(!v) @@ -4671,8 +4612,8 @@ case 223: } ; break;} -case 224: -#line 1784 "Gmsh.y" +case 225: +#line 1801 "Gmsh.y" { Surface *s; for(i=0;i<List_Nbr(yyvsp[-3].l);i++){ @@ -4690,8 +4631,8 @@ case 224: } ; break;} -case 225: -#line 1801 "Gmsh.y" +case 226: +#line 1818 "Gmsh.y" { Surface *s; for(i=0;i<List_Nbr(yyvsp[-1].l);i++){ @@ -4709,80 +4650,80 @@ case 225: } ; break;} -case 226: -#line 1826 "Gmsh.y" +case 227: +#line 1843 "Gmsh.y" { Coherence_PS(); ; break;} -case 227: -#line 1830 "Gmsh.y" +case 228: +#line 1847 "Gmsh.y" { IntersectAllSegmentsTogether(); ; break;} -case 228: -#line 1841 "Gmsh.y" -{ yyval.d = yyvsp[0].d; ; - break;} case 229: -#line 1842 "Gmsh.y" -{ yyval.d = -yyvsp[0].d; ; +#line 1858 "Gmsh.y" +{ yyval.d = yyvsp[0].d; ; break;} case 230: -#line 1846 "Gmsh.y" -{yyval.i = 1;; +#line 1859 "Gmsh.y" +{ yyval.d = -yyvsp[0].d; ; break;} case 231: -#line 1847 "Gmsh.y" -{yyval.i = 0;; +#line 1863 "Gmsh.y" +{yyval.i = 1;; break;} case 232: -#line 1848 "Gmsh.y" -{yyval.i = -1;; +#line 1864 "Gmsh.y" +{yyval.i = 0;; break;} case 233: -#line 1849 "Gmsh.y" +#line 1865 "Gmsh.y" {yyval.i = -1;; break;} case 234: -#line 1850 "Gmsh.y" +#line 1866 "Gmsh.y" {yyval.i = -1;; break;} case 235: -#line 1854 "Gmsh.y" -{ yyval.d = yyvsp[0].d; ; +#line 1867 "Gmsh.y" +{yyval.i = -1;; break;} case 236: -#line 1855 "Gmsh.y" -{ yyval.d = yyvsp[-1].d ; ; +#line 1871 "Gmsh.y" +{ yyval.d = yyvsp[0].d; ; break;} case 237: -#line 1856 "Gmsh.y" -{ yyval.d = -yyvsp[0].d ; ; +#line 1872 "Gmsh.y" +{ yyval.d = yyvsp[-1].d ; ; break;} case 238: -#line 1857 "Gmsh.y" -{ yyval.d = yyvsp[0].d; ; +#line 1873 "Gmsh.y" +{ yyval.d = -yyvsp[0].d ; ; break;} case 239: -#line 1858 "Gmsh.y" -{ yyval.d = !yyvsp[0].d ; ; +#line 1874 "Gmsh.y" +{ yyval.d = yyvsp[0].d; ; break;} case 240: -#line 1859 "Gmsh.y" -{ yyval.d = yyvsp[-2].d - yyvsp[0].d ; ; +#line 1875 "Gmsh.y" +{ yyval.d = !yyvsp[0].d ; ; break;} case 241: -#line 1860 "Gmsh.y" -{ yyval.d = yyvsp[-2].d + yyvsp[0].d ; ; +#line 1876 "Gmsh.y" +{ yyval.d = yyvsp[-2].d - yyvsp[0].d ; ; break;} case 242: -#line 1861 "Gmsh.y" -{ yyval.d = yyvsp[-2].d * yyvsp[0].d ; ; +#line 1877 "Gmsh.y" +{ yyval.d = yyvsp[-2].d + yyvsp[0].d ; ; break;} case 243: -#line 1863 "Gmsh.y" +#line 1878 "Gmsh.y" +{ yyval.d = yyvsp[-2].d * yyvsp[0].d ; ; + break;} +case 244: +#line 1880 "Gmsh.y" { if(!yyvsp[0].d) vyyerror("Division by Zero in '%g / %g'", yyvsp[-2].d, yyvsp[0].d); @@ -4790,144 +4731,144 @@ case 243: yyval.d = yyvsp[-2].d / yyvsp[0].d ; ; break;} -case 244: -#line 1869 "Gmsh.y" -{ yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d ; ; - break;} case 245: -#line 1870 "Gmsh.y" -{ yyval.d = pow(yyvsp[-2].d,yyvsp[0].d) ; ; +#line 1886 "Gmsh.y" +{ yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d ; ; break;} case 246: -#line 1871 "Gmsh.y" -{ yyval.d = yyvsp[-2].d < yyvsp[0].d ; ; +#line 1887 "Gmsh.y" +{ yyval.d = pow(yyvsp[-2].d,yyvsp[0].d) ; ; break;} case 247: -#line 1872 "Gmsh.y" -{ yyval.d = yyvsp[-2].d > yyvsp[0].d ; ; +#line 1888 "Gmsh.y" +{ yyval.d = yyvsp[-2].d < yyvsp[0].d ; ; break;} case 248: -#line 1873 "Gmsh.y" -{ yyval.d = yyvsp[-2].d <= yyvsp[0].d ; ; +#line 1889 "Gmsh.y" +{ yyval.d = yyvsp[-2].d > yyvsp[0].d ; ; break;} case 249: -#line 1874 "Gmsh.y" -{ yyval.d = yyvsp[-2].d >= yyvsp[0].d ; ; +#line 1890 "Gmsh.y" +{ yyval.d = yyvsp[-2].d <= yyvsp[0].d ; ; break;} case 250: -#line 1875 "Gmsh.y" -{ yyval.d = yyvsp[-2].d == yyvsp[0].d ; ; +#line 1891 "Gmsh.y" +{ yyval.d = yyvsp[-2].d >= yyvsp[0].d ; ; break;} case 251: -#line 1876 "Gmsh.y" -{ yyval.d = yyvsp[-2].d != yyvsp[0].d ; ; +#line 1892 "Gmsh.y" +{ yyval.d = yyvsp[-2].d == yyvsp[0].d ; ; break;} case 252: -#line 1877 "Gmsh.y" -{ yyval.d = yyvsp[-2].d && yyvsp[0].d ; ; +#line 1893 "Gmsh.y" +{ yyval.d = yyvsp[-2].d != yyvsp[0].d ; ; break;} case 253: -#line 1878 "Gmsh.y" -{ yyval.d = yyvsp[-2].d || yyvsp[0].d ; ; +#line 1894 "Gmsh.y" +{ yyval.d = yyvsp[-2].d && yyvsp[0].d ; ; break;} case 254: -#line 1879 "Gmsh.y" -{ yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d ; ; +#line 1895 "Gmsh.y" +{ yyval.d = yyvsp[-2].d || yyvsp[0].d ; ; break;} case 255: -#line 1880 "Gmsh.y" -{ yyval.d = exp(yyvsp[-1].d); ; +#line 1896 "Gmsh.y" +{ yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d ; ; break;} case 256: -#line 1881 "Gmsh.y" -{ yyval.d = log(yyvsp[-1].d); ; +#line 1897 "Gmsh.y" +{ yyval.d = exp(yyvsp[-1].d); ; break;} case 257: -#line 1882 "Gmsh.y" -{ yyval.d = log10(yyvsp[-1].d); ; +#line 1898 "Gmsh.y" +{ yyval.d = log(yyvsp[-1].d); ; break;} case 258: -#line 1883 "Gmsh.y" -{ yyval.d = sqrt(yyvsp[-1].d); ; +#line 1899 "Gmsh.y" +{ yyval.d = log10(yyvsp[-1].d); ; break;} case 259: -#line 1884 "Gmsh.y" -{ yyval.d = sin(yyvsp[-1].d); ; +#line 1900 "Gmsh.y" +{ yyval.d = sqrt(yyvsp[-1].d); ; break;} case 260: -#line 1885 "Gmsh.y" -{ yyval.d = asin(yyvsp[-1].d); ; +#line 1901 "Gmsh.y" +{ yyval.d = sin(yyvsp[-1].d); ; break;} case 261: -#line 1886 "Gmsh.y" -{ yyval.d = cos(yyvsp[-1].d); ; +#line 1902 "Gmsh.y" +{ yyval.d = asin(yyvsp[-1].d); ; break;} case 262: -#line 1887 "Gmsh.y" -{ yyval.d = acos(yyvsp[-1].d); ; +#line 1903 "Gmsh.y" +{ yyval.d = cos(yyvsp[-1].d); ; break;} case 263: -#line 1888 "Gmsh.y" -{ yyval.d = tan(yyvsp[-1].d); ; +#line 1904 "Gmsh.y" +{ yyval.d = acos(yyvsp[-1].d); ; break;} case 264: -#line 1889 "Gmsh.y" -{ yyval.d = atan(yyvsp[-1].d); ; +#line 1905 "Gmsh.y" +{ yyval.d = tan(yyvsp[-1].d); ; break;} case 265: -#line 1890 "Gmsh.y" -{ yyval.d = atan2(yyvsp[-3].d,yyvsp[-1].d); ; +#line 1906 "Gmsh.y" +{ yyval.d = atan(yyvsp[-1].d); ; break;} case 266: -#line 1891 "Gmsh.y" -{ yyval.d = sinh(yyvsp[-1].d); ; +#line 1907 "Gmsh.y" +{ yyval.d = atan2(yyvsp[-3].d,yyvsp[-1].d); ; break;} case 267: -#line 1892 "Gmsh.y" -{ yyval.d = cosh(yyvsp[-1].d); ; +#line 1908 "Gmsh.y" +{ yyval.d = sinh(yyvsp[-1].d); ; break;} case 268: -#line 1893 "Gmsh.y" -{ yyval.d = tanh(yyvsp[-1].d); ; +#line 1909 "Gmsh.y" +{ yyval.d = cosh(yyvsp[-1].d); ; break;} case 269: -#line 1894 "Gmsh.y" -{ yyval.d = fabs(yyvsp[-1].d); ; +#line 1910 "Gmsh.y" +{ yyval.d = tanh(yyvsp[-1].d); ; break;} case 270: -#line 1895 "Gmsh.y" -{ yyval.d = floor(yyvsp[-1].d); ; +#line 1911 "Gmsh.y" +{ yyval.d = fabs(yyvsp[-1].d); ; break;} case 271: -#line 1896 "Gmsh.y" -{ yyval.d = ceil(yyvsp[-1].d); ; +#line 1912 "Gmsh.y" +{ yyval.d = floor(yyvsp[-1].d); ; break;} case 272: -#line 1897 "Gmsh.y" -{ yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d); ; +#line 1913 "Gmsh.y" +{ yyval.d = ceil(yyvsp[-1].d); ; break;} case 273: -#line 1898 "Gmsh.y" +#line 1914 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d); ; break;} case 274: -#line 1899 "Gmsh.y" -{ yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ; +#line 1915 "Gmsh.y" +{ yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d); ; break;} case 275: -#line 1900 "Gmsh.y" -{ yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ; +#line 1916 "Gmsh.y" +{ yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ; break;} case 276: -#line 1909 "Gmsh.y" -{ yyval.d = yyvsp[0].d; ; +#line 1917 "Gmsh.y" +{ yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ; break;} case 277: -#line 1910 "Gmsh.y" -{ yyval.d = 3.141592653589793; ; +#line 1926 "Gmsh.y" +{ yyval.d = yyvsp[0].d; ; break;} case 278: -#line 1915 "Gmsh.y" +#line 1927 "Gmsh.y" +{ yyval.d = 3.141592653589793; ; + break;} +case 279: +#line 1932 "Gmsh.y" { TheSymbol.Name = yyvsp[0].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -4938,8 +4879,8 @@ case 278: yyval.d = *(double*)List_Pointer_Fast(pSymbol->val, 0) ; ; break;} -case 279: -#line 1926 "Gmsh.y" +case 280: +#line 1943 "Gmsh.y" { TheSymbol.Name = yyvsp[-3].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -4956,8 +4897,8 @@ case 279: } ; break;} -case 280: -#line 1943 "Gmsh.y" +case 281: +#line 1960 "Gmsh.y" { TheSymbol.Name = yyvsp[-1].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -4968,8 +4909,8 @@ case 280: yyval.d = (*(double*)List_Pointer_Fast(pSymbol->val, 0) += yyvsp[0].i) ; ; break;} -case 281: -#line 1954 "Gmsh.y" +case 282: +#line 1971 "Gmsh.y" { TheSymbol.Name = yyvsp[-4].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -4986,8 +4927,8 @@ case 281: } ; break;} -case 282: -#line 1973 "Gmsh.y" +case 283: +#line 1990 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-2].c))){ vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-2].c); @@ -5003,8 +4944,8 @@ case 282: } ; break;} -case 283: -#line 1989 "Gmsh.y" +case 284: +#line 2006 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c))){ vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-5].c); @@ -5020,8 +4961,8 @@ case 283: } ; break;} -case 284: -#line 2005 "Gmsh.y" +case 285: +#line 2022 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-3].c))){ vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-3].c); @@ -5037,8 +4978,8 @@ case 284: } ; break;} -case 285: -#line 2021 "Gmsh.y" +case 286: +#line 2038 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-6].c))){ vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-6].c); @@ -5054,16 +4995,16 @@ case 285: } ; break;} -case 286: -#line 2039 "Gmsh.y" +case 287: +#line 2056 "Gmsh.y" { ListOfDouble2_L = List_Create(2,1,sizeof(double)) ; for(d=yyvsp[-2].d ; (yyvsp[-2].d<yyvsp[0].d)?(d<=yyvsp[0].d):(d>=yyvsp[0].d) ; (yyvsp[-2].d<yyvsp[0].d)?(d+=1.):(d-=1.)) List_Add(ListOfDouble2_L, &d) ; ; break;} -case 287: -#line 2045 "Gmsh.y" +case 288: +#line 2062 "Gmsh.y" { ListOfDouble2_L = List_Create(2,1,sizeof(double)) ; if(!yyvsp[0].d || (yyvsp[-4].d<yyvsp[-2].d && yyvsp[0].d<0) || (yyvsp[-4].d>yyvsp[-2].d && yyvsp[0].d>0)){ @@ -5075,125 +5016,125 @@ case 287: List_Add(ListOfDouble2_L, &d) ; ; break;} -case 288: -#line 2059 "Gmsh.y" +case 289: +#line 2076 "Gmsh.y" { memcpy(yyval.v, yyvsp[0].v, 5*sizeof(double)) ; ; break;} -case 289: -#line 2063 "Gmsh.y" +case 290: +#line 2080 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = -yyvsp[0].v[i] ; ; break;} -case 290: -#line 2067 "Gmsh.y" +case 291: +#line 2084 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[0].v[i]; ; break;} -case 291: -#line 2071 "Gmsh.y" +case 292: +#line 2088 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[-2].v[i] - yyvsp[0].v[i] ; ; break;} -case 292: -#line 2075 "Gmsh.y" +case 293: +#line 2092 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[-2].v[i] + yyvsp[0].v[i] ; ; break;} -case 293: -#line 2081 "Gmsh.y" +case 294: +#line 2098 "Gmsh.y" { yyval.v[0]=yyvsp[-9].d; yyval.v[1]=yyvsp[-7].d; yyval.v[2]=yyvsp[-5].d; yyval.v[3]=yyvsp[-3].d; yyval.v[4]=yyvsp[-1].d; ; break;} -case 294: -#line 2085 "Gmsh.y" +case 295: +#line 2102 "Gmsh.y" { yyval.v[0]=yyvsp[-7].d; yyval.v[1]=yyvsp[-5].d; yyval.v[2]=yyvsp[-3].d; yyval.v[3]=yyvsp[-1].d; yyval.v[4]=1.0; ; break;} -case 295: -#line 2089 "Gmsh.y" -{ - yyval.v[0]=yyvsp[-5].d; yyval.v[1]=yyvsp[-3].d; yyval.v[2]=yyvsp[-1].d; yyval.v[3]=0.0; yyval.v[4]=1.0; - ; - break;} case 296: -#line 2093 "Gmsh.y" +#line 2106 "Gmsh.y" { yyval.v[0]=yyvsp[-5].d; yyval.v[1]=yyvsp[-3].d; yyval.v[2]=yyvsp[-1].d; yyval.v[3]=0.0; yyval.v[4]=1.0; ; break;} case 297: -#line 2100 "Gmsh.y" +#line 2110 "Gmsh.y" { + yyval.v[0]=yyvsp[-5].d; yyval.v[1]=yyvsp[-3].d; yyval.v[2]=yyvsp[-1].d; yyval.v[3]=0.0; yyval.v[4]=1.0; ; break;} case 298: -#line 2103 "Gmsh.y" +#line 2117 "Gmsh.y" { ; break;} case 299: -#line 2109 "Gmsh.y" +#line 2120 "Gmsh.y" { ; break;} case 300: -#line 2112 "Gmsh.y" +#line 2126 "Gmsh.y" { ; break;} case 301: -#line 2118 "Gmsh.y" +#line 2129 "Gmsh.y" { ; break;} case 302: -#line 2121 "Gmsh.y" +#line 2135 "Gmsh.y" { - yyval.l=ListOfListOfDouble_L; ; break;} case 303: -#line 2125 "Gmsh.y" +#line 2138 "Gmsh.y" { yyval.l=ListOfListOfDouble_L; ; break;} case 304: -#line 2132 "Gmsh.y" +#line 2142 "Gmsh.y" { - ListOfListOfDouble_L = List_Create(2,1,sizeof(List_T*)) ; - List_Add(ListOfListOfDouble_L, &(yyvsp[0].l)) ; + yyval.l=ListOfListOfDouble_L; ; break;} case 305: -#line 2137 "Gmsh.y" +#line 2149 "Gmsh.y" { + ListOfListOfDouble_L = List_Create(2,1,sizeof(List_T*)) ; List_Add(ListOfListOfDouble_L, &(yyvsp[0].l)) ; ; break;} case 306: -#line 2144 "Gmsh.y" +#line 2154 "Gmsh.y" { + List_Add(ListOfListOfDouble_L, &(yyvsp[0].l)) ; ; break;} case 307: -#line 2147 "Gmsh.y" +#line 2161 "Gmsh.y" +{ + ; + break;} +case 308: +#line 2164 "Gmsh.y" { ListOfDouble_L = List_Create(2,1,sizeof(double)) ; List_Add(ListOfDouble_L, &(yyvsp[0].d)) ; yyval.l=ListOfDouble_L; ; break;} -case 308: -#line 2153 "Gmsh.y" +case 309: +#line 2170 "Gmsh.y" { ListOfDouble_L = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = yyvsp[-2].c ; @@ -5209,21 +5150,21 @@ case 308: yyval.l=ListOfDouble_L; ; break;} -case 309: -#line 2168 "Gmsh.y" +case 310: +#line 2185 "Gmsh.y" { yyval.l=ListOfDouble_L; ; break;} -case 310: -#line 2176 "Gmsh.y" +case 311: +#line 2193 "Gmsh.y" { ListOfDouble_L = List_Create(2,1,sizeof(double)) ; List_Add(ListOfDouble_L, &(yyvsp[0].d)) ; ; break;} -case 311: -#line 2181 "Gmsh.y" +case 312: +#line 2198 "Gmsh.y" { ListOfDouble_L = List_Create(2,1,sizeof(double)) ; for(i=0 ; i<List_Nbr(ListOfDouble2_L) ; i++){ @@ -5233,8 +5174,8 @@ case 311: List_Delete(ListOfDouble2_L); ; break;} -case 312: -#line 2190 "Gmsh.y" +case 313: +#line 2207 "Gmsh.y" { ListOfDouble_L = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = yyvsp[-2].c ; @@ -5247,14 +5188,14 @@ case 312: } ; break;} -case 313: -#line 2202 "Gmsh.y" +case 314: +#line 2219 "Gmsh.y" { List_Add(ListOfDouble_L, &(yyvsp[0].d)) ; ; break;} -case 314: -#line 2206 "Gmsh.y" +case 315: +#line 2223 "Gmsh.y" { for(i=0 ; i<List_Nbr(ListOfDouble2_L) ; i++){ List_Read(ListOfDouble2_L, i, &d) ; @@ -5263,8 +5204,8 @@ case 314: List_Delete(ListOfDouble2_L); ; break;} -case 315: -#line 2214 "Gmsh.y" +case 316: +#line 2231 "Gmsh.y" { TheSymbol.Name = yyvsp[-2].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -5276,34 +5217,34 @@ case 315: } ; break;} -case 316: -#line 2228 "Gmsh.y" +case 317: +#line 2245 "Gmsh.y" { yyval.u = PACK_COLOR((int)yyvsp[-7].d, (int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d); ; break;} -case 317: -#line 2232 "Gmsh.y" +case 318: +#line 2249 "Gmsh.y" { yyval.u = PACK_COLOR((int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d, 255); ; break;} -case 318: -#line 2236 "Gmsh.y" +case 319: +#line 2253 "Gmsh.y" { yyval.u = Get_ColorForString(ColorString, (int)yyvsp[-1].d, yyvsp[-3].c, &flag); if(flag) vyyerror("Unknown Color '%s'", yyvsp[-3].c); ; break;} -case 319: -#line 2241 "Gmsh.y" +case 320: +#line 2258 "Gmsh.y" { yyval.u = Get_ColorForString(ColorString, -1, yyvsp[0].c, &flag); if(flag) vyyerror("Unknown Color '%s'", yyvsp[0].c); ; break;} -case 320: -#line 2246 "Gmsh.y" +case 321: +#line 2263 "Gmsh.y" { if(!(pColCat = Get_ColorOptionCategory(yyvsp[-4].c))){ vyyerror("Unknown Color Option Class '%s'", yyvsp[-4].c); @@ -5320,14 +5261,14 @@ case 320: } ; break;} -case 321: -#line 2265 "Gmsh.y" +case 322: +#line 2282 "Gmsh.y" { yyval.l = ListOfColor_L; ; break;} -case 322: -#line 2269 "Gmsh.y" +case 323: +#line 2286 "Gmsh.y" { if(!ListOfColor_L) ListOfColor_L = List_Create(256,10,sizeof(unsigned int)) ; @@ -5343,8 +5284,8 @@ case 322: yyval.l = ListOfColor_L; ; break;} -case 323: -#line 2287 "Gmsh.y" +case 324: +#line 2304 "Gmsh.y" { if(!ListOfColor_L) ListOfColor_L = List_Create(256,10,sizeof(unsigned int)) ; @@ -5353,26 +5294,26 @@ case 323: List_Add(ListOfColor_L, &(yyvsp[0].u)) ; ; break;} -case 324: -#line 2295 "Gmsh.y" +case 325: +#line 2312 "Gmsh.y" { List_Add(ListOfColor_L, &(yyvsp[0].u)) ; ; break;} -case 325: -#line 2302 "Gmsh.y" +case 326: +#line 2319 "Gmsh.y" { yyval.c = yyvsp[0].c; ; break;} -case 326: -#line 2306 "Gmsh.y" +case 327: +#line 2323 "Gmsh.y" { yyval.c = yyvsp[-1].c; ; break;} -case 327: -#line 2310 "Gmsh.y" +case 328: +#line 2327 "Gmsh.y" { for(i = 0 ; i<List_Nbr(ListOfDouble_L) ; i++){ if(!i){ @@ -5398,7 +5339,7 @@ case 327: break;} } /* the action file gets copied in in place of this dollarsign */ -#line 543 "/usr/lib/bison.simple" +#line 498 "/usr/local/share/bison.simple" yyvsp -= yylen; yyssp -= yylen; @@ -5593,32 +5534,8 @@ yyerrhandle: yystate = yyn; goto yynewstate; - - yyacceptlab: - /* YYACCEPT comes here. */ - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); -#endif - } - return 0; - - yyabortlab: - /* YYABORT comes here. */ - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); -#endif - } - return 1; } -#line 2334 "Gmsh.y" +#line 2351 "Gmsh.y" void InitSymbols(void){ diff --git a/Parser/Gmsh.tab.cpp.h b/Parser/Gmsh.tab.cpp.h index 45db0a28c48c659082cf67d45d1e8af116bd2d98..7c20f6b17be6286320be45f50ba0ea1d00e2253b 100644 --- a/Parser/Gmsh.tab.cpp.h +++ b/Parser/Gmsh.tab.cpp.h @@ -7,167 +7,167 @@ typedef union { Shape s; List_T *l; } YYSTYPE; -#define tDOUBLE 257 -#define tSTRING 258 -#define tBIGSTR 259 -#define tEND 260 -#define tAFFECT 261 -#define tDOTS 262 -#define tPi 263 -#define tExp 264 -#define tLog 265 -#define tLog10 266 -#define tSqrt 267 -#define tSin 268 -#define tAsin 269 -#define tCos 270 -#define tAcos 271 -#define tTan 272 -#define tRand 273 -#define tAtan 274 -#define tAtan2 275 -#define tSinh 276 -#define tCosh 277 -#define tTanh 278 -#define tFabs 279 -#define tFloor 280 -#define tCeil 281 -#define tFmod 282 -#define tModulo 283 -#define tHypot 284 -#define tPrintf 285 -#define tSprintf 286 -#define tDraw 287 -#define tPoint 288 -#define tCircle 289 -#define tEllipsis 290 -#define tLine 291 -#define tSurface 292 -#define tSpline 293 -#define tVolume 294 -#define tCharacteristic 295 -#define tLength 296 -#define tParametric 297 -#define tElliptic 298 -#define tPlane 299 -#define tRuled 300 -#define tTransfinite 301 -#define tComplex 302 -#define tPhysical 303 -#define tUsing 304 -#define tBump 305 -#define tProgression 306 -#define tRotate 307 -#define tTranslate 308 -#define tSymmetry 309 -#define tDilate 310 -#define tExtrude 311 -#define tDuplicata 312 -#define tLoop 313 -#define tRecombine 314 -#define tDelete 315 -#define tCoherence 316 -#define tIntersect 317 -#define tAttractor 318 -#define tLayers 319 -#define tScalarTetrahedron 320 -#define tVectorTetrahedron 321 -#define tTensorTetrahedron 322 -#define tScalarTriangle 323 -#define tVectorTriangle 324 -#define tTensorTriangle 325 -#define tScalarLine 326 -#define tVectorLine 327 -#define tTensorLine 328 -#define tScalarPoint 329 -#define tVectorPoint 330 -#define tTensorPoint 331 -#define tBSpline 332 -#define tNurbs 333 -#define tOrder 334 -#define tWith 335 -#define tBounds 336 -#define tKnots 337 -#define tColor 338 -#define tColorTable 339 -#define tFor 340 -#define tIn 341 -#define tEndFor 342 -#define tIf 343 -#define tEndIf 344 -#define tExit 345 -#define tReturn 346 -#define tCall 347 -#define tFunction 348 -#define tMesh 349 -#define tB_SPLINE_SURFACE_WITH_KNOTS 350 -#define tB_SPLINE_CURVE_WITH_KNOTS 351 -#define tCARTESIAN_POINT 352 -#define tTRUE 353 -#define tFALSE 354 -#define tUNSPECIFIED 355 -#define tU 356 -#define tV 357 -#define tEDGE_CURVE 358 -#define tVERTEX_POINT 359 -#define tORIENTED_EDGE 360 -#define tPLANE 361 -#define tFACE_OUTER_BOUND 362 -#define tEDGE_LOOP 363 -#define tADVANCED_FACE 364 -#define tVECTOR 365 -#define tDIRECTION 366 -#define tAXIS2_PLACEMENT_3D 367 -#define tISO 368 -#define tENDISO 369 -#define tENDSEC 370 -#define tDATA 371 -#define tHEADER 372 -#define tFILE_DESCRIPTION 373 -#define tFILE_SCHEMA 374 -#define tFILE_NAME 375 -#define tMANIFOLD_SOLID_BREP 376 -#define tCLOSED_SHELL 377 -#define tADVANCED_BREP_SHAPE_REPRESENTATION 378 -#define tFACE_BOUND 379 -#define tCYLINDRICAL_SURFACE 380 -#define tCONICAL_SURFACE 381 -#define tCIRCLE 382 -#define tTRIMMED_CURVE 383 -#define tGEOMETRIC_SET 384 -#define tCOMPOSITE_CURVE_SEGMENT 385 -#define tCONTINUOUS 386 -#define tCOMPOSITE_CURVE 387 -#define tTOROIDAL_SURFACE 388 -#define tPRODUCT_DEFINITION 389 -#define tPRODUCT_DEFINITION_SHAPE 390 -#define tSHAPE_DEFINITION_REPRESENTATION 391 -#define tELLIPSE 392 -#define tTrimmed 393 -#define tSolid 394 -#define tEndSolid 395 -#define tVertex 396 -#define tFacet 397 -#define tNormal 398 -#define tOuter 399 -#define tLoopSTL 400 -#define tEndLoop 401 -#define tEndFacet 402 -#define tAFFECTPLUS 403 -#define tAFFECTMINUS 404 -#define tAFFECTTIMES 405 -#define tAFFECTDIVIDE 406 -#define tOR 407 -#define tAND 408 -#define tEQUAL 409 -#define tNOTEQUAL 410 -#define tAPPROXEQUAL 411 -#define tLESSOREQUAL 412 -#define tGREATEROREQUAL 413 -#define tCROSSPRODUCT 414 -#define tPLUSPLUS 415 -#define tMINUSMINUS 416 -#define UNARYPREC 417 +#define tDOUBLE 258 +#define tSTRING 259 +#define tBIGSTR 260 +#define tEND 261 +#define tAFFECT 262 +#define tDOTS 263 +#define tPi 264 +#define tExp 265 +#define tLog 266 +#define tLog10 267 +#define tSqrt 268 +#define tSin 269 +#define tAsin 270 +#define tCos 271 +#define tAcos 272 +#define tTan 273 +#define tRand 274 +#define tAtan 275 +#define tAtan2 276 +#define tSinh 277 +#define tCosh 278 +#define tTanh 279 +#define tFabs 280 +#define tFloor 281 +#define tCeil 282 +#define tFmod 283 +#define tModulo 284 +#define tHypot 285 +#define tPrintf 286 +#define tSprintf 287 +#define tDraw 288 +#define tPoint 289 +#define tCircle 290 +#define tEllipsis 291 +#define tLine 292 +#define tSurface 293 +#define tSpline 294 +#define tVolume 295 +#define tCharacteristic 296 +#define tLength 297 +#define tParametric 298 +#define tElliptic 299 +#define tPlane 300 +#define tRuled 301 +#define tTransfinite 302 +#define tComplex 303 +#define tPhysical 304 +#define tUsing 305 +#define tBump 306 +#define tProgression 307 +#define tRotate 308 +#define tTranslate 309 +#define tSymmetry 310 +#define tDilate 311 +#define tExtrude 312 +#define tDuplicata 313 +#define tLoop 314 +#define tRecombine 315 +#define tDelete 316 +#define tCoherence 317 +#define tIntersect 318 +#define tAttractor 319 +#define tLayers 320 +#define tScalarTetrahedron 321 +#define tVectorTetrahedron 322 +#define tTensorTetrahedron 323 +#define tScalarTriangle 324 +#define tVectorTriangle 325 +#define tTensorTriangle 326 +#define tScalarLine 327 +#define tVectorLine 328 +#define tTensorLine 329 +#define tScalarPoint 330 +#define tVectorPoint 331 +#define tTensorPoint 332 +#define tBSpline 333 +#define tNurbs 334 +#define tOrder 335 +#define tWith 336 +#define tBounds 337 +#define tKnots 338 +#define tColor 339 +#define tColorTable 340 +#define tFor 341 +#define tIn 342 +#define tEndFor 343 +#define tIf 344 +#define tEndIf 345 +#define tExit 346 +#define tReturn 347 +#define tCall 348 +#define tFunction 349 +#define tMesh 350 +#define tB_SPLINE_SURFACE_WITH_KNOTS 351 +#define tB_SPLINE_CURVE_WITH_KNOTS 352 +#define tCARTESIAN_POINT 353 +#define tTRUE 354 +#define tFALSE 355 +#define tUNSPECIFIED 356 +#define tU 357 +#define tV 358 +#define tEDGE_CURVE 359 +#define tVERTEX_POINT 360 +#define tORIENTED_EDGE 361 +#define tPLANE 362 +#define tFACE_OUTER_BOUND 363 +#define tEDGE_LOOP 364 +#define tADVANCED_FACE 365 +#define tVECTOR 366 +#define tDIRECTION 367 +#define tAXIS2_PLACEMENT_3D 368 +#define tISO 369 +#define tENDISO 370 +#define tENDSEC 371 +#define tDATA 372 +#define tHEADER 373 +#define tFILE_DESCRIPTION 374 +#define tFILE_SCHEMA 375 +#define tFILE_NAME 376 +#define tMANIFOLD_SOLID_BREP 377 +#define tCLOSED_SHELL 378 +#define tADVANCED_BREP_SHAPE_REPRESENTATION 379 +#define tFACE_BOUND 380 +#define tCYLINDRICAL_SURFACE 381 +#define tCONICAL_SURFACE 382 +#define tCIRCLE 383 +#define tTRIMMED_CURVE 384 +#define tGEOMETRIC_SET 385 +#define tCOMPOSITE_CURVE_SEGMENT 386 +#define tCONTINUOUS 387 +#define tCOMPOSITE_CURVE 388 +#define tTOROIDAL_SURFACE 389 +#define tPRODUCT_DEFINITION 390 +#define tPRODUCT_DEFINITION_SHAPE 391 +#define tSHAPE_DEFINITION_REPRESENTATION 392 +#define tELLIPSE 393 +#define tTrimmed 394 +#define tSolid 395 +#define tEndSolid 396 +#define tVertex 397 +#define tFacet 398 +#define tNormal 399 +#define tOuter 400 +#define tLoopSTL 401 +#define tEndLoop 402 +#define tEndFacet 403 +#define tAFFECTPLUS 404 +#define tAFFECTMINUS 405 +#define tAFFECTTIMES 406 +#define tAFFECTDIVIDE 407 +#define tOR 408 +#define tAND 409 +#define tEQUAL 410 +#define tNOTEQUAL 411 +#define tAPPROXEQUAL 412 +#define tLESSOREQUAL 413 +#define tGREATEROREQUAL 414 +#define tCROSSPRODUCT 415 +#define tPLUSPLUS 416 +#define tMINUSMINUS 417 +#define UNARYPREC 418 extern YYSTYPE yylval; diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index 82d8f6c3877d6ddd35181e78b3645408c15773e1..e67fe760cd50165ba41ff415a59ce38e09c54f40 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -1,6 +1,6 @@ %{ -// $Id: Gmsh.y,v 1.63 2001-02-12 17:38:03 geuzaine Exp $ +// $Id: Gmsh.y,v 1.64 2001-02-17 22:09:00 geuzaine Exp $ #include <stdarg.h> @@ -970,6 +970,23 @@ Affectation : } } + /* -------- ColorTable -------- */ + + | tSTRING '.' tColorTable tAFFECT ListOfColor tEND + { + ColorTable *ct = Get_ColorTable(0); + if(!ct) + vyyerror("View[%d] does not exist", 0); + else{ + ct->size = List_Nbr($5); + if(ct->size > COLORTABLE_NBMAX_COLOR) + vyyerror("Too Many (%d>%d) Colors in View[%d].ColorTable", + ct->size, COLORTABLE_NBMAX_COLOR, 0); + else + for(i=0 ; i<ct->size ; i++) List_Read($5, i, &ct->table[i]); + } + } + | tSTRING '[' FExpr ']' '.' tColorTable tAFFECT ListOfColor tEND { ColorTable *ct = Get_ColorTable((int)$3); diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp index 740343c59b0ef58ab2a8bb726b820ce1b2c281c2..b44fde36a1ab1bfd0afe86373d33147418ea7dd7 100644 --- a/Parser/Gmsh.yy.cpp +++ b/Parser/Gmsh.yy.cpp @@ -2,7 +2,7 @@ /* A lexical scanner generated by flex */ /* Scanner skeleton version: - * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.71 2001-02-12 17:38:03 geuzaine Exp $ + * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.72 2001-02-17 22:09:00 geuzaine Exp $ */ #define FLEX_SCANNER @@ -978,7 +978,7 @@ char *yytext; #define INITIAL 0 #line 2 "Gmsh.l" -// $Id: Gmsh.yy.cpp,v 1.71 2001-02-12 17:38:03 geuzaine Exp $ +// $Id: Gmsh.yy.cpp,v 1.72 2001-02-17 22:09:00 geuzaine Exp $ #include <stdio.h> #include <stdlib.h> @@ -1169,7 +1169,7 @@ YY_MALLOC_DECL YY_DECL { register yy_state_type yy_current_state; - register char *yy_cp = NULL, *yy_bp = NULL; + register char *yy_cp, *yy_bp; register int yy_act; #line 63 "Gmsh.l" diff --git a/Parser/OpenFile.cpp b/Parser/OpenFile.cpp index 41fdd53f0a2790394f7d81647998b7bd6396fc4b..ee5a385c41d01460bd3084cee5b4729430d24f7e 100644 --- a/Parser/OpenFile.cpp +++ b/Parser/OpenFile.cpp @@ -1,4 +1,4 @@ -// $Id: OpenFile.cpp,v 1.5 2001-01-12 13:29:04 geuzaine Exp $ +// $Id: OpenFile.cpp,v 1.6 2001-02-17 22:09:00 geuzaine Exp $ #include "Gmsh.h" #include "Const.h" #include "Context.h" @@ -33,11 +33,11 @@ void ParseFile(char *f){ yyerrorstate=0; yylineno=1; - if(!(yyin = fopen(yyname,"r"))){ - //Msg(STATUS2, "File '%s' Does not Exist", f); + if(!(yyin = fopen(yyname,"r"))) return; - } + Msg(STATUS2, "Loading '%s'", yyname); + fpos_t position; fgetpos(yyin, &position); fgets(String, sizeof(String), yyin) ; @@ -57,10 +57,11 @@ void ParseFile(char *f){ while(!feof(yyin)) yyparse(); } fclose(yyin); + + Msg(STATUS2, "Loaded '%s'", yyname); } void MergeProblem(char *name){ - Msg(INFO, "Merging '%s'",name); ParseFile(name); if (yyerrorstate) return; @@ -106,8 +107,6 @@ void OpenProblem(char *name){ #endif } - Msg(INFO, "Opening '%s'", CTX.filename); - ParseFile(CTX.filename); ApplyLcFactor(THEM); diff --git a/README.bugs b/README.bugs new file mode 100644 index 0000000000000000000000000000000000000000..ac9ac9ebbf37294f3dccdf770384be99d2af9a01 --- /dev/null +++ b/README.bugs @@ -0,0 +1,16 @@ +$Id: README.bugs,v 1.1 2001-02-17 22:08:40 geuzaine Exp $ + +* gmsh demos/piece.geo +mailler en 2D +mailler en 1D +crash + +--> probleme d'initialisation: Curve *c->Extrude n'est pas NULL dans +Extrude_Mesh alors qu'il devrait + +* Si la coherence des surfaces n'est pas recouvree en une etape, et +qu'on fait une seconde passe qui marche, les volumes ne sont pas +retrouves-< pas de maillage final. + +* il faudrait initialiser les statistiques qd on loade un maillage +avec Read_Mesh. diff --git a/README.cvs b/README.cvs new file mode 100644 index 0000000000000000000000000000000000000000..c32be6c9c762596bba6276a6efcbe9420b105057 --- /dev/null +++ b/README.cvs @@ -0,0 +1,17 @@ + +To download the latset full source by CVS, type + +cvs -d :pserver:YOUR_NAME@elap57.montefiore.ulg.ac.be:/usr/users57/cvs-master COMMAND + +where YOUR_NAME is your username on elap57.montefiore.ulg.ac.be, and where COMMAND is +first 'login' (you will be prompted for a password), and then 'checkout gmsh'. When +this is done, you can use 'logout' to exit. + +To update your local version, type + +cvs update -d + +To submit your changes, type + +cvs commit + diff --git a/README.devel b/README.devel new file mode 100644 index 0000000000000000000000000000000000000000..2bd33bb815225cca5edac643fc91429de5892960 --- /dev/null +++ b/README.devel @@ -0,0 +1,28 @@ + +Some easy rules to make the code easy to read/debug/maintain: + +- please enable full warnings for your compiler (e.g. gcc -Wall) +- always use Msg() to print information/errors/etc. +- indent your files and, if working on Windows, suppress the tabs (untabify) + + +How to add an option in the graphical user interface? + +1) Create the option in the Context_T class (Common/Context.h) if it's +a classical option, or in the View class (Common/View.h) if it's a +post-processing view-dependent option. + +2) In Common/DefaultOptions.h, give a name (for the parser to be able +to access it), a reference to a handling routine (i.e. opt_XXX) and a +default value for this option. + +3) Create the handling routine opt_XXX in Common/Options.cpp. + +4) Create the associated widget in Fltk/GUI.cpp + +5) If no special callback is to be associated to the widget, add the +handling routine opt_XXX to the OK callback for the corresponding +option panel (in Fltk/Callbacks.cpp). + +6) That's it! + diff --git a/README.txt b/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..65e9784eb115fe57febe01df52b839237d5401c2 --- /dev/null +++ b/README.txt @@ -0,0 +1,27 @@ +$Id: README.txt,v 1.1 2001-02-17 22:08:41 geuzaine Exp $ + +For Windows versions of Gmsh only: +================================== + +1) About cygwin1.dll: + +If you plan to use other programs than Gmsh which depend on the +cygwin1.dll library, please move the library from this directory to +the Windows system directory (usually C:\Windows\System\). Failing to +do so will result in incorrect behaviour of all applications sharing +the library. + +2) About opengl32.dll: + +If a version of the OpenGL library opengl32.dll is already installed +on your system, you can remove the version shipped with Gmsh. + +3) About configuration files: + +Gmsh saves session information and default options on disk. The +directory in which these files are saved is (in that order) $HOME (if +the HOME variable is defined, e.g. in your autoexec.bat file), $TEMP +(if TEMP is defined) or $TMP (if TMP is defined). If none of these +variables are defined, Gmsh will try to save/load its configuration +files from the current working directory. + diff --git a/benchmarks/2d/Square-01.geo b/benchmarks/2d/Square-01.geo index f480020abebfa68dff488b163d3d59b42019fee4..4f234fc01ac972173fc7c9de2e23a2e7923c3d25 100644 --- a/benchmarks/2d/Square-01.geo +++ b/benchmarks/2d/Square-01.geo @@ -12,4 +12,5 @@ Line(3) = {1,4}; Line(4) = {4,3}; Line Loop(5) = {1,2,3,4}; Plane Surface(6) = {5}; -Attractor Point(0.05,0.05,2) = {2}; +Attractor Point{2} = {0.05,0.05,2}; +Mesh.Algorithm = 2; diff --git a/benchmarks/2d/Square-Attr1.geo b/benchmarks/2d/Square-Attr1.geo index 9f4e6aa1d3281cec1970fbe2665f7cfa07f2c428..60882900118181db67f1223df2559234fca66282 100644 --- a/benchmarks/2d/Square-Attr1.geo +++ b/benchmarks/2d/Square-Attr1.geo @@ -16,3 +16,4 @@ Point(11) = {0.5,0.5,-1,lc}; Point(22) = {0.5,0.5,1,lc}; Line(5) = {11,22}; Attractor Line{5} = {1,0.1,7}; +Mesh.Algorithm = 2; diff --git a/benchmarks/2d/Square-Attr2.geo b/benchmarks/2d/Square-Attr2.geo index 1ce0dea44120c9a9d61b2304cb591847027de2c8..31609c461c19c30080a3bb81cfa868be10f2d811 100644 --- a/benchmarks/2d/Square-Attr2.geo +++ b/benchmarks/2d/Square-Attr2.geo @@ -33,3 +33,4 @@ Line(13) = {17,18}; Line(14) = {18,19}; Line(15) = {19,20}; Attractor Line{7,8,9,10,11,12,13,14,15} = {.1,0.01,10} ; +Mesh.Algorithm = 2; diff --git a/benchmarks/2d/Square-Attr3.geo b/benchmarks/2d/Square-Attr3.geo index f389baf461fb1272a120a6899fdc695d99bfb72f..a71a2146de840f5100ad4377cfe075bdb53cdfaf 100644 --- a/benchmarks/2d/Square-Attr3.geo +++ b/benchmarks/2d/Square-Attr3.geo @@ -14,3 +14,5 @@ Line Loop(5) = {1,2,3,4}; Plane Surface(6) = {5}; Line(5) = {3,1}; Attractor Line{5} = {1,0.01,3}; +Mesh.Algorithm = 2; + diff --git a/benchmarks/2d/Square-Attr4.geo b/benchmarks/2d/Square-Attr4.geo index 309e44088edf6783b4d5bcf101fce0b76403692f..e15277cc7318b8a048b6929fcc5ee66e98b9ab63 100644 --- a/benchmarks/2d/Square-Attr4.geo +++ b/benchmarks/2d/Square-Attr4.geo @@ -14,3 +14,5 @@ Point(55) = {0.2,.5,0,lc}; Line Loop(5) = {1,2,3,4}; Plane Surface(6) = {5}; Attractor Point {55} = {.01,.1,3.0}; +Mesh.Algorithm = 2; + diff --git a/doc/Changelog b/doc/Changelog index ccc013ade521ce1c865b166f8c6eea7fc2f4892d..762651fb24703a69d9bdf0e2a1e666542a49029b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,13 @@ +New in 1.14: Corrected a few bugs in the GUI (most of them were +introduced in 1.13); Added interactive color selection; Made the +option database bidirectional (i.e. scripts now correctly update the +GUI); Default options can now be saved and automatically reloaded at +startup; Made some changes to the scripting syntax +(PostProcessing.View[n] becomes View[n]; Offset0 becomes OffsetX, +etc.); Corrected the handling of simple triangular surfaces with large +characteristic lengths in the 2D isotropic algorithm; Added an ascii +to binary view converter (gmsh -convert file file); + New in 1.13: Added jpeg output on Windows; New in 1.12: Corrected vector lines in the post-processing parsed @@ -30,32 +40,26 @@ in 2D mesh when meshing in the mean plane; New in 0.996: Arrays of variables; Enhanced Printf and Sprintf; Simplified options (suppression of option arrays). -New in 0.995: -* Totally rewritten geometrical database (performance has been -drastically improved for all geometrical transformations, and most -notably for extrusion). <font color=red> As a consequence, the -internal numbering of geometrical entities has changed: this will -cause incompatibilities with old .geo files, and will require a -partial rewrite of your old .geo files if these files made use of -geometrical transformations</font>. The syntax of the .geo file has -also been clarified. Many additions for scripting purposes. -* New extrusion mesh generator. Preliminary version of the coupling between -extruded and Delaunay meshes. -* New option and procedural database. All interactive operations can be -scripted in the input files. See the last example in the tutorial for -an example. -* Many stability enhancements in the 2D and 3D mesh -algorithms. Performance boost of the 3D algorithm. Gmsh is still slow, -but the performance becomes acceptable. An average 1000 -tetrahedra/second is obtained on a 600Mhz computer for a mesh of -one million tetrahedra. -* New anisotropic 2D mesh algorithm. -* New (ascii and binary) post-processing file format and clarified mesh -file format. -* New handling for interactive rotations (trackball mode). -* New didactic interactive mesh construction (watch the Delaunay -algorithm in real time on complex geometries: that's exciting ;-) -* And many, many bug fixes and cleanings... +New in 0.995: Totally rewritten geometrical database (performance has +been drastically improved for all geometrical transformations, and +most notably for extrusion). As a consequence, the internal numbering +of geometrical entities has changed: this will cause incompatibilities +with old .geo files, and will require a partial rewrite of your old +.geo files if these files made use of geometrical transformations. The +syntax of the .geo file has also been clarified. Many additions for +scripting purposes. New extrusion mesh generator. Preliminary version +of the coupling between extruded and Delaunay meshes. New option and +procedural database. All interactive operations can be scripted in the +input files. See the last example in the tutorial for an example. Many +stability enhancements in the 2D and 3D mesh algorithms. Performance +boost of the 3D algorithm. Gmsh is still slow, but the performance +becomes acceptable. An average 1000 tetrahedra/second is obtained on a +600Mhz computer for a mesh of one million tetrahedra. New anisotropic +2D mesh algorithm. New (ascii and binary) post-processing file format +and clarified mesh file format. New handling for interactive rotations +(trackball mode). New didactic interactive mesh construction (watch +the Delaunay algorithm in real time on complex geometries: that's +exciting ;-). And many, many bug fixes and cleanings... New in 0.992: corrected recombined extrusion; corrected ellipses; added simple automatic animation of post-processing maps; fixed various bugs. diff --git a/tutorial/t3.geo b/tutorial/t3.geo index 010054d769add13f04d0e095d9c5f0e103db322d..b92810d866b154f91774226c6ac248f2a3ef13a2 100644 --- a/tutorial/t3.geo +++ b/tutorial/t3.geo @@ -43,9 +43,9 @@ Geometry.Color.Points = Orange; General.Axes = 0; General.Trackball = 0; -General.Rotation0 = 10; -General.Rotation1 = 70; -General.Translation0 = -0.1; +General.RotationX = 10; +General.RotationY = 70; +General.TranslationX = -0.1; // Note: all colors can be defined literally or numerically, i.e. // 'General.Color.Background = Red' is equivalent to diff --git a/tutorial/t8.geo b/tutorial/t8.geo index 55ff55bd02ee1aef0766ce91e4ad0d726031a4c0..47298d647245497dd8feed6186213c8f8d83290d 100644 --- a/tutorial/t8.geo +++ b/tutorial/t8.geo @@ -19,9 +19,9 @@ Include "view1.pos" ; // 'File->Save_Options_as')... General.Trackball = 0 ; -General.Rotation0 = 0 ; -General.Rotation1 = 0 ; -General.Rotation2 = 0 ; +General.RotationX = 0 ; +General.RotationY = 0 ; +General.RotationZ = 0 ; General.Color.Background = White ; General.Color.Text = Black ; General.Orthographic = 0 ; @@ -31,8 +31,8 @@ General.Axes = 0 ; View[0].Name = "This is a very stupid demonstration..." ; View[0].IntervalsType = 2 ; -View[0].Offset2 = 0.05 ; -View[0].Raise2 = 0 ; +View[0].OffsetZ = 0.05 ; +View[0].RaiseZ = 0 ; View[0].Light = 1 ; View[1].Name = "...of Gmsh's scripting capabilities" ; @@ -54,22 +54,22 @@ For num In {1:255} t = (View[0].TimeStep < View[0].NbTimeStep-1) ? t+1 : 0 ; - View[0].Raise2 += 0.001*t ; + View[0].RaiseZ += 0.001*t ; If (num == 3) // We want to use mpeg_encode to create a nice 320x240 animation // for all frames when num==3: - General.Viewport2 = 320 ; - General.Viewport3 = 240 ; + General.GraphicsWidth = 320 ; + General.GraphicsHeight = 240 ; EndIf // It is possible to nest loops: For num2 In {1:50} - General.Rotation0 += 10 ; - General.Rotation1 = General.Rotation0 / 3 ; - General.Rotation2 += 0.1 ; + General.RotationX += 10 ; + General.RotationY = General.RotationX / 3 ; + General.RotationZ += 0.1 ; Sleep 0.01; // sleep for 0.01 second Draw; // draw the scene diff --git a/utils/tut2html b/utils/tut2html index b67e85a9df4414a05e62f3ccbb26a5ffc012a884..f436a3dcfdf4c858c493244cf17fdbb53390a579 100644 --- a/utils/tut2html +++ b/utils/tut2html @@ -6,7 +6,7 @@ #fi #enscript -Ecpp --color -Whtml --toc -pt.html $* -enscript -Ecpp --color -Whtml --toc -pt.html README *.geo +enscript -Ecpp --color -Whtml --toc -pt.html README.txt *.geo cat t.html | \ sed "s/<FONT COLOR=\"#BC8F8F\"><B>//g" | \