diff --git a/Common/Colors.h b/Common/Colors.h
index 3fa7f9a40dd375993dffb23b71a43a5fa4f5af1c..489ca9a6b99f61ea242ef782c611e2cc38d0b58b 100644
--- a/Common/Colors.h
+++ b/Common/Colors.h
@@ -683,8 +683,7 @@ StringX4Int ColorString[] = {
   { NULL                       ,  0  ,   0,   0, 255 }
 } ;
 
-int Get_ColorForString(StringX4Int SX4I[], int alpha, 
-		       char * string, int * FlagError);
-
+int Get_ColorForString(StringX4Int SX4I[], int alpha, const char *string,
+		       int *FlagError);
 
 #endif
diff --git a/Common/CommandLine.cpp b/Common/CommandLine.cpp
index ed0bd9001ee923d88a7821d0ae34a8965d66656d..1e3b8745e7a76af71d66a8183473f69f4cfea9b2 100644
--- a/Common/CommandLine.cpp
+++ b/Common/CommandLine.cpp
@@ -1,4 +1,4 @@
-// $Id: CommandLine.cpp,v 1.118 2008-02-22 07:49:38 geuzaine Exp $
+// $Id: CommandLine.cpp,v 1.119 2008-02-23 15:30:06 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -60,15 +60,16 @@ char gmsh_email[]     = "Mailing list   : gmsh@geuz.org" ;
 int Get_GmshMajorVersion(){ return GMSH_MAJOR_VERSION; }
 int Get_GmshMinorVersion(){ return GMSH_MINOR_VERSION; }
 int Get_GmshPatchVersion(){ return GMSH_PATCH_VERSION; }
-char *Get_GmshExtraVersion(){ return GMSH_EXTRA_VERSION; }
-char *Get_GmshVersion(){ return GMSH_VERSION; }
-char *Get_GmshBuildDate(){ return GMSH_DATE; }
-char *Get_GmshBuildHost(){ return GMSH_HOST; }
-char *Get_GmshPackager(){ return GMSH_PACKAGER; }
-char *Get_GmshBuildOS(){ return GMSH_OS; }
-char *Get_GmshShortLicense(){ return GMSH_SHORT_LICENSE; }
+const char *Get_GmshExtraVersion(){ return GMSH_EXTRA_VERSION; }
+const char *Get_GmshVersion(){ return GMSH_VERSION; }
+const char *Get_GmshBuildDate(){ return GMSH_DATE; }
+const char *Get_GmshBuildHost(){ return GMSH_HOST; }
+const char *Get_GmshPackager(){ return GMSH_PACKAGER; }
+const char *Get_GmshBuildOS(){ return GMSH_OS; }
+const char *Get_GmshShortLicense(){ return GMSH_SHORT_LICENSE; }
 
-void Print_Usage(char *name){
+void Print_Usage(const char *name)
+{
   // If you make changes in this routine, please also change the
   // texinfo documentation (doc/texinfo/command_line.texi) as well as
   // the man page (doc/gmsh.1)
diff --git a/Common/CommandLine.h b/Common/CommandLine.h
index 5d20c032169cdcbae1d04b59a3c262f546a0e332..c7ae2130aac6fcc1ac4126bb8047b8085a32168f 100644
--- a/Common/CommandLine.h
+++ b/Common/CommandLine.h
@@ -25,19 +25,19 @@ extern char gmsh_date[], gmsh_host[], gmsh_packager[], gmsh_url[];
 extern char gmsh_email[], gmsh_gui[], gmsh_options[], gmsh_license[];
 
 void Get_Options(int argc, char *argv[]);
-void Print_Usage(char *name);
+void Print_Usage(const char *name);
 
 char *Get_BuildOptions();
 
 int Get_GmshMajorVersion();
 int Get_GmshMinorVersion();
 int Get_GmshPatchVersion();
-char *Get_GmshExtraVersion();
-char *Get_GmshVersion();
-char *Get_GmshBuildDate();
-char *Get_GmshBuildHost();
-char *Get_GmshPackager();
-char *Get_GmshBuildOS();
-char *Get_GmshShortLicense();
+const char *Get_GmshExtraVersion();
+const char *Get_GmshVersion();
+const char *Get_GmshBuildDate();
+const char *Get_GmshBuildHost();
+const char *Get_GmshPackager();
+const char *Get_GmshBuildOS();
+const char *Get_GmshShortLicense();
 
 #endif
diff --git a/Common/Context.h b/Common/Context.h
index 1000908320e79c3a98bf0177588e752eb8e7d462..1f43f81291409ddeacf1c0900fb7aa3ee59b8455 100644
--- a/Common/Context.h
+++ b/Common/Context.h
@@ -25,130 +25,113 @@
 // Interface-independent context 
 
 class Context_T {
-
-public :
+ public :
 
   // general options
-  char filename[256];         // the name of the currently opened file
-  char no_ext_filename[256];  // the same without the extension
-  char base_filename[256];    // the base filename (no path, no extension)
-  char *bgm_filename;         // background mesh
-  List_T *files;              // all the files on the command line
-  char *output_filename;      // output file specified with command line option '-o'
-  char *default_filename, default_filename_fullpath[256];
-                              // the name of the default file
-  char *tmp_filename, tmp_filename_fullpath[256];
-                              // the name of the temp file
-  char *session_filename, session_filename_fullpath[256];
-                              // the name of the session configuration file
-  char *options_filename, options_filename_fullpath[256]; 
-                              // the name of the option configuration file
-  char *error_filename, error_filename_fullpath[256];
-                              // the name of the error file
-
-  // gmsh enables to output some mesh stats in a test suite file
-  // mesh algorithms are very sensitive to small parameter modifications
-  // and a test suite is indeed useful ;-)
-  char statreport[256];
-  int  create_append_statreport; // do nothing 0 create 1 append 2 
 
+  char filename[256]; // the name of the currently opened file
+  char no_ext_filename[256]; // the same without the extension
+  char base_filename[256]; // the base filename (no path, no extension)
+  const char *bgm_filename; // background mesh
+  List_T *files; // all the files on the command line
+  const char *output_filename; // output file specified with command line option '-o'
+  const char *default_filename;
+  char default_filename_fullpath[256]; // the name of the default file
+  const char *tmp_filename;
+  char tmp_filename_fullpath[256]; // the name of the temp file
+  const char *session_filename;
+  char session_filename_fullpath[256]; // the name of the session configuration file
+  const char *options_filename;
+  char options_filename_fullpath[256]; // the name of the option configuration file
+  const char *error_filename;
+  char error_filename_fullpath[256]; // the name of the error file
+  char statreport[256]; // mesh stat output file
+  int create_append_statreport; // do nothing 0 create 1 append 2 
   int session_save, options_save; // save session/option file on exit
-  int confirm_overwrite;      // confirm overwrite when file->save as
-  char *display;              // forced display host:0.0 under X11 
-  int  terminal;              // show we print to the terminal console?
-  char *editor;               // text editor command (with included '%s')
-  char *web_browser;          // web browser command (with included '%s')
-  char home_dir[256];         // the home directory
-  char *gui_theme;            // FLTK GUI theme
-  int  tooltips;              // show tootips in GUI?
-
-  int position[2];            // position of the menu window on the screen
-  int gl_position[2];         // position of the graphic window on the screen
-  int msg_position[2];        // position of the message window on the screen
-  int msg_size[2];            // size of the message window on the screen
-  int opt_position[2];        // position of the option window on the screen
-  int vis_position[2];        // position of the visibility window on the screen
-  int clip_position[2];       // position of the clipping planes window on the screen
-  int manip_position[2];      // position of the manipulator window on the screen
-  int stat_position[2];       // position of the statistics window on the screen
-  int ctx_position[2];        // position of the geo/mesh context windows on the screen
-  int solver_position[2];     // position of the solver windows on the screen
-  int plugin_position[2];     // position of the plugin window on the screen
-  int plugin_size[2];         // size of the plugin window on the screen
+  int confirm_overwrite; // confirm overwrite when file->save as
+  const char *display; // forced display host:0.0 under X11 
+  int  terminal; // show we print to the terminal console?
+  const char *editor; // text editor command (with included '%s')
+  const char *web_browser; // web browser command (with included '%s')
+  char home_dir[256]; // the home directory
+  const char *gui_theme; // FLTK GUI theme
+  int tooltips; // show tootips in GUI?
+  int position[2]; // position of the menu window on the screen
+  int gl_position[2]; // position of the graphic window on the screen
+  int msg_position[2]; // position of the message window on the screen
+  int msg_size[2]; // size of the message window on the screen
+  int opt_position[2]; // position of the option window on the screen
+  int vis_position[2]; // position of the visibility window on the screen
+  int clip_position[2]; // position of the clipping planes window on the screen
+  int manip_position[2]; // position of the manipulator window on the screen
+  int stat_position[2]; // position of the statistics window on the screen
+  int ctx_position[2]; // position of the geo/mesh context windows on the screen
+  int solver_position[2]; // position of the solver windows on the screen
+  int plugin_position[2]; // position of the plugin window on the screen
+  int plugin_size[2]; // size of the plugin window on the screen
   int file_chooser_position[2]; // position of the file chooser window on the screen
-  int system_menu_bar;        // use the system menu bar on MacOS?
-
-  int batch;                  // 0=full gfx; -1=just parse; 1,2,3=batch 1D, 2D, 3D mesh 
-  int initial_context;        // 0=automatic; 1=geom; 2=mesh; 3=solver; 4=post 
-  int verbosity;              // 0=silent -> 3=debug 
-  int nopopup;                // never popup dialogs in scripts (use default values instead)
-
-  double rot[16];             // current rotation matrix 
-  double r[3];                // current Euler angles (in degrees!) 
-  double t[3], s[3];          // current translation and scale 
-  double t_init[3];           // initial translation before applying modelview transform
-  double clip_factor;         // clipping plane distance factor
-  double quaternion[4];       // current quaternion used for "trackball" rotation
-  int useTrackball;           // do or do not use the trackball for rotations 
-  double rotation_center[3];  // point around which to rotate the scene
-  int rotation_center_cg;     // rotate around the center of mass instead of rotation_center[]
-  double min[3];              // x, y and z min for the current geometry 
-  double max[3];              // x, y and z max for the current geometry 
-  double cg[3];               // "center of mass" of the current geometry
-  double lc;                  // characteristic length for the whole problem (never
-                              // used in mesh generation ->only for geo/post) 
-
-  int db, antialiasing;       // double buffer? antialiasing?
-  int ortho;                  // orthogonal projection? 
+  int system_menu_bar; // use the system menu bar on MacOS?
+  int batch; // 0=full gfx; -1=just parse; 1,2,3=batch 1D, 2D, 3D mesh 
+  int initial_context; // 0=automatic; 1=geom; 2=mesh; 3=solver; 4=post 
+  int verbosity; // 0=silent -> 3=debug 
+  int nopopup; // never popup dialogs in scripts (use default values instead)
+  double rot[16]; // current rotation matrix 
+  double r[3]; // current Euler angles (in degrees!) 
+  double t[3], s[3]; // current translation and scale 
+  double t_init[3]; // initial translation before applying modelview transform
+  double clip_factor; // clipping plane distance factor
+  double quaternion[4]; // current quaternion used for "trackball" rotation
+  int useTrackball; // do or do not use the trackball for rotations 
+  double rotation_center[3]; // point around which to rotate the scene
+  int rotation_center_cg; // rotate around the center of mass instead of rotation_center[]
+  double min[3]; // x, y and z min for the current geometry 
+  double max[3]; // x, y and z max for the current geometry 
+  double cg[3]; // "center of mass" of the current geometry
+  double lc; // characteristic length for the whole problem (never
+	     // used in mesh generation ->only for geo/post)
+  int db, antialiasing; // double buffer? antialiasing?
+  int ortho; // orthogonal projection? 
   int draw_bbox, draw_rotation_center; // draw the bounding boxes and the rot center?
-  int fast_redraw;            // draw simplified model during user interaction
+  int fast_redraw; // draw simplified model during user interaction
   int small_axes, small_axes_size, small_axes_pos[2]; // small axes
   int axes, axes_auto_position, axes_tics[3],axes_mikado; // large axes
-  double axes_position[6];  
+  double axes_position[6];
   char axes_label[3][256], axes_format[3][256];
-  int threads, threads_lock;  // threads?, lock (should be a mutex...) 
-  int alpha;                  // enable alpha blending 
-  double zoom_factor;         // mouse2 zoom coefficient
-  int bg_gradient;            // draw background gradient?
-
-  int fontsize;               // font size for fltk UI
-  char *gl_font;              // font for opengl graphics
-  int gl_font_enum;           // font for opengl graphics (fltk enum value)
-  int gl_fontsize;            // font size for opengl graphics
+  int threads, threads_lock; // threads?, lock (should be a mutex...) 
+  int alpha; // enable alpha blending 
+  double zoom_factor; // mouse2 zoom coefficient
+  int bg_gradient; // draw background gradient?
+  int fontsize; // font size for fltk UI
+  const char *gl_font; // font for opengl graphics
+  int gl_font_enum; // font for opengl graphics (fltk enum value)
+  int gl_fontsize; // font size for opengl graphics
   double point_size, line_width; // point/line widths
-
-  int viewport[4];            // current viewport 
+  int viewport[4]; // current viewport 
   double vxmin, vxmax, vymin, vymax; // current viewport in real coordinates 
-  int light[6];               // status of lights
+  int light[6]; // status of lights
   double light_position[6][4]; // light sources positions 
   double shine, shine_exponent; // material specular reflection parameters
-  int render_mode;            // GMSH_RENDER, GMSH_SELECT, GMSH_FEEDBACK 
-  int clip[6];                // status of clip planes (bit arrays)
-  double clip_plane[6][4];    // clip planes 
+  int render_mode; // GMSH_RENDER, GMSH_SELECT, GMSH_FEEDBACK 
+  int clip[6]; // status of clip planes (bit arrays)
+  double clip_plane[6][4]; // clip planes 
   int polygon_offset, polygon_offset_always; // polygon offset control
   double polygon_offset_factor, polygon_offset_units; // params for glPolygonOffset
-  double pixel_equiv_x, pixel_equiv_y ; 
-                              // approximative equivalent model length of a pixel 
-  int color_scheme ;          // general color scheme
-  int quadric_subdivisions;   // nb of subdivisions for gluQuadrics (spheres/cylinders)
-  int vector_type;            // default vector display type (for normals, etc.)
-  double arrow_rel_head_radius;  // relative radius of arrow head
-  double arrow_rel_stem_radius;  // relative radius of arrow stem
-  double arrow_rel_stem_length;  // relative length of arrow stem
-
+  double pixel_equiv_x, pixel_equiv_y; // approx equiv model length of a pixel 
+  int color_scheme; // general color scheme
+  int quadric_subdivisions; // nb of subdivisions for gluQuadrics (spheres/cylinders)
+  int vector_type; // default vector display type (for normals, etc.)
+  double arrow_rel_head_radius; // relative radius of arrow head
+  double arrow_rel_stem_radius; // relative radius of arrow stem
+  double arrow_rel_stem_length; // relative length of arrow stem
   double model[16], proj[16]; // the modelview and projection matrix as they were
                               // at the time of the last InitPosition() call
   double mesh_timer[3]; // records cpu times for 1-D, 2-D and 3-D mesh generation
-
   int forced_bbox; // dynamic variable tracking if the bbox is currently imposed
-
   int mouse_selection; // enable selection using the mouse
   int mouse_hover_meshes; // enable mouse hover on meshes
   int pick_elements; // allow individual element picking
-
   int expert_mode; // to disable some warnings for beginners
   int printing; // dynamic: equal to 1 while gmsh is printing
-  
   int hide_unselected; // hide all unselected entities
 
   // geometry options 
@@ -193,12 +176,11 @@ public :
     int color_carousel;
     int use_cut_plane, cut_plane_draw_intersect, cut_plane_only_volume;
     double cut_planea, cut_planeb, cut_planec, cut_planed;
-    double evalCutPlane (double x, double y, double z){
-      double val = cut_planea * x + cut_planeb * y + cut_planec * z + cut_planed; 
-      return val;
+    double evalCutPlane (double x, double y, double z)
+    {
+      return cut_planea * x + cut_planeb * y + cut_planec * z + cut_planed; 
     }
     int save_all, save_groups_of_nodes, stl_binary, msh_binary, bdf_field_format;
-    char *triangle_options;
     int smooth_normals, reverse_all_normals;
     double angle_smooth_normals;
     double allow_swap_edge_angle;
@@ -216,7 +198,7 @@ public :
   // solver options 
   struct{
     int max_delay, plugins, listen ;
-    char *socket_name ;
+    const char *socket_name ;
   }solver;
 
   // print options 
diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h
index a2b8c497b35d4bd3d902c890ba023b10a4b8d5e1..e3005364545c050d14ce055f016975db9b319e1d 100644
--- a/Common/DefaultOptions.h
+++ b/Common/DefaultOptions.h
@@ -102,8 +102,6 @@ StringXString GeometryOptions_String[] = {
 } ;
 
 StringXString MeshOptions_String[] = {
-  { F|O, "TriangleOptions" , opt_mesh_triangle_options , "praqzBPY" , 
-    "Options for Jonathan Shewchuk's Triangle isotropic algorithm" },
   { 0, NULL , NULL , NULL , NULL }
 } ;
 
diff --git a/Common/Makefile b/Common/Makefile
index 3db7bfd23db6f5bfa901427781cca2c115a7e4dd..a6707e0bc3dfba23dbe387deae7472a09759685c 100644
--- a/Common/Makefile
+++ b/Common/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.157 2008-02-17 08:47:56 geuzaine Exp $
+# $Id: Makefile,v 1.158 2008-02-23 15:30:06 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -73,9 +73,9 @@ Options.o: Options.cpp GmshUI.h GmshDefines.h Message.h \
   ../Graphics/Draw.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PView.h ../Post/PViewData.h ../Post/PViewOptions.h \
   ../Post/ColorTable.h ../Mesh/Generator.h Context.h ../DataStr/List.h \
-  Options.h ../Mesh/BackgroundMesh.h ../Plugin/PluginManager.h \
-  ../Plugin/Plugin.h ../Common/Options.h ../Common/Message.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
+  Options.h ../Post/ColorTable.h ../Mesh/BackgroundMesh.h \
+  ../Plugin/PluginManager.h ../Plugin/Plugin.h ../Common/Options.h \
+  ../Common/Message.h ../Post/PViewDataList.h ../Post/AdaptiveViews.h \
   ../Common/GmshMatrix.h ../Fltk/Solvers.h ../Fltk/GUI.h \
   ../Fltk/Opengl_Window.h ../Fltk/Colorbar_Window.h ../Common/GmshUI.h \
   ../Fltk/Popup_Button.h ../Fltk/SpherePosition_Widget.h
@@ -86,27 +86,19 @@ CommandLine.o: CommandLine.cpp GmshUI.h GmshDefines.h GmshVersion.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Post/PViewOptions.h \
   ../Post/ColorTable.h ../Parser/OpenFile.h ../Parser/CreateFile.h \
   ../Parser/Parser.h ../DataStr/Tree.h ../DataStr/avl.h ../Geo/GModel.h \
-  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
+  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
   ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
-  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/GFace.h ../Geo/GEntity.h \
-  ../Geo/GPoint.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/SPoint2.h \
-  ../Geo/SVector3.h ../Geo/Pair.h ../Geo/GRegion.h ../Geo/GEntity.h \
-  ../Geo/SBoundingBox3d.h OS.h
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h OS.h
 OS.o: OS.cpp Message.h
 Visibility.o: Visibility.cpp Visibility.h GmshDefines.h ../Geo/GVertex.h \
   ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/GModel.h ../Geo/GVertex.h \
-  ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h ../Parser/Parser.h \
-  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h \
+  ../Geo/GEdge.h ../Geo/Pair.h ../Geo/GRegion.h ../Geo/GModel.h \
+  ../Geo/GFace.h ../Geo/GRegion.h ../Geo/MElement.h \
+  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h \
+  ../Parser/Parser.h ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h
 Trackball.o: Trackball.cpp Trackball.h
 VertexArray.o: VertexArray.cpp VertexArray.h ../Geo/SVector3.h \
   ../Geo/SPoint3.h Context.h ../DataStr/List.h ../Numeric/Numeric.h \
diff --git a/Common/Options.cpp b/Common/Options.cpp
index 881c66edb1afa33e9197cebe4b739a39fc5c727f..edce452d98b8cad9086de66ce4e376e949d48136 100644
--- a/Common/Options.cpp
+++ b/Common/Options.cpp
@@ -1,4 +1,4 @@
-// $Id: Options.cpp,v 1.384 2008-02-23 10:43:44 geuzaine Exp $
+// $Id: Options.cpp,v 1.385 2008-02-23 15:30:06 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -72,12 +72,12 @@ void Init_Options_Safe(int num)
   Set_DefaultColorOptions(num, PrintOptions_Color);
 }
 
-char *gmsh_getenv(char *var)
+const char *gmsh_getenv(const char *var)
 {
 #if !defined(WIN32)
   return getenv(var);
 #else
-  char *tmp = getenv(var);
+  const char *tmp = getenv(var);
   // Don't accept top dir or anything partially expanded like
   // c:\Documents and Settings\%USERPROFILE%, etc.
   if(!tmp || !strcmp(tmp, "/") || strstr(tmp, "%") || strstr(tmp, "$"))
@@ -95,7 +95,7 @@ void Init_Options(int num)
   CTX.big_endian = (byte[0] ? 0 : 1);
 
   // Home directory
-  char *tmp;
+  const char *tmp;
   if((tmp = gmsh_getenv("GMSH_HOME")))
     strcpy(CTX.home_dir, tmp);
   else if((tmp = gmsh_getenv("HOME")))
@@ -185,7 +185,7 @@ void Init_Options_GUI(int num)
   Set_ColorOptions_GUI(num, PrintOptions_Color);
 }
 
-void Print_OptionCategory(int level, int diff, int help, char *cat, FILE * file)
+void Print_OptionCategory(int level, int diff, int help, const char *cat, FILE *file)
 {
   if(diff || !help || !(level & GMSH_FULLRC))
     return;
@@ -214,7 +214,7 @@ GmshColorTable *Get_ColorTable(int num)
   return &opt->CT;
 }
 
-void Print_ColorTable(int num, int diff, char *prefix, FILE *file)
+void Print_ColorTable(int num, int diff, const char *prefix, FILE *file)
 {
   PViewOptions *opt;
   if(PView::list.empty() || num < 0 || num > (int)PView::list.size() - 1)
@@ -359,7 +359,7 @@ void Print_Options(int num, int level, int diff, int help, const char *filename)
   if(filename) fclose(file);
 }
 
-char *Get_OptionSaveLevel(int level){
+const char *Get_OptionSaveLevel(int level){
   if(level & GMSH_SESSIONRC){
     return "General.SessionFileName";
   }
@@ -374,7 +374,7 @@ char *Get_OptionSaveLevel(int level){
 void Print_OptionsDoc()
 {
   FILE *file;
-  char *warn =
+  const char *warn =
     "@c\n"
     "@c This file is generated automatically by running \"gmsh -doc\".\n"
     "@c Do not edit by hand!\n"
@@ -517,7 +517,7 @@ void Print_OptionsDoc()
 
 // General routines for string options
 
-StringXString *Get_StringOptionCategory(char *cat)
+StringXString *Get_StringOptionCategory(const char *cat)
 {
   if(!strcmp(cat, "General"))
     return GeneralOptions_String;
@@ -555,7 +555,7 @@ void Set_StringOptions_GUI(int num, StringXString s[])
   }
 }
 
-void *Get_StringOption(char *str, StringXString s[])
+void *Get_StringOption(const char *str, StringXString s[])
 {
   int i = 0;
   while((s[i].str != NULL) && (strcmp(s[i].str, str)))
@@ -567,7 +567,7 @@ void *Get_StringOption(char *str, StringXString s[])
 }
 
 void Print_StringOptions(int num, int level, int diff, int help, 
-			 StringXString s[], char *prefix, FILE * file)
+			 StringXString s[], const char *prefix, FILE *file)
 {
   int i = 0;
   char tmp[1024];
@@ -587,7 +587,7 @@ void Print_StringOptions(int num, int level, int diff, int help,
   }
 }
 
-void Print_StringOptionsDoc(StringXString s[], char *prefix, FILE * file)
+void Print_StringOptionsDoc(StringXString s[], const char *prefix, FILE *file)
 {
   int i = 0, j;
   char tmp[1024];
@@ -597,7 +597,7 @@ void Print_StringOptionsDoc(StringXString s[], char *prefix, FILE * file)
     fprintf(file, "%s@*\n", s[i].help);
 
     // sanitize the string for texinfo
-    char *ptr = s[i].function(0, GMSH_GET, NULL);
+    const char *ptr = s[i].function(0, GMSH_GET, NULL);
     int len = strlen(ptr);
     j = 0;
     while(j < len){
@@ -617,7 +617,7 @@ void Print_StringOptionsDoc(StringXString s[], char *prefix, FILE * file)
 
 // General routines for numeric options
 
-StringXNumber *Get_NumberOptionCategory(char *cat)
+StringXNumber *Get_NumberOptionCategory(const char *cat)
 {
   if(!strcmp(cat, "General"))
     return GeneralOptions_Number;
@@ -655,7 +655,7 @@ void Set_NumberOptions_GUI(int num, StringXNumber s[])
   }
 }
 
-void *Get_NumberOption(char *str, StringXNumber s[])
+void *Get_NumberOption(const char *str, StringXNumber s[])
 {
   int i = 0;
 
@@ -669,7 +669,7 @@ void *Get_NumberOption(char *str, StringXNumber s[])
 }
 
 void Print_NumberOptions(int num, int level, int diff, int help,
-			 StringXNumber s[], char *prefix, FILE * file)
+			 StringXNumber s[], const char *prefix, FILE * file)
 {
   int i = 0;
   char tmp[1024];
@@ -689,7 +689,7 @@ void Print_NumberOptions(int num, int level, int diff, int help,
   }
 }
 
-void Print_NumberOptionsDoc(StringXNumber s[], char *prefix, FILE * file)
+void Print_NumberOptionsDoc(StringXNumber s[], const char *prefix, FILE * file)
 {
   int i = 0;
   while(s[i].str) {
@@ -703,7 +703,7 @@ void Print_NumberOptionsDoc(StringXNumber s[], char *prefix, FILE * file)
 
 // General routines for color options
 
-StringXColor *Get_ColorOptionCategory(char *cat)
+StringXColor *Get_ColorOptionCategory(const char *cat)
 {
   if(!strcmp(cat, "General"))
     return GeneralOptions_Color;
@@ -761,7 +761,7 @@ void Set_ColorOptions_GUI(int num, StringXColor s[])
   }
 }
 
-void *Get_ColorOption(char *str, StringXColor s[])
+void *Get_ColorOption(const char *str, StringXColor s[])
 {
   int i = 0;
   while((s[i].str != NULL) && (strcmp(s[i].str, str)))
@@ -773,7 +773,7 @@ void *Get_ColorOption(char *str, StringXColor s[])
 }
 
 void Print_ColorOptions(int num, int level, int diff, int help,
-			StringXColor s[], char *prefix, FILE * file)
+			StringXColor s[], const char *prefix, FILE * file)
 {
   int i = 0;
   char tmp[1024];
@@ -811,7 +811,7 @@ void Print_ColorOptions(int num, int level, int diff, int help,
   }
 }
 
-void Print_ColorOptionsDoc(StringXColor s[], char *prefix, FILE * file)
+void Print_ColorOptionsDoc(StringXColor s[], const char *prefix, FILE * file)
 {
   int i = 0;
   while(s[i].str) {
@@ -827,7 +827,7 @@ void Print_ColorOptionsDoc(StringXColor s[], char *prefix, FILE * file)
 }
 
 int Get_ColorForString(StringX4Int SX4I[], int alpha,
-                       char *str, int *FlagError)
+                       const char *str, int *FlagError)
 {
   int i = 0;
   while((SX4I[i].str != NULL) && (strcmp(SX4I[i].str, str)))
@@ -857,7 +857,7 @@ int Get_ColorForString(StringX4Int SX4I[], int alpha,
 
 // String option routines
 
-char *opt_general_axes_label0(OPT_ARGS_STR)
+const char *opt_general_axes_label0(OPT_ARGS_STR)
 {
   if(action & GMSH_SET)
     strcpy(CTX.axes_label[0], val);
@@ -868,7 +868,7 @@ char *opt_general_axes_label0(OPT_ARGS_STR)
   return CTX.axes_label[0];
 }
 
-char *opt_general_axes_label1(OPT_ARGS_STR)
+const char *opt_general_axes_label1(OPT_ARGS_STR)
 {
   if(action & GMSH_SET)
     strcpy(CTX.axes_label[1], val);
@@ -879,7 +879,7 @@ char *opt_general_axes_label1(OPT_ARGS_STR)
   return CTX.axes_label[1];
 }
 
-char *opt_general_axes_label2(OPT_ARGS_STR)
+const char *opt_general_axes_label2(OPT_ARGS_STR)
 {
   if(action & GMSH_SET)
     strcpy(CTX.axes_label[2], val);
@@ -890,7 +890,7 @@ char *opt_general_axes_label2(OPT_ARGS_STR)
   return CTX.axes_label[2];
 }
 
-char *opt_general_axes_format0(OPT_ARGS_STR)
+const char *opt_general_axes_format0(OPT_ARGS_STR)
 {
   if(action & GMSH_SET)
     strcpy(CTX.axes_format[0], val);
@@ -901,7 +901,7 @@ char *opt_general_axes_format0(OPT_ARGS_STR)
   return CTX.axes_format[0];
 }
 
-char *opt_general_axes_format1(OPT_ARGS_STR)
+const char *opt_general_axes_format1(OPT_ARGS_STR)
 {
   if(action & GMSH_SET)
     strcpy(CTX.axes_format[1], val);
@@ -912,7 +912,7 @@ char *opt_general_axes_format1(OPT_ARGS_STR)
   return CTX.axes_format[1];
 }
 
-char *opt_general_axes_format2(OPT_ARGS_STR)
+const char *opt_general_axes_format2(OPT_ARGS_STR)
 {
   if(action & GMSH_SET)
     strcpy(CTX.axes_format[2], val);
@@ -923,19 +923,19 @@ char *opt_general_axes_format2(OPT_ARGS_STR)
   return CTX.axes_format[2];
 }
 
-char *opt_general_display(OPT_ARGS_STR)
+const char *opt_general_display(OPT_ARGS_STR)
 {
   if(action & GMSH_SET)
     CTX.display = val;
   return CTX.display;
 }
 
-char *opt_general_filename(OPT_ARGS_STR)
+const char *opt_general_filename(OPT_ARGS_STR)
 {
   return CTX.filename;
 }
 
-char *opt_general_default_filename(OPT_ARGS_STR)
+const char *opt_general_default_filename(OPT_ARGS_STR)
 {
   if(action & GMSH_SET){
     CTX.default_filename = val;
@@ -949,7 +949,7 @@ char *opt_general_default_filename(OPT_ARGS_STR)
   return CTX.default_filename;
 }
 
-char *opt_general_tmp_filename(OPT_ARGS_STR)
+const char *opt_general_tmp_filename(OPT_ARGS_STR)
 {
   if(action & GMSH_SET){
     CTX.tmp_filename = val;
@@ -959,7 +959,7 @@ char *opt_general_tmp_filename(OPT_ARGS_STR)
   return CTX.tmp_filename;
 }
 
-char *opt_general_error_filename(OPT_ARGS_STR)
+const char *opt_general_error_filename(OPT_ARGS_STR)
 {
   if(action & GMSH_SET){
     CTX.error_filename = val;
@@ -969,7 +969,7 @@ char *opt_general_error_filename(OPT_ARGS_STR)
   return CTX.error_filename;
 }
 
-char *opt_general_session_filename(OPT_ARGS_STR)
+const char *opt_general_session_filename(OPT_ARGS_STR)
 {
   if(action & GMSH_SET) {
     CTX.session_filename = val;
@@ -979,7 +979,7 @@ char *opt_general_session_filename(OPT_ARGS_STR)
   return CTX.session_filename;
 }
 
-char *opt_general_options_filename(OPT_ARGS_STR)
+const char *opt_general_options_filename(OPT_ARGS_STR)
 {
   if(action & GMSH_SET) {
     CTX.options_filename = val;
@@ -989,7 +989,7 @@ char *opt_general_options_filename(OPT_ARGS_STR)
   return CTX.options_filename;
 }
 
-char *opt_general_editor(OPT_ARGS_STR)
+const char *opt_general_editor(OPT_ARGS_STR)
 {
   if(action & GMSH_SET)
     CTX.editor = val;
@@ -1000,7 +1000,7 @@ char *opt_general_editor(OPT_ARGS_STR)
   return CTX.editor;
 }
 
-char *opt_general_web_browser(OPT_ARGS_STR)
+const char *opt_general_web_browser(OPT_ARGS_STR)
 {
   if(action & GMSH_SET)
     CTX.web_browser = val;
@@ -1011,14 +1011,14 @@ char *opt_general_web_browser(OPT_ARGS_STR)
   return CTX.web_browser;
 }
 
-char *opt_general_gui_theme(OPT_ARGS_STR)
+const char *opt_general_gui_theme(OPT_ARGS_STR)
 {
   if(action & GMSH_SET)
     CTX.gui_theme = val;
   return CTX.gui_theme;
 }
 
-char *opt_general_graphics_font(OPT_ARGS_STR)
+const char *opt_general_graphics_font(OPT_ARGS_STR)
 {
   if(action & GMSH_SET)
     CTX.gl_font = val;
@@ -1035,13 +1035,7 @@ char *opt_general_graphics_font(OPT_ARGS_STR)
   return CTX.gl_font;
 }
 
-char *opt_mesh_triangle_options(OPT_ARGS_STR){
-  if(action & GMSH_SET)
-    CTX.mesh.triangle_options = val;
-  return CTX.mesh.triangle_options;
-}
-
-char *opt_solver_socket_name(OPT_ARGS_STR)
+const char *opt_solver_socket_name(OPT_ARGS_STR)
 {
   if(action & GMSH_SET)
     CTX.solver.socket_name = val;
@@ -1052,7 +1046,7 @@ char *opt_solver_socket_name(OPT_ARGS_STR)
   return CTX.solver.socket_name;
 }
 
-char *opt_solver_name(OPT_ARGS_STR)
+const char *opt_solver_name(OPT_ARGS_STR)
 {
 #if defined(HAVE_FLTK)
   if(action & GMSH_SET)
@@ -1065,32 +1059,32 @@ char *opt_solver_name(OPT_ARGS_STR)
 #endif
 }
 
-char *opt_solver_name0(OPT_ARGS_STR)
+const char *opt_solver_name0(OPT_ARGS_STR)
 {
   return opt_solver_name(0, action, val);
 }
 
-char *opt_solver_name1(OPT_ARGS_STR)
+const char *opt_solver_name1(OPT_ARGS_STR)
 {
   return opt_solver_name(1, action, val);
 }
 
-char *opt_solver_name2(OPT_ARGS_STR)
+const char *opt_solver_name2(OPT_ARGS_STR)
 {
   return opt_solver_name(2, action, val);
 }
 
-char *opt_solver_name3(OPT_ARGS_STR)
+const char *opt_solver_name3(OPT_ARGS_STR)
 {
   return opt_solver_name(3, action, val);
 }
 
-char *opt_solver_name4(OPT_ARGS_STR)
+const char *opt_solver_name4(OPT_ARGS_STR)
 {
   return opt_solver_name(4, action, val);
 }
 
-char *opt_solver_executable(OPT_ARGS_STR)
+const char *opt_solver_executable(OPT_ARGS_STR)
 {
 #if defined(HAVE_FLTK)
   if(action & GMSH_SET)
@@ -1103,32 +1097,32 @@ char *opt_solver_executable(OPT_ARGS_STR)
 #endif
 }
 
-char *opt_solver_executable0(OPT_ARGS_STR)
+const char *opt_solver_executable0(OPT_ARGS_STR)
 {
   return opt_solver_executable(0, action, val);
 }
 
-char *opt_solver_executable1(OPT_ARGS_STR)
+const char *opt_solver_executable1(OPT_ARGS_STR)
 {
   return opt_solver_executable(1, action, val);
 }
 
-char *opt_solver_executable2(OPT_ARGS_STR)
+const char *opt_solver_executable2(OPT_ARGS_STR)
 {
   return opt_solver_executable(2, action, val);
 }
 
-char *opt_solver_executable3(OPT_ARGS_STR)
+const char *opt_solver_executable3(OPT_ARGS_STR)
 {
   return opt_solver_executable(3, action, val);
 }
 
-char *opt_solver_executable4(OPT_ARGS_STR)
+const char *opt_solver_executable4(OPT_ARGS_STR)
 {
   return opt_solver_executable(4, action, val);
 }
 
-char *opt_solver_help(OPT_ARGS_STR)
+const char *opt_solver_help(OPT_ARGS_STR)
 {
 #if defined(HAVE_FLTK)
   if(action & GMSH_SET)
@@ -1139,32 +1133,32 @@ char *opt_solver_help(OPT_ARGS_STR)
 #endif
 }
 
-char *opt_solver_help0(OPT_ARGS_STR)
+const char *opt_solver_help0(OPT_ARGS_STR)
 {
   return opt_solver_help(0, action, val);
 }
 
-char *opt_solver_help1(OPT_ARGS_STR)
+const char *opt_solver_help1(OPT_ARGS_STR)
 {
   return opt_solver_help(1, action, val);
 }
 
-char *opt_solver_help2(OPT_ARGS_STR)
+const char *opt_solver_help2(OPT_ARGS_STR)
 {
   return opt_solver_help(2, action, val);
 }
 
-char *opt_solver_help3(OPT_ARGS_STR)
+const char *opt_solver_help3(OPT_ARGS_STR)
 {
   return opt_solver_help(3, action, val);
 }
 
-char *opt_solver_help4(OPT_ARGS_STR)
+const char *opt_solver_help4(OPT_ARGS_STR)
 {
   return opt_solver_help(4, action, val);
 }
 
-char *opt_solver_extension(OPT_ARGS_STR)
+const char *opt_solver_extension(OPT_ARGS_STR)
 {
 #if defined(HAVE_FLTK)
   if(action & GMSH_SET)
@@ -1175,32 +1169,32 @@ char *opt_solver_extension(OPT_ARGS_STR)
 #endif
 }
 
-char *opt_solver_extension0(OPT_ARGS_STR)
+const char *opt_solver_extension0(OPT_ARGS_STR)
 {
   return opt_solver_extension(0, action, val);
 }
 
-char *opt_solver_extension1(OPT_ARGS_STR)
+const char *opt_solver_extension1(OPT_ARGS_STR)
 {
   return opt_solver_extension(1, action, val);
 }
 
-char *opt_solver_extension2(OPT_ARGS_STR)
+const char *opt_solver_extension2(OPT_ARGS_STR)
 {
   return opt_solver_extension(2, action, val);
 }
 
-char *opt_solver_extension3(OPT_ARGS_STR)
+const char *opt_solver_extension3(OPT_ARGS_STR)
 {
   return opt_solver_extension(3, action, val);
 }
 
-char *opt_solver_extension4(OPT_ARGS_STR)
+const char *opt_solver_extension4(OPT_ARGS_STR)
 {
   return opt_solver_extension(4, action, val);
 }
 
-char *opt_solver_mesh_name(OPT_ARGS_STR)
+const char *opt_solver_mesh_name(OPT_ARGS_STR)
 {
 #if defined(HAVE_FLTK)
   if(action & GMSH_SET)
@@ -1211,32 +1205,32 @@ char *opt_solver_mesh_name(OPT_ARGS_STR)
 #endif
 }
 
-char *opt_solver_mesh_name0(OPT_ARGS_STR)
+const char *opt_solver_mesh_name0(OPT_ARGS_STR)
 {
   return opt_solver_mesh_name(0, action, val);
 }
 
-char *opt_solver_mesh_name1(OPT_ARGS_STR)
+const char *opt_solver_mesh_name1(OPT_ARGS_STR)
 {
   return opt_solver_mesh_name(1, action, val);
 }
 
-char *opt_solver_mesh_name2(OPT_ARGS_STR)
+const char *opt_solver_mesh_name2(OPT_ARGS_STR)
 {
   return opt_solver_mesh_name(2, action, val);
 }
 
-char *opt_solver_mesh_name3(OPT_ARGS_STR)
+const char *opt_solver_mesh_name3(OPT_ARGS_STR)
 {
   return opt_solver_mesh_name(3, action, val);
 }
 
-char *opt_solver_mesh_name4(OPT_ARGS_STR)
+const char *opt_solver_mesh_name4(OPT_ARGS_STR)
 {
   return opt_solver_mesh_name(4, action, val);
 }
 
-char *opt_solver_mesh_command(OPT_ARGS_STR)
+const char *opt_solver_mesh_command(OPT_ARGS_STR)
 {
 #if defined(HAVE_FLTK)
   if(action & GMSH_SET)
@@ -1249,32 +1243,32 @@ char *opt_solver_mesh_command(OPT_ARGS_STR)
 #endif
 }
 
-char *opt_solver_mesh_command0(OPT_ARGS_STR)
+const char *opt_solver_mesh_command0(OPT_ARGS_STR)
 {
   return opt_solver_mesh_command(0, action, val);
 }
 
-char *opt_solver_mesh_command1(OPT_ARGS_STR)
+const char *opt_solver_mesh_command1(OPT_ARGS_STR)
 {
   return opt_solver_mesh_command(1, action, val);
 }
 
-char *opt_solver_mesh_command2(OPT_ARGS_STR)
+const char *opt_solver_mesh_command2(OPT_ARGS_STR)
 {
   return opt_solver_mesh_command(2, action, val);
 }
 
-char *opt_solver_mesh_command3(OPT_ARGS_STR)
+const char *opt_solver_mesh_command3(OPT_ARGS_STR)
 {
   return opt_solver_mesh_command(3, action, val);
 }
 
-char *opt_solver_mesh_command4(OPT_ARGS_STR)
+const char *opt_solver_mesh_command4(OPT_ARGS_STR)
 {
   return opt_solver_mesh_command(4, action, val);
 }
 
-char *opt_solver_socket_command(OPT_ARGS_STR)
+const char *opt_solver_socket_command(OPT_ARGS_STR)
 {
 #if defined(HAVE_FLTK)
   if(action & GMSH_SET)
@@ -1285,32 +1279,32 @@ char *opt_solver_socket_command(OPT_ARGS_STR)
 #endif
 }
 
-char *opt_solver_socket_command0(OPT_ARGS_STR)
+const char *opt_solver_socket_command0(OPT_ARGS_STR)
 {
   return opt_solver_socket_command(0, action, val);
 }
 
-char *opt_solver_socket_command1(OPT_ARGS_STR)
+const char *opt_solver_socket_command1(OPT_ARGS_STR)
 {
   return opt_solver_socket_command(1, action, val);
 }
 
-char *opt_solver_socket_command2(OPT_ARGS_STR)
+const char *opt_solver_socket_command2(OPT_ARGS_STR)
 {
   return opt_solver_socket_command(2, action, val);
 }
 
-char *opt_solver_socket_command3(OPT_ARGS_STR)
+const char *opt_solver_socket_command3(OPT_ARGS_STR)
 {
   return opt_solver_socket_command(3, action, val);
 }
 
-char *opt_solver_socket_command4(OPT_ARGS_STR)
+const char *opt_solver_socket_command4(OPT_ARGS_STR)
 {
   return opt_solver_socket_command(4, action, val);
 }
 
-char *opt_solver_name_command(OPT_ARGS_STR)
+const char *opt_solver_name_command(OPT_ARGS_STR)
 {
 #if defined(HAVE_FLTK)
   if(action & GMSH_SET)
@@ -1321,32 +1315,32 @@ char *opt_solver_name_command(OPT_ARGS_STR)
 #endif
 }
 
-char *opt_solver_name_command0(OPT_ARGS_STR)
+const char *opt_solver_name_command0(OPT_ARGS_STR)
 {
   return opt_solver_name_command(0, action, val);
 }
 
-char *opt_solver_name_command1(OPT_ARGS_STR)
+const char *opt_solver_name_command1(OPT_ARGS_STR)
 {
   return opt_solver_name_command(1, action, val);
 }
 
-char *opt_solver_name_command2(OPT_ARGS_STR)
+const char *opt_solver_name_command2(OPT_ARGS_STR)
 {
   return opt_solver_name_command(2, action, val);
 }
 
-char *opt_solver_name_command3(OPT_ARGS_STR)
+const char *opt_solver_name_command3(OPT_ARGS_STR)
 {
   return opt_solver_name_command(3, action, val);
 }
 
-char *opt_solver_name_command4(OPT_ARGS_STR)
+const char *opt_solver_name_command4(OPT_ARGS_STR)
 {
   return opt_solver_name_command(4, action, val);
 }
 
-char *opt_solver_option_command(OPT_ARGS_STR)
+const char *opt_solver_option_command(OPT_ARGS_STR)
 {
 #if defined(HAVE_FLTK)
   if(action & GMSH_SET)
@@ -1357,32 +1351,32 @@ char *opt_solver_option_command(OPT_ARGS_STR)
 #endif
 }
 
-char *opt_solver_option_command0(OPT_ARGS_STR)
+const char *opt_solver_option_command0(OPT_ARGS_STR)
 {
   return opt_solver_option_command(0, action, val);
 }
 
-char *opt_solver_option_command1(OPT_ARGS_STR)
+const char *opt_solver_option_command1(OPT_ARGS_STR)
 {
   return opt_solver_option_command(1, action, val);
 }
 
-char *opt_solver_option_command2(OPT_ARGS_STR)
+const char *opt_solver_option_command2(OPT_ARGS_STR)
 {
   return opt_solver_option_command(2, action, val);
 }
 
-char *opt_solver_option_command3(OPT_ARGS_STR)
+const char *opt_solver_option_command3(OPT_ARGS_STR)
 {
   return opt_solver_option_command(3, action, val);
 }
 
-char *opt_solver_option_command4(OPT_ARGS_STR)
+const char *opt_solver_option_command4(OPT_ARGS_STR)
 {
   return opt_solver_option_command(4, action, val);
 }
 
-char *opt_solver_first_option(OPT_ARGS_STR)
+const char *opt_solver_first_option(OPT_ARGS_STR)
 {
 #if defined(HAVE_FLTK)
   if(action & GMSH_SET)
@@ -1393,32 +1387,32 @@ char *opt_solver_first_option(OPT_ARGS_STR)
 #endif
 }
 
-char *opt_solver_first_option0(OPT_ARGS_STR)
+const char *opt_solver_first_option0(OPT_ARGS_STR)
 {
   return opt_solver_first_option(0, action, val);
 }
 
-char *opt_solver_first_option1(OPT_ARGS_STR)
+const char *opt_solver_first_option1(OPT_ARGS_STR)
 {
   return opt_solver_first_option(1, action, val);
 }
 
-char *opt_solver_first_option2(OPT_ARGS_STR)
+const char *opt_solver_first_option2(OPT_ARGS_STR)
 {
   return opt_solver_first_option(2, action, val);
 }
 
-char *opt_solver_first_option3(OPT_ARGS_STR)
+const char *opt_solver_first_option3(OPT_ARGS_STR)
 {
   return opt_solver_first_option(3, action, val);
 }
 
-char *opt_solver_first_option4(OPT_ARGS_STR)
+const char *opt_solver_first_option4(OPT_ARGS_STR)
 {
   return opt_solver_first_option(4, action, val);
 }
 
-char *opt_solver_second_option(OPT_ARGS_STR)
+const char *opt_solver_second_option(OPT_ARGS_STR)
 {
 #if defined(HAVE_FLTK)
   if(action & GMSH_SET)
@@ -1429,32 +1423,32 @@ char *opt_solver_second_option(OPT_ARGS_STR)
 #endif
 }
 
-char *opt_solver_second_option0(OPT_ARGS_STR)
+const char *opt_solver_second_option0(OPT_ARGS_STR)
 {
   return opt_solver_second_option(0, action, val);
 }
 
-char *opt_solver_second_option1(OPT_ARGS_STR)
+const char *opt_solver_second_option1(OPT_ARGS_STR)
 {
   return opt_solver_second_option(1, action, val);
 }
 
-char *opt_solver_second_option2(OPT_ARGS_STR)
+const char *opt_solver_second_option2(OPT_ARGS_STR)
 {
   return opt_solver_second_option(2, action, val);
 }
 
-char *opt_solver_second_option3(OPT_ARGS_STR)
+const char *opt_solver_second_option3(OPT_ARGS_STR)
 {
   return opt_solver_second_option(3, action, val);
 }
 
-char *opt_solver_second_option4(OPT_ARGS_STR)
+const char *opt_solver_second_option4(OPT_ARGS_STR)
 {
   return opt_solver_second_option(4, action, val);
 }
 
-char *opt_solver_third_option(OPT_ARGS_STR)
+const char *opt_solver_third_option(OPT_ARGS_STR)
 {
 #if defined(HAVE_FLTK)
   if(action & GMSH_SET)
@@ -1465,32 +1459,32 @@ char *opt_solver_third_option(OPT_ARGS_STR)
 #endif
 }
 
-char *opt_solver_third_option0(OPT_ARGS_STR)
+const char *opt_solver_third_option0(OPT_ARGS_STR)
 {
   return opt_solver_third_option(0, action, val);
 }
 
-char *opt_solver_third_option1(OPT_ARGS_STR)
+const char *opt_solver_third_option1(OPT_ARGS_STR)
 {
   return opt_solver_third_option(1, action, val);
 }
 
-char *opt_solver_third_option2(OPT_ARGS_STR)
+const char *opt_solver_third_option2(OPT_ARGS_STR)
 {
   return opt_solver_third_option(2, action, val);
 }
 
-char *opt_solver_third_option3(OPT_ARGS_STR)
+const char *opt_solver_third_option3(OPT_ARGS_STR)
 {
   return opt_solver_third_option(3, action, val);
 }
 
-char *opt_solver_third_option4(OPT_ARGS_STR)
+const char *opt_solver_third_option4(OPT_ARGS_STR)
 {
   return opt_solver_third_option(4, action, val);
 }
 
-char *opt_solver_fourth_option(OPT_ARGS_STR)
+const char *opt_solver_fourth_option(OPT_ARGS_STR)
 {
 #if defined(HAVE_FLTK)
   if(action & GMSH_SET)
@@ -1501,32 +1495,32 @@ char *opt_solver_fourth_option(OPT_ARGS_STR)
 #endif
 }
 
-char *opt_solver_fourth_option0(OPT_ARGS_STR)
+const char *opt_solver_fourth_option0(OPT_ARGS_STR)
 {
   return opt_solver_fourth_option(0, action, val);
 }
 
-char *opt_solver_fourth_option1(OPT_ARGS_STR)
+const char *opt_solver_fourth_option1(OPT_ARGS_STR)
 {
   return opt_solver_fourth_option(1, action, val);
 }
 
-char *opt_solver_fourth_option2(OPT_ARGS_STR)
+const char *opt_solver_fourth_option2(OPT_ARGS_STR)
 {
   return opt_solver_fourth_option(2, action, val);
 }
 
-char *opt_solver_fourth_option3(OPT_ARGS_STR)
+const char *opt_solver_fourth_option3(OPT_ARGS_STR)
 {
   return opt_solver_fourth_option(3, action, val);
 }
 
-char *opt_solver_fourth_option4(OPT_ARGS_STR)
+const char *opt_solver_fourth_option4(OPT_ARGS_STR)
 {
   return opt_solver_fourth_option(4, action, val);
 }
 
-char *opt_solver_fifth_option(OPT_ARGS_STR)
+const char *opt_solver_fifth_option(OPT_ARGS_STR)
 {
 #if defined(HAVE_FLTK)
   if(action & GMSH_SET)
@@ -1537,32 +1531,32 @@ char *opt_solver_fifth_option(OPT_ARGS_STR)
 #endif
 }
 
-char *opt_solver_fifth_option0(OPT_ARGS_STR)
+const char *opt_solver_fifth_option0(OPT_ARGS_STR)
 {
   return opt_solver_fifth_option(0, action, val);
 }
 
-char *opt_solver_fifth_option1(OPT_ARGS_STR)
+const char *opt_solver_fifth_option1(OPT_ARGS_STR)
 {
   return opt_solver_fifth_option(1, action, val);
 }
 
-char *opt_solver_fifth_option2(OPT_ARGS_STR)
+const char *opt_solver_fifth_option2(OPT_ARGS_STR)
 {
   return opt_solver_fifth_option(2, action, val);
 }
 
-char *opt_solver_fifth_option3(OPT_ARGS_STR)
+const char *opt_solver_fifth_option3(OPT_ARGS_STR)
 {
   return opt_solver_fifth_option(3, action, val);
 }
 
-char *opt_solver_fifth_option4(OPT_ARGS_STR)
+const char *opt_solver_fifth_option4(OPT_ARGS_STR)
 {
   return opt_solver_fifth_option(4, action, val);
 }
 
-char *opt_solver_first_button(OPT_ARGS_STR)
+const char *opt_solver_first_button(OPT_ARGS_STR)
 {
 #if defined(HAVE_FLTK)
   if(action & GMSH_SET)
@@ -1573,32 +1567,32 @@ char *opt_solver_first_button(OPT_ARGS_STR)
 #endif
 }
 
-char *opt_solver_first_button0(OPT_ARGS_STR)
+const char *opt_solver_first_button0(OPT_ARGS_STR)
 {
   return opt_solver_first_button(0, action, val);
 }
 
-char *opt_solver_first_button1(OPT_ARGS_STR)
+const char *opt_solver_first_button1(OPT_ARGS_STR)
 {
   return opt_solver_first_button(1, action, val);
 }
 
-char *opt_solver_first_button2(OPT_ARGS_STR)
+const char *opt_solver_first_button2(OPT_ARGS_STR)
 {
   return opt_solver_first_button(2, action, val);
 }
 
-char *opt_solver_first_button3(OPT_ARGS_STR)
+const char *opt_solver_first_button3(OPT_ARGS_STR)
 {
   return opt_solver_first_button(3, action, val);
 }
 
-char *opt_solver_first_button4(OPT_ARGS_STR)
+const char *opt_solver_first_button4(OPT_ARGS_STR)
 {
   return opt_solver_first_button(4, action, val);
 }
 
-char *opt_solver_first_button_command(OPT_ARGS_STR)
+const char *opt_solver_first_button_command(OPT_ARGS_STR)
 {
 #if defined(HAVE_FLTK)
   if(action & GMSH_SET)
@@ -1609,32 +1603,32 @@ char *opt_solver_first_button_command(OPT_ARGS_STR)
 #endif
 }
 
-char *opt_solver_first_button_command0(OPT_ARGS_STR)
+const char *opt_solver_first_button_command0(OPT_ARGS_STR)
 {
   return opt_solver_first_button_command(0, action, val);
 }
 
-char *opt_solver_first_button_command1(OPT_ARGS_STR)
+const char *opt_solver_first_button_command1(OPT_ARGS_STR)
 {
   return opt_solver_first_button_command(1, action, val);
 }
 
-char *opt_solver_first_button_command2(OPT_ARGS_STR)
+const char *opt_solver_first_button_command2(OPT_ARGS_STR)
 {
   return opt_solver_first_button_command(2, action, val);
 }
 
-char *opt_solver_first_button_command3(OPT_ARGS_STR)
+const char *opt_solver_first_button_command3(OPT_ARGS_STR)
 {
   return opt_solver_first_button_command(3, action, val);
 }
 
-char *opt_solver_first_button_command4(OPT_ARGS_STR)
+const char *opt_solver_first_button_command4(OPT_ARGS_STR)
 {
   return opt_solver_first_button_command(4, action, val);
 }
 
-char *opt_solver_second_button(OPT_ARGS_STR)
+const char *opt_solver_second_button(OPT_ARGS_STR)
 {
 #if defined(HAVE_FLTK)
   if(action & GMSH_SET)
@@ -1645,32 +1639,32 @@ char *opt_solver_second_button(OPT_ARGS_STR)
 #endif
 }
 
-char *opt_solver_second_button0(OPT_ARGS_STR)
+const char *opt_solver_second_button0(OPT_ARGS_STR)
 {
   return opt_solver_second_button(0, action, val);
 }
 
-char *opt_solver_second_button1(OPT_ARGS_STR)
+const char *opt_solver_second_button1(OPT_ARGS_STR)
 {
   return opt_solver_second_button(1, action, val);
 }
 
-char *opt_solver_second_button2(OPT_ARGS_STR)
+const char *opt_solver_second_button2(OPT_ARGS_STR)
 {
   return opt_solver_second_button(2, action, val);
 }
 
-char *opt_solver_second_button3(OPT_ARGS_STR)
+const char *opt_solver_second_button3(OPT_ARGS_STR)
 {
   return opt_solver_second_button(3, action, val);
 }
 
-char *opt_solver_second_button4(OPT_ARGS_STR)
+const char *opt_solver_second_button4(OPT_ARGS_STR)
 {
   return opt_solver_second_button(4, action, val);
 }
 
-char *opt_solver_second_button_command(OPT_ARGS_STR)
+const char *opt_solver_second_button_command(OPT_ARGS_STR)
 {
 #if defined(HAVE_FLTK)
   if(action & GMSH_SET)
@@ -1681,32 +1675,32 @@ char *opt_solver_second_button_command(OPT_ARGS_STR)
 #endif
 }
 
-char *opt_solver_second_button_command0(OPT_ARGS_STR)
+const char *opt_solver_second_button_command0(OPT_ARGS_STR)
 {
   return opt_solver_second_button_command(0, action, val);
 }
 
-char *opt_solver_second_button_command1(OPT_ARGS_STR)
+const char *opt_solver_second_button_command1(OPT_ARGS_STR)
 {
   return opt_solver_second_button_command(1, action, val);
 }
 
-char *opt_solver_second_button_command2(OPT_ARGS_STR)
+const char *opt_solver_second_button_command2(OPT_ARGS_STR)
 {
   return opt_solver_second_button_command(2, action, val);
 }
 
-char *opt_solver_second_button_command3(OPT_ARGS_STR)
+const char *opt_solver_second_button_command3(OPT_ARGS_STR)
 {
   return opt_solver_second_button_command(3, action, val);
 }
 
-char *opt_solver_second_button_command4(OPT_ARGS_STR)
+const char *opt_solver_second_button_command4(OPT_ARGS_STR)
 {
   return opt_solver_second_button_command(4, action, val);
 }
 
-char *opt_solver_third_button(OPT_ARGS_STR)
+const char *opt_solver_third_button(OPT_ARGS_STR)
 {
 #if defined(HAVE_FLTK)
   if(action & GMSH_SET)
@@ -1717,32 +1711,32 @@ char *opt_solver_third_button(OPT_ARGS_STR)
 #endif
 }
 
-char *opt_solver_third_button0(OPT_ARGS_STR)
+const char *opt_solver_third_button0(OPT_ARGS_STR)
 {
   return opt_solver_third_button(0, action, val);
 }
 
-char *opt_solver_third_button1(OPT_ARGS_STR)
+const char *opt_solver_third_button1(OPT_ARGS_STR)
 {
   return opt_solver_third_button(1, action, val);
 }
 
-char *opt_solver_third_button2(OPT_ARGS_STR)
+const char *opt_solver_third_button2(OPT_ARGS_STR)
 {
   return opt_solver_third_button(2, action, val);
 }
 
-char *opt_solver_third_button3(OPT_ARGS_STR)
+const char *opt_solver_third_button3(OPT_ARGS_STR)
 {
   return opt_solver_third_button(3, action, val);
 }
 
-char *opt_solver_third_button4(OPT_ARGS_STR)
+const char *opt_solver_third_button4(OPT_ARGS_STR)
 {
   return opt_solver_third_button(4, action, val);
 }
 
-char *opt_solver_third_button_command(OPT_ARGS_STR)
+const char *opt_solver_third_button_command(OPT_ARGS_STR)
 {
 #if defined(HAVE_FLTK)
   if(action & GMSH_SET)
@@ -1753,32 +1747,32 @@ char *opt_solver_third_button_command(OPT_ARGS_STR)
 #endif
 }
 
-char *opt_solver_third_button_command0(OPT_ARGS_STR)
+const char *opt_solver_third_button_command0(OPT_ARGS_STR)
 {
   return opt_solver_third_button_command(0, action, val);
 }
 
-char *opt_solver_third_button_command1(OPT_ARGS_STR)
+const char *opt_solver_third_button_command1(OPT_ARGS_STR)
 {
   return opt_solver_third_button_command(1, action, val);
 }
 
-char *opt_solver_third_button_command2(OPT_ARGS_STR)
+const char *opt_solver_third_button_command2(OPT_ARGS_STR)
 {
   return opt_solver_third_button_command(2, action, val);
 }
 
-char *opt_solver_third_button_command3(OPT_ARGS_STR)
+const char *opt_solver_third_button_command3(OPT_ARGS_STR)
 {
   return opt_solver_third_button_command(3, action, val);
 }
 
-char *opt_solver_third_button_command4(OPT_ARGS_STR)
+const char *opt_solver_third_button_command4(OPT_ARGS_STR)
 {
   return opt_solver_third_button_command(4, action, val);
 }
 
-char *opt_solver_fourth_button(OPT_ARGS_STR)
+const char *opt_solver_fourth_button(OPT_ARGS_STR)
 {
 #if defined(HAVE_FLTK)
   if(action & GMSH_SET)
@@ -1789,32 +1783,32 @@ char *opt_solver_fourth_button(OPT_ARGS_STR)
 #endif
 }
 
-char *opt_solver_fourth_button0(OPT_ARGS_STR)
+const char *opt_solver_fourth_button0(OPT_ARGS_STR)
 {
   return opt_solver_fourth_button(0, action, val);
 }
 
-char *opt_solver_fourth_button1(OPT_ARGS_STR)
+const char *opt_solver_fourth_button1(OPT_ARGS_STR)
 {
   return opt_solver_fourth_button(1, action, val);
 }
 
-char *opt_solver_fourth_button2(OPT_ARGS_STR)
+const char *opt_solver_fourth_button2(OPT_ARGS_STR)
 {
   return opt_solver_fourth_button(2, action, val);
 }
 
-char *opt_solver_fourth_button3(OPT_ARGS_STR)
+const char *opt_solver_fourth_button3(OPT_ARGS_STR)
 {
   return opt_solver_fourth_button(3, action, val);
 }
 
-char *opt_solver_fourth_button4(OPT_ARGS_STR)
+const char *opt_solver_fourth_button4(OPT_ARGS_STR)
 {
   return opt_solver_fourth_button(4, action, val);
 }
 
-char *opt_solver_fourth_button_command(OPT_ARGS_STR)
+const char *opt_solver_fourth_button_command(OPT_ARGS_STR)
 {
 #if defined(HAVE_FLTK)
   if(action & GMSH_SET)
@@ -1825,32 +1819,32 @@ char *opt_solver_fourth_button_command(OPT_ARGS_STR)
 #endif
 }
 
-char *opt_solver_fourth_button_command0(OPT_ARGS_STR)
+const char *opt_solver_fourth_button_command0(OPT_ARGS_STR)
 {
   return opt_solver_fourth_button_command(0, action, val);
 }
 
-char *opt_solver_fourth_button_command1(OPT_ARGS_STR)
+const char *opt_solver_fourth_button_command1(OPT_ARGS_STR)
 {
   return opt_solver_fourth_button_command(1, action, val);
 }
 
-char *opt_solver_fourth_button_command2(OPT_ARGS_STR)
+const char *opt_solver_fourth_button_command2(OPT_ARGS_STR)
 {
   return opt_solver_fourth_button_command(2, action, val);
 }
 
-char *opt_solver_fourth_button_command3(OPT_ARGS_STR)
+const char *opt_solver_fourth_button_command3(OPT_ARGS_STR)
 {
   return opt_solver_fourth_button_command(3, action, val);
 }
 
-char *opt_solver_fourth_button_command4(OPT_ARGS_STR)
+const char *opt_solver_fourth_button_command4(OPT_ARGS_STR)
 {
   return opt_solver_fourth_button_command(4, action, val);
 }
 
-char *opt_solver_fifth_button(OPT_ARGS_STR)
+const char *opt_solver_fifth_button(OPT_ARGS_STR)
 {
 #if defined(HAVE_FLTK)
   if(action & GMSH_SET)
@@ -1861,32 +1855,32 @@ char *opt_solver_fifth_button(OPT_ARGS_STR)
 #endif
 }
 
-char *opt_solver_fifth_button0(OPT_ARGS_STR)
+const char *opt_solver_fifth_button0(OPT_ARGS_STR)
 {
   return opt_solver_fifth_button(0, action, val);
 }
 
-char *opt_solver_fifth_button1(OPT_ARGS_STR)
+const char *opt_solver_fifth_button1(OPT_ARGS_STR)
 {
   return opt_solver_fifth_button(1, action, val);
 }
 
-char *opt_solver_fifth_button2(OPT_ARGS_STR)
+const char *opt_solver_fifth_button2(OPT_ARGS_STR)
 {
   return opt_solver_fifth_button(2, action, val);
 }
 
-char *opt_solver_fifth_button3(OPT_ARGS_STR)
+const char *opt_solver_fifth_button3(OPT_ARGS_STR)
 {
   return opt_solver_fifth_button(3, action, val);
 }
 
-char *opt_solver_fifth_button4(OPT_ARGS_STR)
+const char *opt_solver_fifth_button4(OPT_ARGS_STR)
 {
   return opt_solver_fifth_button(4, action, val);
 }
 
-char *opt_solver_fifth_button_command(OPT_ARGS_STR)
+const char *opt_solver_fifth_button_command(OPT_ARGS_STR)
 {
 #if defined(HAVE_FLTK)
   if(action & GMSH_SET)
@@ -1897,27 +1891,27 @@ char *opt_solver_fifth_button_command(OPT_ARGS_STR)
 #endif
 }
 
-char *opt_solver_fifth_button_command0(OPT_ARGS_STR)
+const char *opt_solver_fifth_button_command0(OPT_ARGS_STR)
 {
   return opt_solver_fifth_button_command(0, action, val);
 }
 
-char *opt_solver_fifth_button_command1(OPT_ARGS_STR)
+const char *opt_solver_fifth_button_command1(OPT_ARGS_STR)
 {
   return opt_solver_fifth_button_command(1, action, val);
 }
 
-char *opt_solver_fifth_button_command2(OPT_ARGS_STR)
+const char *opt_solver_fifth_button_command2(OPT_ARGS_STR)
 {
   return opt_solver_fifth_button_command(2, action, val);
 }
 
-char *opt_solver_fifth_button_command3(OPT_ARGS_STR)
+const char *opt_solver_fifth_button_command3(OPT_ARGS_STR)
 {
   return opt_solver_fifth_button_command(3, action, val);
 }
 
-char *opt_solver_fifth_button_command4(OPT_ARGS_STR)
+const char *opt_solver_fifth_button_command4(OPT_ARGS_STR)
 {
   return opt_solver_fifth_button_command(4, action, val);
 }
@@ -1931,7 +1925,7 @@ int _gui_action_valid(int action, int num)
 }
 #endif
 
-char *opt_view_name(OPT_ARGS_STR)
+const char *opt_view_name(OPT_ARGS_STR)
 {
   GET_VIEW(""); 
   if(!data) return "";
@@ -1949,10 +1943,10 @@ char *opt_view_name(OPT_ARGS_STR)
     WID->view_input[0]->value(data->getName().c_str());
   }
 #endif
-  return (char*)data->getName().c_str();
+  return data->getName().c_str();
 }
 
-char *opt_view_format(OPT_ARGS_STR)
+const char *opt_view_format(OPT_ARGS_STR)
 {
   GET_VIEW("");
   if(action & GMSH_SET) {
@@ -1965,14 +1959,14 @@ char *opt_view_format(OPT_ARGS_STR)
   return opt->Format;
 }
 
-char *opt_view_filename(OPT_ARGS_STR)
+const char *opt_view_filename(OPT_ARGS_STR)
 {
   GET_VIEW("");
   if(!data) return "";
-  return (char*)data->getFileName().c_str();
+  return data->getFileName().c_str();
 }
 
-char *opt_view_axes_label0(OPT_ARGS_STR)
+const char *opt_view_axes_label0(OPT_ARGS_STR)
 {
   GET_VIEW("");
   if(action & GMSH_SET) {
@@ -1985,7 +1979,7 @@ char *opt_view_axes_label0(OPT_ARGS_STR)
   return opt->AxesLabel[0];
 }
 
-char *opt_view_axes_label1(OPT_ARGS_STR)
+const char *opt_view_axes_label1(OPT_ARGS_STR)
 {
   GET_VIEW("");
   if(action & GMSH_SET) {
@@ -1998,7 +1992,7 @@ char *opt_view_axes_label1(OPT_ARGS_STR)
   return opt->AxesLabel[1];
 }
 
-char *opt_view_axes_label2(OPT_ARGS_STR)
+const char *opt_view_axes_label2(OPT_ARGS_STR)
 {
   GET_VIEW("");
   if(action & GMSH_SET) {
@@ -2011,7 +2005,7 @@ char *opt_view_axes_label2(OPT_ARGS_STR)
   return opt->AxesLabel[2];
 }
 
-char *opt_view_axes_format0(OPT_ARGS_STR)
+const char *opt_view_axes_format0(OPT_ARGS_STR)
 {
   GET_VIEW("");
   if(action & GMSH_SET) {
@@ -2024,7 +2018,7 @@ char *opt_view_axes_format0(OPT_ARGS_STR)
   return opt->AxesFormat[0];
 }
 
-char *opt_view_axes_format1(OPT_ARGS_STR)
+const char *opt_view_axes_format1(OPT_ARGS_STR)
 {
   GET_VIEW("");
   if(action & GMSH_SET) {
@@ -2037,7 +2031,7 @@ char *opt_view_axes_format1(OPT_ARGS_STR)
   return opt->AxesFormat[1];
 }
 
-char *opt_view_axes_format2(OPT_ARGS_STR)
+const char *opt_view_axes_format2(OPT_ARGS_STR)
 {
   GET_VIEW("");
   if(action & GMSH_SET) {
@@ -2050,7 +2044,7 @@ char *opt_view_axes_format2(OPT_ARGS_STR)
   return opt->AxesFormat[2];
 }
 
-char *opt_view_gen_raise0(OPT_ARGS_STR)
+const char *opt_view_gen_raise0(OPT_ARGS_STR)
 {
   GET_VIEW("");
   if(action & GMSH_SET) {
@@ -2064,7 +2058,7 @@ char *opt_view_gen_raise0(OPT_ARGS_STR)
   return opt->GenRaiseX;
 }
 
-char *opt_view_gen_raise1(OPT_ARGS_STR)
+const char *opt_view_gen_raise1(OPT_ARGS_STR)
 {
   GET_VIEW("");
   if(action & GMSH_SET) {
@@ -2078,7 +2072,7 @@ char *opt_view_gen_raise1(OPT_ARGS_STR)
   return opt->GenRaiseY;
 }
 
-char *opt_view_gen_raise2(OPT_ARGS_STR)
+const char *opt_view_gen_raise2(OPT_ARGS_STR)
 {
   GET_VIEW("");
   if(action & GMSH_SET) {
@@ -2123,7 +2117,7 @@ void _string2stipple(char str[32], int &repeat, int &pattern)
   }
 }
 
-char *opt_view_stipple0(OPT_ARGS_STR)
+const char *opt_view_stipple0(OPT_ARGS_STR)
 {
   GET_VIEW("");
   if(action & GMSH_SET) {
@@ -2134,7 +2128,7 @@ char *opt_view_stipple0(OPT_ARGS_STR)
   return opt->StippleString[0];
 }
 
-char *opt_view_stipple1(OPT_ARGS_STR)
+const char *opt_view_stipple1(OPT_ARGS_STR)
 {
   GET_VIEW("");
   if(action & GMSH_SET) {
@@ -2145,7 +2139,7 @@ char *opt_view_stipple1(OPT_ARGS_STR)
   return opt->StippleString[1];
 }
 
-char *opt_view_stipple2(OPT_ARGS_STR)
+const char *opt_view_stipple2(OPT_ARGS_STR)
 {
   GET_VIEW("");
   if(action & GMSH_SET) {
@@ -2156,7 +2150,7 @@ char *opt_view_stipple2(OPT_ARGS_STR)
   return opt->StippleString[2];
 }
 
-char *opt_view_stipple3(OPT_ARGS_STR)
+const char *opt_view_stipple3(OPT_ARGS_STR)
 {
   GET_VIEW("");
   if(action & GMSH_SET) {
@@ -2167,7 +2161,7 @@ char *opt_view_stipple3(OPT_ARGS_STR)
   return opt->StippleString[3];
 }
 
-char *opt_view_stipple4(OPT_ARGS_STR)
+const char *opt_view_stipple4(OPT_ARGS_STR)
 {
   GET_VIEW("");
   if(action & GMSH_SET) {
@@ -2178,7 +2172,7 @@ char *opt_view_stipple4(OPT_ARGS_STR)
   return opt->StippleString[4];
 }
 
-char *opt_view_stipple5(OPT_ARGS_STR)
+const char *opt_view_stipple5(OPT_ARGS_STR)
 {
   GET_VIEW("");
   if(action & GMSH_SET) {
@@ -2189,7 +2183,7 @@ char *opt_view_stipple5(OPT_ARGS_STR)
   return opt->StippleString[5];
 }
 
-char *opt_view_stipple6(OPT_ARGS_STR)
+const char *opt_view_stipple6(OPT_ARGS_STR)
 {
   GET_VIEW("");
   if(action & GMSH_SET) {
@@ -2200,7 +2194,7 @@ char *opt_view_stipple6(OPT_ARGS_STR)
   return opt->StippleString[6];
 }
 
-char *opt_view_stipple7(OPT_ARGS_STR)
+const char *opt_view_stipple7(OPT_ARGS_STR)
 {
   GET_VIEW("");
   if(action & GMSH_SET) {
@@ -2211,7 +2205,7 @@ char *opt_view_stipple7(OPT_ARGS_STR)
   return opt->StippleString[7];
 }
 
-char *opt_view_stipple8(OPT_ARGS_STR)
+const char *opt_view_stipple8(OPT_ARGS_STR)
 {
   GET_VIEW("");
   if(action & GMSH_SET) {
@@ -2222,7 +2216,7 @@ char *opt_view_stipple8(OPT_ARGS_STR)
   return opt->StippleString[8];
 }
 
-char *opt_view_stipple9(OPT_ARGS_STR)
+const char *opt_view_stipple9(OPT_ARGS_STR)
 {
   GET_VIEW("");
   if(action & GMSH_SET) {
diff --git a/Common/Options.h b/Common/Options.h
index 1bb71c169ca261fae0b0a0dfb99af53aaead5658..22a08795da885f134ba84b63950daae066feedd3 100644
--- a/Common/Options.h
+++ b/Common/Options.h
@@ -32,197 +32,196 @@
 
 // action is a combination of GMSH_SET, GMSH_GET, GMSH_GUI
 
-#define OPT_ARGS_STR   int num, int action, char *val
+#define OPT_ARGS_STR   int num, int action, const char *val
 #define OPT_ARGS_NUM   int num, int action, double val
 #define OPT_ARGS_COL   int num, int action, unsigned int val
 
 // STRINGS
 
-char *opt_general_axes_label0(OPT_ARGS_STR);
-char *opt_general_axes_label1(OPT_ARGS_STR);
-char *opt_general_axes_label2(OPT_ARGS_STR);
-char *opt_general_axes_format0(OPT_ARGS_STR);
-char *opt_general_axes_format1(OPT_ARGS_STR);
-char *opt_general_axes_format2(OPT_ARGS_STR);
-char *opt_general_display(OPT_ARGS_STR);
-char *opt_general_filename(OPT_ARGS_STR);
-char *opt_general_default_filename(OPT_ARGS_STR);
-char *opt_general_tmp_filename(OPT_ARGS_STR);
-char *opt_general_error_filename(OPT_ARGS_STR);
-char *opt_general_session_filename(OPT_ARGS_STR);
-char *opt_general_options_filename(OPT_ARGS_STR);
-char *opt_general_editor(OPT_ARGS_STR);
-char *opt_general_web_browser(OPT_ARGS_STR);
-char *opt_general_gui_theme(OPT_ARGS_STR);
-char *opt_general_graphics_font(OPT_ARGS_STR);
-char *opt_mesh_triangle_options(OPT_ARGS_STR);
-char *opt_solver_socket_name(OPT_ARGS_STR);
-char *opt_solver_name(OPT_ARGS_STR);
-char *opt_solver_name0(OPT_ARGS_STR);
-char *opt_solver_name1(OPT_ARGS_STR);
-char *opt_solver_name2(OPT_ARGS_STR);
-char *opt_solver_name3(OPT_ARGS_STR);
-char *opt_solver_name4(OPT_ARGS_STR);
-char *opt_solver_executable(OPT_ARGS_STR);
-char *opt_solver_executable0(OPT_ARGS_STR);
-char *opt_solver_executable1(OPT_ARGS_STR);
-char *opt_solver_executable2(OPT_ARGS_STR);
-char *opt_solver_executable3(OPT_ARGS_STR);
-char *opt_solver_executable4(OPT_ARGS_STR);
-char *opt_solver_help(OPT_ARGS_STR);
-char *opt_solver_help0(OPT_ARGS_STR);
-char *opt_solver_help1(OPT_ARGS_STR);
-char *opt_solver_help2(OPT_ARGS_STR);
-char *opt_solver_help3(OPT_ARGS_STR);
-char *opt_solver_help4(OPT_ARGS_STR);
-char *opt_solver_extension(OPT_ARGS_STR);
-char *opt_solver_extension0(OPT_ARGS_STR);
-char *opt_solver_extension1(OPT_ARGS_STR);
-char *opt_solver_extension2(OPT_ARGS_STR);
-char *opt_solver_extension3(OPT_ARGS_STR);
-char *opt_solver_extension4(OPT_ARGS_STR);
-char *opt_solver_mesh_name(OPT_ARGS_STR);
-char *opt_solver_mesh_name0(OPT_ARGS_STR);
-char *opt_solver_mesh_name1(OPT_ARGS_STR);
-char *opt_solver_mesh_name2(OPT_ARGS_STR);
-char *opt_solver_mesh_name3(OPT_ARGS_STR);
-char *opt_solver_mesh_name4(OPT_ARGS_STR);
-char *opt_solver_mesh_command(OPT_ARGS_STR);
-char *opt_solver_mesh_command0(OPT_ARGS_STR);
-char *opt_solver_mesh_command1(OPT_ARGS_STR);
-char *opt_solver_mesh_command2(OPT_ARGS_STR);
-char *opt_solver_mesh_command3(OPT_ARGS_STR);
-char *opt_solver_mesh_command4(OPT_ARGS_STR);
-char *opt_solver_socket_command(OPT_ARGS_STR);
-char *opt_solver_socket_command0(OPT_ARGS_STR);
-char *opt_solver_socket_command1(OPT_ARGS_STR);
-char *opt_solver_socket_command2(OPT_ARGS_STR);
-char *opt_solver_socket_command3(OPT_ARGS_STR);
-char *opt_solver_socket_command4(OPT_ARGS_STR);
-char *opt_solver_name_command(OPT_ARGS_STR);
-char *opt_solver_name_command0(OPT_ARGS_STR);
-char *opt_solver_name_command1(OPT_ARGS_STR);
-char *opt_solver_name_command2(OPT_ARGS_STR);
-char *opt_solver_name_command3(OPT_ARGS_STR);
-char *opt_solver_name_command4(OPT_ARGS_STR);
-char *opt_solver_option_command(OPT_ARGS_STR);
-char *opt_solver_option_command0(OPT_ARGS_STR);
-char *opt_solver_option_command1(OPT_ARGS_STR);
-char *opt_solver_option_command2(OPT_ARGS_STR);
-char *opt_solver_option_command3(OPT_ARGS_STR);
-char *opt_solver_option_command4(OPT_ARGS_STR);
-char *opt_solver_first_option(OPT_ARGS_STR);
-char *opt_solver_first_option0(OPT_ARGS_STR);
-char *opt_solver_first_option1(OPT_ARGS_STR);
-char *opt_solver_first_option2(OPT_ARGS_STR);
-char *opt_solver_first_option3(OPT_ARGS_STR);
-char *opt_solver_first_option4(OPT_ARGS_STR);
-char *opt_solver_second_option(OPT_ARGS_STR);
-char *opt_solver_second_option0(OPT_ARGS_STR);
-char *opt_solver_second_option1(OPT_ARGS_STR);
-char *opt_solver_second_option2(OPT_ARGS_STR);
-char *opt_solver_second_option3(OPT_ARGS_STR);
-char *opt_solver_second_option4(OPT_ARGS_STR);
-char *opt_solver_third_option(OPT_ARGS_STR);
-char *opt_solver_third_option0(OPT_ARGS_STR);
-char *opt_solver_third_option1(OPT_ARGS_STR);
-char *opt_solver_third_option2(OPT_ARGS_STR);
-char *opt_solver_third_option3(OPT_ARGS_STR);
-char *opt_solver_third_option4(OPT_ARGS_STR);
-char *opt_solver_fourth_option(OPT_ARGS_STR);
-char *opt_solver_fourth_option0(OPT_ARGS_STR);
-char *opt_solver_fourth_option1(OPT_ARGS_STR);
-char *opt_solver_fourth_option2(OPT_ARGS_STR);
-char *opt_solver_fourth_option3(OPT_ARGS_STR);
-char *opt_solver_fourth_option4(OPT_ARGS_STR);
-char *opt_solver_fifth_option(OPT_ARGS_STR);
-char *opt_solver_fifth_option0(OPT_ARGS_STR);
-char *opt_solver_fifth_option1(OPT_ARGS_STR);
-char *opt_solver_fifth_option2(OPT_ARGS_STR);
-char *opt_solver_fifth_option3(OPT_ARGS_STR);
-char *opt_solver_fifth_option4(OPT_ARGS_STR);
-char *opt_solver_first_button(OPT_ARGS_STR);
-char *opt_solver_first_button0(OPT_ARGS_STR);
-char *opt_solver_first_button1(OPT_ARGS_STR);
-char *opt_solver_first_button2(OPT_ARGS_STR);
-char *opt_solver_first_button3(OPT_ARGS_STR);
-char *opt_solver_first_button4(OPT_ARGS_STR);
-char *opt_solver_first_button_command(OPT_ARGS_STR);
-char *opt_solver_first_button_command0(OPT_ARGS_STR);
-char *opt_solver_first_button_command1(OPT_ARGS_STR);
-char *opt_solver_first_button_command2(OPT_ARGS_STR);
-char *opt_solver_first_button_command3(OPT_ARGS_STR);
-char *opt_solver_first_button_command4(OPT_ARGS_STR);
-char *opt_solver_second_button(OPT_ARGS_STR);
-char *opt_solver_second_button0(OPT_ARGS_STR);
-char *opt_solver_second_button1(OPT_ARGS_STR);
-char *opt_solver_second_button2(OPT_ARGS_STR);
-char *opt_solver_second_button3(OPT_ARGS_STR);
-char *opt_solver_second_button4(OPT_ARGS_STR);
-char *opt_solver_second_button_command(OPT_ARGS_STR);
-char *opt_solver_second_button_command0(OPT_ARGS_STR);
-char *opt_solver_second_button_command1(OPT_ARGS_STR);
-char *opt_solver_second_button_command2(OPT_ARGS_STR);
-char *opt_solver_second_button_command3(OPT_ARGS_STR);
-char *opt_solver_second_button_command4(OPT_ARGS_STR);
-char *opt_solver_third_button(OPT_ARGS_STR);
-char *opt_solver_third_button0(OPT_ARGS_STR);
-char *opt_solver_third_button1(OPT_ARGS_STR);
-char *opt_solver_third_button2(OPT_ARGS_STR);
-char *opt_solver_third_button3(OPT_ARGS_STR);
-char *opt_solver_third_button4(OPT_ARGS_STR);
-char *opt_solver_third_button_command(OPT_ARGS_STR);
-char *opt_solver_third_button_command0(OPT_ARGS_STR);
-char *opt_solver_third_button_command1(OPT_ARGS_STR);
-char *opt_solver_third_button_command2(OPT_ARGS_STR);
-char *opt_solver_third_button_command3(OPT_ARGS_STR);
-char *opt_solver_third_button_command4(OPT_ARGS_STR);
-char *opt_solver_fourth_button(OPT_ARGS_STR);
-char *opt_solver_fourth_button0(OPT_ARGS_STR);
-char *opt_solver_fourth_button1(OPT_ARGS_STR);
-char *opt_solver_fourth_button2(OPT_ARGS_STR);
-char *opt_solver_fourth_button3(OPT_ARGS_STR);
-char *opt_solver_fourth_button4(OPT_ARGS_STR);
-char *opt_solver_fourth_button_command(OPT_ARGS_STR);
-char *opt_solver_fourth_button_command0(OPT_ARGS_STR);
-char *opt_solver_fourth_button_command1(OPT_ARGS_STR);
-char *opt_solver_fourth_button_command2(OPT_ARGS_STR);
-char *opt_solver_fourth_button_command3(OPT_ARGS_STR);
-char *opt_solver_fourth_button_command4(OPT_ARGS_STR);
-char *opt_solver_fifth_button(OPT_ARGS_STR);
-char *opt_solver_fifth_button0(OPT_ARGS_STR);
-char *opt_solver_fifth_button1(OPT_ARGS_STR);
-char *opt_solver_fifth_button2(OPT_ARGS_STR);
-char *opt_solver_fifth_button3(OPT_ARGS_STR);
-char *opt_solver_fifth_button4(OPT_ARGS_STR);
-char *opt_solver_fifth_button_command(OPT_ARGS_STR);
-char *opt_solver_fifth_button_command0(OPT_ARGS_STR);
-char *opt_solver_fifth_button_command1(OPT_ARGS_STR);
-char *opt_solver_fifth_button_command2(OPT_ARGS_STR);
-char *opt_solver_fifth_button_command3(OPT_ARGS_STR);
-char *opt_solver_fifth_button_command4(OPT_ARGS_STR);
-char *opt_view_name(OPT_ARGS_STR);
-char *opt_view_format(OPT_ARGS_STR);
-char *opt_view_filename(OPT_ARGS_STR);
-char *opt_view_axes_label0(OPT_ARGS_STR);
-char *opt_view_axes_label1(OPT_ARGS_STR);
-char *opt_view_axes_label2(OPT_ARGS_STR);
-char *opt_view_axes_format0(OPT_ARGS_STR);
-char *opt_view_axes_format1(OPT_ARGS_STR);
-char *opt_view_axes_format2(OPT_ARGS_STR);
-char *opt_view_gen_raise0(OPT_ARGS_STR);
-char *opt_view_gen_raise1(OPT_ARGS_STR);
-char *opt_view_gen_raise2(OPT_ARGS_STR);
-char *opt_view_stipple0(OPT_ARGS_STR);
-char *opt_view_stipple1(OPT_ARGS_STR);
-char *opt_view_stipple2(OPT_ARGS_STR);
-char *opt_view_stipple3(OPT_ARGS_STR);
-char *opt_view_stipple4(OPT_ARGS_STR);
-char *opt_view_stipple5(OPT_ARGS_STR);
-char *opt_view_stipple6(OPT_ARGS_STR);
-char *opt_view_stipple7(OPT_ARGS_STR);
-char *opt_view_stipple8(OPT_ARGS_STR);
-char *opt_view_stipple9(OPT_ARGS_STR);
+const char *opt_general_axes_label0(OPT_ARGS_STR);
+const char *opt_general_axes_label1(OPT_ARGS_STR);
+const char *opt_general_axes_label2(OPT_ARGS_STR);
+const char *opt_general_axes_format0(OPT_ARGS_STR);
+const char *opt_general_axes_format1(OPT_ARGS_STR);
+const char *opt_general_axes_format2(OPT_ARGS_STR);
+const char *opt_general_display(OPT_ARGS_STR);
+const char *opt_general_filename(OPT_ARGS_STR);
+const char *opt_general_default_filename(OPT_ARGS_STR);
+const char *opt_general_tmp_filename(OPT_ARGS_STR);
+const char *opt_general_error_filename(OPT_ARGS_STR);
+const char *opt_general_session_filename(OPT_ARGS_STR);
+const char *opt_general_options_filename(OPT_ARGS_STR);
+const char *opt_general_editor(OPT_ARGS_STR);
+const char *opt_general_web_browser(OPT_ARGS_STR);
+const char *opt_general_gui_theme(OPT_ARGS_STR);
+const char *opt_general_graphics_font(OPT_ARGS_STR);
+const char *opt_solver_socket_name(OPT_ARGS_STR);
+const char *opt_solver_name(OPT_ARGS_STR);
+const char *opt_solver_name0(OPT_ARGS_STR);
+const char *opt_solver_name1(OPT_ARGS_STR);
+const char *opt_solver_name2(OPT_ARGS_STR);
+const char *opt_solver_name3(OPT_ARGS_STR);
+const char *opt_solver_name4(OPT_ARGS_STR);
+const char *opt_solver_executable(OPT_ARGS_STR);
+const char *opt_solver_executable0(OPT_ARGS_STR);
+const char *opt_solver_executable1(OPT_ARGS_STR);
+const char *opt_solver_executable2(OPT_ARGS_STR);
+const char *opt_solver_executable3(OPT_ARGS_STR);
+const char *opt_solver_executable4(OPT_ARGS_STR);
+const char *opt_solver_help(OPT_ARGS_STR);
+const char *opt_solver_help0(OPT_ARGS_STR);
+const char *opt_solver_help1(OPT_ARGS_STR);
+const char *opt_solver_help2(OPT_ARGS_STR);
+const char *opt_solver_help3(OPT_ARGS_STR);
+const char *opt_solver_help4(OPT_ARGS_STR);
+const char *opt_solver_extension(OPT_ARGS_STR);
+const char *opt_solver_extension0(OPT_ARGS_STR);
+const char *opt_solver_extension1(OPT_ARGS_STR);
+const char *opt_solver_extension2(OPT_ARGS_STR);
+const char *opt_solver_extension3(OPT_ARGS_STR);
+const char *opt_solver_extension4(OPT_ARGS_STR);
+const char *opt_solver_mesh_name(OPT_ARGS_STR);
+const char *opt_solver_mesh_name0(OPT_ARGS_STR);
+const char *opt_solver_mesh_name1(OPT_ARGS_STR);
+const char *opt_solver_mesh_name2(OPT_ARGS_STR);
+const char *opt_solver_mesh_name3(OPT_ARGS_STR);
+const char *opt_solver_mesh_name4(OPT_ARGS_STR);
+const char *opt_solver_mesh_command(OPT_ARGS_STR);
+const char *opt_solver_mesh_command0(OPT_ARGS_STR);
+const char *opt_solver_mesh_command1(OPT_ARGS_STR);
+const char *opt_solver_mesh_command2(OPT_ARGS_STR);
+const char *opt_solver_mesh_command3(OPT_ARGS_STR);
+const char *opt_solver_mesh_command4(OPT_ARGS_STR);
+const char *opt_solver_socket_command(OPT_ARGS_STR);
+const char *opt_solver_socket_command0(OPT_ARGS_STR);
+const char *opt_solver_socket_command1(OPT_ARGS_STR);
+const char *opt_solver_socket_command2(OPT_ARGS_STR);
+const char *opt_solver_socket_command3(OPT_ARGS_STR);
+const char *opt_solver_socket_command4(OPT_ARGS_STR);
+const char *opt_solver_name_command(OPT_ARGS_STR);
+const char *opt_solver_name_command0(OPT_ARGS_STR);
+const char *opt_solver_name_command1(OPT_ARGS_STR);
+const char *opt_solver_name_command2(OPT_ARGS_STR);
+const char *opt_solver_name_command3(OPT_ARGS_STR);
+const char *opt_solver_name_command4(OPT_ARGS_STR);
+const char *opt_solver_option_command(OPT_ARGS_STR);
+const char *opt_solver_option_command0(OPT_ARGS_STR);
+const char *opt_solver_option_command1(OPT_ARGS_STR);
+const char *opt_solver_option_command2(OPT_ARGS_STR);
+const char *opt_solver_option_command3(OPT_ARGS_STR);
+const char *opt_solver_option_command4(OPT_ARGS_STR);
+const char *opt_solver_first_option(OPT_ARGS_STR);
+const char *opt_solver_first_option0(OPT_ARGS_STR);
+const char *opt_solver_first_option1(OPT_ARGS_STR);
+const char *opt_solver_first_option2(OPT_ARGS_STR);
+const char *opt_solver_first_option3(OPT_ARGS_STR);
+const char *opt_solver_first_option4(OPT_ARGS_STR);
+const char *opt_solver_second_option(OPT_ARGS_STR);
+const char *opt_solver_second_option0(OPT_ARGS_STR);
+const char *opt_solver_second_option1(OPT_ARGS_STR);
+const char *opt_solver_second_option2(OPT_ARGS_STR);
+const char *opt_solver_second_option3(OPT_ARGS_STR);
+const char *opt_solver_second_option4(OPT_ARGS_STR);
+const char *opt_solver_third_option(OPT_ARGS_STR);
+const char *opt_solver_third_option0(OPT_ARGS_STR);
+const char *opt_solver_third_option1(OPT_ARGS_STR);
+const char *opt_solver_third_option2(OPT_ARGS_STR);
+const char *opt_solver_third_option3(OPT_ARGS_STR);
+const char *opt_solver_third_option4(OPT_ARGS_STR);
+const char *opt_solver_fourth_option(OPT_ARGS_STR);
+const char *opt_solver_fourth_option0(OPT_ARGS_STR);
+const char *opt_solver_fourth_option1(OPT_ARGS_STR);
+const char *opt_solver_fourth_option2(OPT_ARGS_STR);
+const char *opt_solver_fourth_option3(OPT_ARGS_STR);
+const char *opt_solver_fourth_option4(OPT_ARGS_STR);
+const char *opt_solver_fifth_option(OPT_ARGS_STR);
+const char *opt_solver_fifth_option0(OPT_ARGS_STR);
+const char *opt_solver_fifth_option1(OPT_ARGS_STR);
+const char *opt_solver_fifth_option2(OPT_ARGS_STR);
+const char *opt_solver_fifth_option3(OPT_ARGS_STR);
+const char *opt_solver_fifth_option4(OPT_ARGS_STR);
+const char *opt_solver_first_button(OPT_ARGS_STR);
+const char *opt_solver_first_button0(OPT_ARGS_STR);
+const char *opt_solver_first_button1(OPT_ARGS_STR);
+const char *opt_solver_first_button2(OPT_ARGS_STR);
+const char *opt_solver_first_button3(OPT_ARGS_STR);
+const char *opt_solver_first_button4(OPT_ARGS_STR);
+const char *opt_solver_first_button_command(OPT_ARGS_STR);
+const char *opt_solver_first_button_command0(OPT_ARGS_STR);
+const char *opt_solver_first_button_command1(OPT_ARGS_STR);
+const char *opt_solver_first_button_command2(OPT_ARGS_STR);
+const char *opt_solver_first_button_command3(OPT_ARGS_STR);
+const char *opt_solver_first_button_command4(OPT_ARGS_STR);
+const char *opt_solver_second_button(OPT_ARGS_STR);
+const char *opt_solver_second_button0(OPT_ARGS_STR);
+const char *opt_solver_second_button1(OPT_ARGS_STR);
+const char *opt_solver_second_button2(OPT_ARGS_STR);
+const char *opt_solver_second_button3(OPT_ARGS_STR);
+const char *opt_solver_second_button4(OPT_ARGS_STR);
+const char *opt_solver_second_button_command(OPT_ARGS_STR);
+const char *opt_solver_second_button_command0(OPT_ARGS_STR);
+const char *opt_solver_second_button_command1(OPT_ARGS_STR);
+const char *opt_solver_second_button_command2(OPT_ARGS_STR);
+const char *opt_solver_second_button_command3(OPT_ARGS_STR);
+const char *opt_solver_second_button_command4(OPT_ARGS_STR);
+const char *opt_solver_third_button(OPT_ARGS_STR);
+const char *opt_solver_third_button0(OPT_ARGS_STR);
+const char *opt_solver_third_button1(OPT_ARGS_STR);
+const char *opt_solver_third_button2(OPT_ARGS_STR);
+const char *opt_solver_third_button3(OPT_ARGS_STR);
+const char *opt_solver_third_button4(OPT_ARGS_STR);
+const char *opt_solver_third_button_command(OPT_ARGS_STR);
+const char *opt_solver_third_button_command0(OPT_ARGS_STR);
+const char *opt_solver_third_button_command1(OPT_ARGS_STR);
+const char *opt_solver_third_button_command2(OPT_ARGS_STR);
+const char *opt_solver_third_button_command3(OPT_ARGS_STR);
+const char *opt_solver_third_button_command4(OPT_ARGS_STR);
+const char *opt_solver_fourth_button(OPT_ARGS_STR);
+const char *opt_solver_fourth_button0(OPT_ARGS_STR);
+const char *opt_solver_fourth_button1(OPT_ARGS_STR);
+const char *opt_solver_fourth_button2(OPT_ARGS_STR);
+const char *opt_solver_fourth_button3(OPT_ARGS_STR);
+const char *opt_solver_fourth_button4(OPT_ARGS_STR);
+const char *opt_solver_fourth_button_command(OPT_ARGS_STR);
+const char *opt_solver_fourth_button_command0(OPT_ARGS_STR);
+const char *opt_solver_fourth_button_command1(OPT_ARGS_STR);
+const char *opt_solver_fourth_button_command2(OPT_ARGS_STR);
+const char *opt_solver_fourth_button_command3(OPT_ARGS_STR);
+const char *opt_solver_fourth_button_command4(OPT_ARGS_STR);
+const char *opt_solver_fifth_button(OPT_ARGS_STR);
+const char *opt_solver_fifth_button0(OPT_ARGS_STR);
+const char *opt_solver_fifth_button1(OPT_ARGS_STR);
+const char *opt_solver_fifth_button2(OPT_ARGS_STR);
+const char *opt_solver_fifth_button3(OPT_ARGS_STR);
+const char *opt_solver_fifth_button4(OPT_ARGS_STR);
+const char *opt_solver_fifth_button_command(OPT_ARGS_STR);
+const char *opt_solver_fifth_button_command0(OPT_ARGS_STR);
+const char *opt_solver_fifth_button_command1(OPT_ARGS_STR);
+const char *opt_solver_fifth_button_command2(OPT_ARGS_STR);
+const char *opt_solver_fifth_button_command3(OPT_ARGS_STR);
+const char *opt_solver_fifth_button_command4(OPT_ARGS_STR);
+const char *opt_view_name(OPT_ARGS_STR);
+const char *opt_view_format(OPT_ARGS_STR);
+const char *opt_view_filename(OPT_ARGS_STR);
+const char *opt_view_axes_label0(OPT_ARGS_STR);
+const char *opt_view_axes_label1(OPT_ARGS_STR);
+const char *opt_view_axes_label2(OPT_ARGS_STR);
+const char *opt_view_axes_format0(OPT_ARGS_STR);
+const char *opt_view_axes_format1(OPT_ARGS_STR);
+const char *opt_view_axes_format2(OPT_ARGS_STR);
+const char *opt_view_gen_raise0(OPT_ARGS_STR);
+const char *opt_view_gen_raise1(OPT_ARGS_STR);
+const char *opt_view_gen_raise2(OPT_ARGS_STR);
+const char *opt_view_stipple0(OPT_ARGS_STR);
+const char *opt_view_stipple1(OPT_ARGS_STR);
+const char *opt_view_stipple2(OPT_ARGS_STR);
+const char *opt_view_stipple3(OPT_ARGS_STR);
+const char *opt_view_stipple4(OPT_ARGS_STR);
+const char *opt_view_stipple5(OPT_ARGS_STR);
+const char *opt_view_stipple6(OPT_ARGS_STR);
+const char *opt_view_stipple7(OPT_ARGS_STR);
+const char *opt_view_stipple8(OPT_ARGS_STR);
+const char *opt_view_stipple9(OPT_ARGS_STR);
 
 // NUMBERS
 
@@ -741,35 +740,35 @@ unsigned int opt_view_color_axes(OPT_ARGS_COL);
 // Data structures and global functions
 
 typedef struct {
-  char *str ; 
+  const char *str ; 
   int int1, int2, int3, int4 ;
 } StringX4Int;
 
 typedef struct {
   int level;
-  char *str ;
-  char * (*function)(int num, int action, char *val) ;
-  char *def ;
-  char *help ;
+  const char *str ;
+  const char * (*function)(int num, int action, const char *val) ;
+  const char *def ;
+  const char *help ;
 } StringXString ;
 
 typedef struct {
   int level;
-  char *str;
+  const char *str;
   double (*function)(int num, int action, double val) ;
   double def ;
-  char *help ;
+  const char *help ;
 } StringXNumber ;
 
 typedef struct {
   int level;
-  char *str ; 
+  const char *str ; 
   unsigned int (*function)(int num, int action, unsigned int val) ;
   // the defaults are stored in individual bytes so that we can initialize
   // them statically independently of the machine endianness. They will be
   // packed into unsigned ints at runtime
   unsigned char def1[4], def2[4], def3[4] ;
-  char *help ;
+  const char *help ;
 } StringXColor ;
 
 void Init_Options(int num);
@@ -778,9 +777,9 @@ void ReInit_Options(int num);
 void Print_Options(int num, int level, int diff, int help, const char *filename);
 void Print_OptionsDoc();
 
-StringXString * Get_StringOptionCategory(char * cat);
-StringXNumber * Get_NumberOptionCategory(char * cat);
-StringXColor * Get_ColorOptionCategory(char * cat);
+StringXString *Get_StringOptionCategory(const char *cat);
+StringXNumber *Get_NumberOptionCategory(const char *cat);
+StringXColor *Get_ColorOptionCategory(const char *cat);
 
 void Set_DefaultStringOptions(int num, StringXString s[]);
 void Set_DefaultNumberOptions(int num, StringXNumber s[]);
@@ -790,20 +789,20 @@ void Set_StringOptions_GUI(int num, StringXString s[]);
 void Set_NumberOptions_GUI(int num, StringXNumber s[]);
 void Set_ColorOptions_GUI(int num, StringXColor s[]);
 
-void * Get_StringOption(char *str, StringXString s[]);
-void * Get_NumberOption(char *str, StringXNumber s[]);
-void * Get_ColorOption(char *str, StringXColor s[]);
+void * Get_StringOption(const char *str, StringXString s[]);
+void * Get_NumberOption(const char *str, StringXNumber s[]);
+void * Get_ColorOption(const char *str, StringXColor s[]);
 
 void Print_StringOptions(int num, int level, int diff, int help,
-			 StringXString s[], char *prefix, FILE *file);
+			 StringXString s[], const char *prefix, FILE *file);
 void Print_NumberOptions(int num, int level, int diff, int help,
-			 StringXNumber s[], char *prefix, FILE *file);
+			 StringXNumber s[], const char *prefix, FILE *file);
 void Print_ColorOptions(int num, int level, int diff, int help,
-			StringXColor s[], char *prefix, FILE *file);
+			StringXColor s[], const char *prefix, FILE *file);
 
-void Print_StringOptionsDoc(StringXString s[], char *prefix, FILE * file);
-void Print_NumberOptionsDoc(StringXNumber s[], char *prefix, FILE * file);
-void Print_ColorOptionsDoc(StringXColor s[], char *prefix, FILE * file);
+void Print_StringOptionsDoc(StringXString s[], const char *prefix, FILE * file);
+void Print_NumberOptionsDoc(StringXNumber s[], const char *prefix, FILE * file);
+void Print_ColorOptionsDoc(StringXColor s[], const char *prefix, FILE * file);
 
 GmshColorTable *Get_ColorTable(int num);
 
diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index afa75829ff2f9c679a8dca8978d6bda8ec6580fd..1b5af9a12314e1189f2cc81048958c63bc89bbe6 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.564 2008-02-23 10:43:44 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.565 2008-02-23 15:30:06 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -599,7 +599,7 @@ void file_new_cb(CALLBACK_ARGS)
 #  define NN ")\t"
 #endif
 
-static char *input_formats =
+static const char *input_formats =
   "All files" TT "*" NN
   "Gmsh geometry" TT "*.geo" NN
   "Gmsh mesh" TT "*.msh" NN
@@ -998,18 +998,18 @@ void general_options_ok_cb(CALLBACK_ARGS)
   opt_general_small_axes_position0(0, GMSH_SET, WID->gen_value[26]->value());
   opt_general_small_axes_position1(0, GMSH_SET, WID->gen_value[27]->value());
 
-  opt_general_default_filename(0, GMSH_SET, (char *)WID->gen_input[0]->value());
-  opt_general_editor(0, GMSH_SET, (char *)WID->gen_input[1]->value());
-  opt_general_web_browser(0, GMSH_SET, (char *)WID->gen_input[2]->value());
-  opt_general_axes_format0(0, GMSH_SET, (char *)WID->gen_input[3]->value());
-  opt_general_axes_format1(0, GMSH_SET, (char *)WID->gen_input[4]->value());
-  opt_general_axes_format2(0, GMSH_SET, (char *)WID->gen_input[5]->value());
-  opt_general_axes_label0(0, GMSH_SET, (char *)WID->gen_input[6]->value());
-  opt_general_axes_label1(0, GMSH_SET, (char *)WID->gen_input[7]->value());
-  opt_general_axes_label2(0, GMSH_SET, (char *)WID->gen_input[8]->value());
+  opt_general_default_filename(0, GMSH_SET, WID->gen_input[0]->value());
+  opt_general_editor(0, GMSH_SET, WID->gen_input[1]->value());
+  opt_general_web_browser(0, GMSH_SET, WID->gen_input[2]->value());
+  opt_general_axes_format0(0, GMSH_SET, WID->gen_input[3]->value());
+  opt_general_axes_format1(0, GMSH_SET, WID->gen_input[4]->value());
+  opt_general_axes_format2(0, GMSH_SET, WID->gen_input[5]->value());
+  opt_general_axes_label0(0, GMSH_SET, WID->gen_input[6]->value());
+  opt_general_axes_label1(0, GMSH_SET, WID->gen_input[7]->value());
+  opt_general_axes_label2(0, GMSH_SET, WID->gen_input[8]->value());
 
   opt_general_vector_type(0, GMSH_SET, WID->gen_choice[0]->value() + 1);
-  opt_general_graphics_font(0, GMSH_SET, (char *)WID->gen_choice[1]->text());
+  opt_general_graphics_font(0, GMSH_SET, WID->gen_choice[1]->text());
   opt_general_orthographic(0, GMSH_SET, !WID->gen_choice[2]->value());
   opt_general_axes(0, GMSH_SET, WID->gen_choice[4]->value());
   opt_general_background_gradient(0, GMSH_SET, WID->gen_choice[5]->value());
@@ -1191,7 +1191,7 @@ void solver_options_ok_cb(CALLBACK_ARGS)
 
   opt_solver_max_delay(0, GMSH_SET, WID->solver_value[0]->value());
 
-  opt_solver_socket_name(0, GMSH_SET, (char *)WID->solver_input[0]->value());
+  opt_solver_socket_name(0, GMSH_SET, WID->solver_input[0]->value());
 
   if(CTX.fast_redraw)
     CTX.post.draw = CTX.mesh.draw = 0;
@@ -1772,49 +1772,49 @@ void view_options_ok_cb(CALLBACK_ARGS)
 
       // view_inputs
 
-      char *str;
+      const char *str;
 
-      str = (char *)WID->view_input[0]->value();
+      str = WID->view_input[0]->value();
       if(force || strcmp(str, name))
         opt_view_name(i, GMSH_SET, str);
 
-      str = (char *)WID->view_input[1]->value();
+      str = WID->view_input[1]->value();
       if(force || strcmp(str, format))
         opt_view_format(i, GMSH_SET, str);
 
-      str = (char *)WID->view_input[10]->value();
+      str = WID->view_input[10]->value();
       if(force || strcmp(str, axes_label0))
         opt_view_axes_label0(i, GMSH_SET, str);
 
-      str = (char *)WID->view_input[11]->value();
+      str = WID->view_input[11]->value();
       if(force || strcmp(str, axes_label1))
         opt_view_axes_label1(i, GMSH_SET, str);
 
-      str = (char *)WID->view_input[12]->value();
+      str = WID->view_input[12]->value();
       if(force || strcmp(str, axes_label2))
         opt_view_axes_label2(i, GMSH_SET, str);
 
-      str = (char *)WID->view_input[7]->value();
+      str = WID->view_input[7]->value();
       if(force || strcmp(str, axes_format0))
         opt_view_axes_format0(i, GMSH_SET, str);
 
-      str = (char *)WID->view_input[8]->value();
+      str = WID->view_input[8]->value();
       if(force || strcmp(str, axes_format1))
         opt_view_axes_format1(i, GMSH_SET, str);
 
-      str = (char *)WID->view_input[9]->value();
+      str = WID->view_input[9]->value();
       if(force || strcmp(str, axes_format2))
         opt_view_axes_format2(i, GMSH_SET, str);
 
-      str = (char *)WID->view_input[4]->value();
+      str = WID->view_input[4]->value();
       if(force || strcmp(str, gen_raise0))
         opt_view_gen_raise0(i, GMSH_SET, str);
 
-      str = (char *)WID->view_input[5]->value();
+      str = WID->view_input[5]->value();
       if(force || strcmp(str, gen_raise1))
         opt_view_gen_raise1(i, GMSH_SET, str);
 
-      str = (char *)WID->view_input[6]->value();
+      str = WID->view_input[6]->value();
       if(force || strcmp(str, gen_raise2))
         opt_view_gen_raise2(i, GMSH_SET, str);
 
@@ -1995,7 +1995,7 @@ void visibility_ok_cb(CALLBACK_ARGS)
 void visibility_save_cb(CALLBACK_ARGS)
 {
   std::string str = VisibilityManager::instance()->getStringForGEO();
-  add_infile((char*)str.c_str(), CTX.filename);
+  add_infile(str.c_str(), CTX.filename);
 }
 
 void visibility_delete_cb(CALLBACK_ARGS)
@@ -2103,7 +2103,7 @@ void visibility_number_cb(CALLBACK_ARGS)
   else{ // hide
     val = 0;
   }
-  char *str = (char *)WID->vis_input[what]->value();
+  const char *str = WID->vis_input[what]->value();
   if(type == 1 && what >= 2 && what <= 5) what += 4;
 
   int num = (!strcmp(str, "all") || !strcmp(str, "*")) ? -1 : atoi(str);
@@ -2184,7 +2184,8 @@ static void _apply_visibility(char mode,
 
 void visibility_interactive_cb(CALLBACK_ARGS)
 {
-  char *str = (char*)data, *help;
+  char *str = (char*)data;
+  const char *help;
   int what;
   char mode;
 
@@ -2559,25 +2560,26 @@ void help_about_cb(CALLBACK_ARGS)
   WID->create_about_window();
 }
 
-void _replace_multi_format(char *in, char *val, char *out){
+void _replace_multi_format(const char *in, const char *val, char *out)
+{
   unsigned int i = 0, j = 0;
 
   out[0] = '\0';
   while(i < strlen(in)){
-    if(in[i] == '%' && i != strlen(in)-1){
-      if(in[i+1] == 's'){
+    if(in[i] == '%' && i != strlen(in) - 1){
+      if(in[i + 1] == 's'){
 	strcat(out, val);
 	i += 2;
 	j += strlen(val);
       }
       else{
-	Msg(WARNING, "Skipping unknown format '%%%c' in '%s'", in[i+1], in);
+	Msg(WARNING, "Skipping unknown format '%%%c' in '%s'", in[i + 1], in);
 	i += 2;
       }
     }
     else{
       out[j] = in[i];
-      out[j+1] = '\0';
+      out[j + 1] = '\0';
       i++;
       j++;
     }
@@ -2694,10 +2696,10 @@ void geometry_elementary_add_new_point_cb(CALLBACK_ARGS)
     char ib = SelectEntity(ENT_NONE, vertices, edges, faces, regions, elements);
     if(ib == 'e'){
       add_point(CTX.filename,
-		(char*)WID->context_geometry_input[2]->value(),
-		(char*)WID->context_geometry_input[3]->value(),
-		(char*)WID->context_geometry_input[4]->value(),
-		(char*)WID->context_geometry_input[5]->value());
+		WID->context_geometry_input[2]->value(),
+		WID->context_geometry_input[3]->value(),
+		WID->context_geometry_input[4]->value(),
+		WID->context_geometry_input[5]->value());
       WID->reset_visibility();
       Draw();
     }
@@ -3125,7 +3127,7 @@ void geometry_elementary_add_new_volume_cb(CALLBACK_ARGS)
   _new_surface_volume(2);
 }
 
-static void _action_point_line_surface_volume(int action, int mode, char *what)
+static void _action_point_line_surface_volume(int action, int mode, const char *what)
 {
   std::vector<GVertex*> vertices;
   std::vector<GEdge*> edges;
@@ -3133,7 +3135,7 @@ static void _action_point_line_surface_volume(int action, int mode, char *what)
   std::vector<GRegion*> regions;
   std::vector<MElement*> elements;
   int type;
-  char *str;
+  const char *str;
 
   if(!strcmp(what, "Point")) {
     type = ENT_POINT;
@@ -3278,49 +3280,49 @@ static void _action_point_line_surface_volume(int action, int mode, char *what)
 	switch (action) {
 	case 0:
 	  translate(mode, List1, CTX.filename, what,
-		    (char*)WID->context_geometry_input[6]->value(),
-		    (char*)WID->context_geometry_input[7]->value(),
-		    (char*)WID->context_geometry_input[8]->value());
+		    WID->context_geometry_input[6]->value(),
+		    WID->context_geometry_input[7]->value(),
+		    WID->context_geometry_input[8]->value());
 	  break;
 	case 1:
 	  rotate(mode, List1, CTX.filename, what,
-		 (char*)WID->context_geometry_input[12]->value(),
-		 (char*)WID->context_geometry_input[13]->value(),
-		 (char*)WID->context_geometry_input[14]->value(),
-		 (char*)WID->context_geometry_input[9]->value(),
-		 (char*)WID->context_geometry_input[10]->value(),
-		 (char*)WID->context_geometry_input[11]->value(),
-		 (char*)WID->context_geometry_input[15]->value());
+		 WID->context_geometry_input[12]->value(),
+		 WID->context_geometry_input[13]->value(),
+		 WID->context_geometry_input[14]->value(),
+		 WID->context_geometry_input[9]->value(),
+		 WID->context_geometry_input[10]->value(),
+		 WID->context_geometry_input[11]->value(),
+		 WID->context_geometry_input[15]->value());
 	  break;
 	case 2:
 	  dilate(mode, List1, CTX.filename, what,
-		 (char*)WID->context_geometry_input[16]->value(),
-		 (char*)WID->context_geometry_input[17]->value(),
-		 (char*)WID->context_geometry_input[18]->value(),
-		 (char*)WID->context_geometry_input[19]->value());
+		 WID->context_geometry_input[16]->value(),
+		 WID->context_geometry_input[17]->value(),
+		 WID->context_geometry_input[18]->value(),
+		 WID->context_geometry_input[19]->value());
 	  break;
 	case 3:
 	  symmetry(mode, List1, CTX.filename, what,
-		   (char*)WID->context_geometry_input[20]->value(),
-		   (char*)WID->context_geometry_input[21]->value(),
-		   (char*)WID->context_geometry_input[22]->value(),
-		   (char*)WID->context_geometry_input[23]->value());
+		   WID->context_geometry_input[20]->value(),
+		   WID->context_geometry_input[21]->value(),
+		   WID->context_geometry_input[22]->value(),
+		   WID->context_geometry_input[23]->value());
 	  break;
 	case 4:
 	  extrude(List1, CTX.filename, what,
-		  (char*)WID->context_geometry_input[6]->value(),
-		  (char*)WID->context_geometry_input[7]->value(),
-		  (char*)WID->context_geometry_input[8]->value());
+		  WID->context_geometry_input[6]->value(),
+		  WID->context_geometry_input[7]->value(),
+		  WID->context_geometry_input[8]->value());
 	  break;
 	case 5:
 	  protude(List1, CTX.filename, what,
-		  (char*)WID->context_geometry_input[12]->value(),
-		  (char*)WID->context_geometry_input[13]->value(),
-		  (char*)WID->context_geometry_input[14]->value(),
-		  (char*)WID->context_geometry_input[9]->value(),
-		  (char*)WID->context_geometry_input[10]->value(),
-		  (char*)WID->context_geometry_input[11]->value(),
-		  (char*)WID->context_geometry_input[15]->value());
+		  WID->context_geometry_input[12]->value(),
+		  WID->context_geometry_input[13]->value(),
+		  WID->context_geometry_input[14]->value(),
+		  WID->context_geometry_input[9]->value(),
+		  WID->context_geometry_input[10]->value(),
+		  WID->context_geometry_input[11]->value(),
+		  WID->context_geometry_input[15]->value());
 	  break;
 	case 6:
 	  delet(List1, CTX.filename, what);
@@ -3329,7 +3331,7 @@ static void _action_point_line_surface_volume(int action, int mode, char *what)
 	  add_physical(List1, CTX.filename, type);
 	  break;
 	case 8:
-	  add_charlength(List1, CTX.filename, (char*)WID->context_mesh_input[0]->value());
+	  add_charlength(List1, CTX.filename, WID->context_mesh_input[0]->value());
 	  break;
 	case 9:
 	  add_recosurf(List1, CTX.filename);
@@ -3982,9 +3984,9 @@ static void _add_transfinite(int dim)
       if(dim == 1) {
         if(n > 0)
           add_trsfline(n, p, CTX.filename,
-		       (char*)WID->context_mesh_choice[0]->text(),
-		       (char*)WID->context_mesh_input[2]->value(),
-		       (char*)WID->context_mesh_input[1]->value());
+		       WID->context_mesh_choice[0]->text(),
+		       WID->context_mesh_input[2]->value(),
+		       WID->context_mesh_input[1]->value());
       }
       ZeroHighlight();
       Draw();
@@ -4056,7 +4058,7 @@ static void _add_transfinite(int dim)
             case 2:
               if(n == 3 + 1 || n == 4 + 1)
                 add_trsfsurf(n, p, CTX.filename,
-			     (char*)WID->context_mesh_choice[1]->text());
+			     WID->context_mesh_choice[1]->text());
               else
                 Msg(GERROR, "Wrong number of points for transfinite surface");
               break;
@@ -4126,7 +4128,7 @@ void solver_cb(CALLBACK_ARGS)
   }
   if(SINFO[num].nboptions) {
     char file[256], tmp[256];
-    FixWindowsPath((char*)WID->solver[num].input[0]->value(), file);
+    FixWindowsPath(WID->solver[num].input[0]->value(), file);
     sprintf(tmp, "\"%s\"", file);
     sprintf(file, SINFO[num].name_command, tmp);
     sprintf(tmp, "%s %s", SINFO[num].option_command, file);           
@@ -4161,7 +4163,7 @@ void solver_file_edit_cb(CALLBACK_ARGS)
   char prog[1024], file[1024], cmd[1024];
   int num = (int)(long)data;
   FixWindowsPath(CTX.editor, prog);
-  FixWindowsPath((char*)WID->solver[num].input[0]->value(), file);
+  FixWindowsPath(WID->solver[num].input[0]->value(), file);
   _replace_multi_format(prog, file, cmd);
   SystemCall(cmd);
 }
@@ -4196,7 +4198,7 @@ void solver_command_cb(CALLBACK_ARGS)
     WID->create_message_window(true);
 
   if(strlen(WID->solver[num].input[1]->value())) {
-    FixWindowsPath((char*)WID->solver[num].input[1]->value(), mesh);
+    FixWindowsPath(WID->solver[num].input[1]->value(), mesh);
     sprintf(tmp, "\"%s\"", mesh);
     sprintf(mesh, SINFO[num].mesh_command, tmp);
   }
@@ -4218,7 +4220,7 @@ void solver_command_cb(CALLBACK_ARGS)
     strcpy(command, SINFO[num].button_command[idx]);
   }
 
-  FixWindowsPath((char*)WID->solver[num].input[0]->value(), tmp);
+  FixWindowsPath(WID->solver[num].input[0]->value(), tmp);
   sprintf(arg, "\"%s\"", tmp);
   sprintf(tmp, SINFO[num].name_command, arg);
   sprintf(arg, "%s %s %s", tmp, mesh, command);
@@ -4258,7 +4260,7 @@ void solver_ok_cb(CALLBACK_ARGS)
   opt_solver_client_server(num, GMSH_SET, WID->solver[num].butt[2]->value());
   if(strcmp(opt_solver_executable(num, GMSH_GET, NULL), WID->solver[num].input[2]->value()))
     retry = 1;
-  opt_solver_executable(num, GMSH_SET, (char *)WID->solver[num].input[2]->value());
+  opt_solver_executable(num, GMSH_SET, WID->solver[num].input[2]->value());
   if(retry)
     solver_cb(NULL, data);
 }
@@ -4278,7 +4280,7 @@ static void _view_reload(int index)
   if(index >= 0 && index < (int)PView::list.size()){
     PView *p = PView::list[index];
 
-    if(StatFile((char*)p->getData()->getFileName().c_str())){
+    if(StatFile(p->getData()->getFileName().c_str())){
       Msg(GERROR, "File '%s' does not exist", p->getData()->getFileName().c_str());
       return;
     }
@@ -4286,7 +4288,7 @@ static void _view_reload(int index)
     int n = PView::list.size();
 
     // FIXME: use fileIndex
-    MergeFile((char*)p->getData()->getFileName().c_str());
+    MergeFile(p->getData()->getFileName().c_str());
 
     if((int)PView::list.size() > n){ // we loaded a new view
       // delete old data and replace with new
@@ -4376,12 +4378,12 @@ void view_remove_cb(CALLBACK_ARGS)
   Draw();
 }
 
-static void _view_save_as(int view_num, char *title, int format)
+static void _view_save_as(int view_num, const char *title, int format)
 {
   PView *view = PView::list[view_num];
   
  test:
-  if(file_chooser(0, 1, title, "*", (char*)view->getData()->getFileName().c_str())){
+  if(file_chooser(0, 1, title, "*", view->getData()->getFileName().c_str())){
     std::string name = file_chooser_get_name(1);
     if(CTX.confirm_overwrite) {
       if(!StatFile(name.c_str()))
@@ -4513,9 +4515,9 @@ void view_plugin_input_value_cb(CALLBACK_ARGS)
 
 void view_plugin_input_cb(CALLBACK_ARGS)
 {
-  char* (*f)(int, int, char*) = (char* (*)(int, int, char*)) data;
+  const char* (*f)(int, int, const char*) = (const char* (*)(int, int, const char*)) data;
   Fl_Input *input = (Fl_Input*) w;
-  f(-1, 0, (char*)input->value());
+  f(-1, 0, input->value());
 }
 
 void view_plugin_browser_cb(CALLBACK_ARGS)
@@ -4596,7 +4598,7 @@ void view_plugin_run_cb(CALLBACK_ARGS)
     if(n > MAX_PLUGIN_OPTIONS) n = MAX_PLUGIN_OPTIONS;
     for(int i = 0; i < m; i++) {
       StringXString *sxs = p->getOptionStr(i);
-      sxs->def = (char*)p->dialogBox->input[i]->value();
+      sxs->def = p->dialogBox->input[i]->value();
     }
     for(int i = 0; i < n; i++) {
       StringXNumber *sxn = p->getOption(i);
@@ -4637,18 +4639,18 @@ void view_plugin_cancel_cb(CALLBACK_ARGS)
 
 void con_geometry_define_parameter_cb(CALLBACK_ARGS)
 {
-  add_param((char *)WID->context_geometry_input[0]->value(),
-            (char *)WID->context_geometry_input[1]->value(), CTX.filename);
+  add_param(WID->context_geometry_input[0]->value(),
+            WID->context_geometry_input[1]->value(), CTX.filename);
   WID->reset_visibility();
 }
 
 void con_geometry_define_point_cb(CALLBACK_ARGS)
 {
   add_point(CTX.filename,
-	    (char*)WID->context_geometry_input[2]->value(),
-	    (char*)WID->context_geometry_input[3]->value(),
-	    (char*)WID->context_geometry_input[4]->value(),
-	    (char*)WID->context_geometry_input[5]->value());
+	    WID->context_geometry_input[2]->value(),
+	    WID->context_geometry_input[3]->value(),
+	    WID->context_geometry_input[4]->value(),
+	    WID->context_geometry_input[5]->value());
   WID->reset_visibility();
   ZeroHighlight();
   SetBoundingBox();
diff --git a/Fltk/Colorbar_Window.cpp b/Fltk/Colorbar_Window.cpp
index f715ceb05d40f979c7203b7a30012453495afc8c..00144f47ce918b9d97b616d8105e4e391d9f7dd5 100644
--- a/Fltk/Colorbar_Window.cpp
+++ b/Fltk/Colorbar_Window.cpp
@@ -1,4 +1,4 @@
-// $Id: Colorbar_Window.cpp,v 1.61 2008-02-17 08:47:57 geuzaine Exp $
+// $Id: Colorbar_Window.cpp,v 1.62 2008-02-23 15:30:06 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -327,7 +327,7 @@ void Colorbar_Window::draw()
 
 // Update
 
-void Colorbar_Window::update(char *name, double min, double max,
+void Colorbar_Window::update(const char *name, double min, double max,
                              GmshColorTable *table, bool *changed)
 {
   label = name;
diff --git a/Fltk/Colorbar_Window.h b/Fltk/Colorbar_Window.h
index b9592feb322c7574ea9c7ac4e1dede336fee0ee2..df408acf81d6435af6a36c01699a2ee0ed494810 100644
--- a/Fltk/Colorbar_Window.h
+++ b/Fltk/Colorbar_Window.h
@@ -38,7 +38,7 @@ class Colorbar_Window : public Fl_Window {
   void redraw_marker();
 
   int font_height, marker_height, wedge_height;
-  char *label;
+  const char *label;
 
   double minval, maxval;  // min and max data values
   int wedge_y;     // top coord of color wedge
@@ -53,7 +53,8 @@ class Colorbar_Window : public Fl_Window {
 
 public:
   Colorbar_Window(int x, int y, int w, int h, const char *l=0);
-  void update(char *name, double min, double max, GmshColorTable *ct, bool *changed);
+  void update(const char *name, double min, double max, GmshColorTable *ct,
+	      bool *changed);
 };
 
 #endif
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index 3ded65eb3a729f8d3265265784ebfeff413376df..5228cbb403136e61ca71b85acfad931dda121fdc 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -1,4 +1,4 @@
-// $Id: GUI.cpp,v 1.657 2008-02-23 10:43:44 geuzaine Exp $
+// $Id: GUI.cpp,v 1.658 2008-02-23 15:30:06 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -426,10 +426,10 @@ int GetFontEnum(int index)
   return FL_HELVETICA;
 }
 
-char *GetFontName(int index)
+const char *GetFontName(int index)
 {
   if(index >= 0 && index < NUM_FONTS)
-    return (char*)menu_font_names[index].label();
+    return menu_font_names[index].label();
   return "Helvetica";
 }
 
@@ -3642,7 +3642,7 @@ void GUI::update_view_window(int num)
   opt_view_color_text3d(num, GMSH_GUI, 0);
   opt_view_color_axes(num, GMSH_GUI, 0);
 
-  view_colorbar_window->update((char*)data->getName().c_str(), data->getMin(), 
+  view_colorbar_window->update(data->getName().c_str(), data->getMin(), 
 			       data->getMax(), &opt->CT, &view->getChanged());
 }
 
diff --git a/Fltk/GUI.h b/Fltk/GUI.h
index 4c169806d57d94efe70b9c324ad744ed4a6a86c5..054efcc34b72c36ab07979a206a1aae691d596f4 100644
--- a/Fltk/GUI.h
+++ b/Fltk/GUI.h
@@ -64,7 +64,7 @@
 // The dynamic contexts
 
 typedef struct{
-  char *label;
+  const char *label;
   Fl_Callback* callback;
   void *arg;
 } Context_Item;
@@ -331,7 +331,7 @@ public:
 // some utility font functions
 int GetFontIndex(const char *fontname);
 int GetFontEnum(int index);
-char *GetFontName(int index);
+const char *GetFontName(int index);
 int GetFontAlign(const char *alignstr);
 int GetFontSize();
 
diff --git a/Fltk/GUI_Projection.cpp b/Fltk/GUI_Projection.cpp
index 886340001dcd524b83591df54750edce10cb8b1b..9870eb8800ab70b506eec6445a31cf4bfefcfe34 100644
--- a/Fltk/GUI_Projection.cpp
+++ b/Fltk/GUI_Projection.cpp
@@ -23,7 +23,7 @@ extern Context_T CTX;
 #include "FM_RevolvedParabolaProjectionSurface.h"
 #include "FM_TranslatedParabolaProjectionSurface.h"
 
-static fourierProjectionFace *createProjectionFaceFromName(char *name)
+static fourierProjectionFace *createProjectionFaceFromName(const char *name)
 {
   GModel *m = GModel::current();
   int tag = m->getNumFaces() + 1;
@@ -637,7 +637,7 @@ void select_cb(Fl_Widget *w, void *data)
   projectionEditor *e = (projectionEditor*)data;
 
   int what = e->getSelectionMode();
-  char *str;
+  const char *str;
 
   switch(what){
   case ENT_ALL: CTX.pick_elements = 1; str = "Elements"; break;
diff --git a/Fltk/Makefile b/Fltk/Makefile
index 1a329939955ae937a2e86e483ef8b2a00ad709b5..dba21ae265a5dcca34b7b85ee8da6ee8f23a7b98 100644
--- a/Fltk/Makefile
+++ b/Fltk/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.169 2008-02-17 08:47:57 geuzaine Exp $
+# $Id: Makefile,v 1.170 2008-02-23 15:30:07 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -79,20 +79,14 @@ Main.o: Main.cpp GUI.h Opengl_Window.h Colorbar_Window.h \
   ../Numeric/NumericEmbedded.h Solvers.h ../Plugin/PluginManager.h \
   ../Plugin/Plugin.h ../Post/PView.h ../Post/PViewData.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Mesh/Field.h ../Geo/Geo.h ../Common/GmshDefines.h \
-  ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \
-  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SBoundingBox3d.h \
-  ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
-  ../Post/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h \
-  ../Mesh/BackgroundMesh.h
+  ../Post/AdaptiveViews.h ../Common/GmshMatrix.h ../Geo/GModel.h \
+  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Mesh/Field.h ../Geo/Geo.h ../Common/GmshDefines.h \
+  ../Geo/gmshSurface.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
+  ../Geo/GEdge.h ../Post/OctreePost.h ../Common/Octree.h \
+  ../Common/OctreeInternals.h ../Mesh/BackgroundMesh.h
 Message.o: Message.cpp ../Common/Message.h ../Common/GmshUI.h \
   ../Common/Context.h ../DataStr/List.h ../Common/Options.h \
   ../Post/ColorTable.h GUI.h Opengl_Window.h Colorbar_Window.h \
@@ -106,8 +100,8 @@ GUI.o: GUI.cpp ../Common/GmshUI.h ../Common/GmshDefines.h \
   ../Common/CommandLine.h ../Mesh/Generator.h Solvers.h \
   ../Plugin/PluginManager.h ../Plugin/Plugin.h ../Post/PView.h \
   ../Post/PViewData.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../Common/GmshMatrix.h Shortcut_Window.h
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../Common/GmshMatrix.h \
+  Shortcut_Window.h
 GUI_Extras.o: GUI_Extras.cpp ../Common/GmshUI.h ../Common/GmshDefines.h \
   ../Parser/CreateFile.h ../Common/Options.h ../Post/ColorTable.h \
   ../Common/Context.h ../DataStr/List.h ../Graphics/Draw.h \
@@ -116,105 +110,82 @@ GUI_Extras.o: GUI_Extras.cpp ../Common/GmshUI.h ../Common/GmshDefines.h \
   Shortcut_Window.h File_Picker.h
 GUI_Projection.o: GUI_Projection.cpp ../Geo/GModelIO_Fourier.h \
   ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
-  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \
-  ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h \
-  ../Geo/SPoint2.h ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/Pair.h ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h ../Graphics/Draw.h \
-  ../Common/Options.h ../Post/ColorTable.h ../Common/Context.h \
-  ../DataStr/List.h ../Parser/OpenFile.h ../Graphics/SelectBuffer.h \
-  GUI_Projection.h ../Common/GmshUI.h ../Geo/fourierProjectionFace.h \
-  ../Geo/GModel.h ../Geo/Range.h GUI.h Opengl_Window.h Colorbar_Window.h \
-  Popup_Button.h SpherePosition_Widget.h Shortcut_Window.h GUI_Extras.h \
-  ../Geo/fourierFace.h ../Geo/GFace.h ../Geo/GModel.h ../Geo/Range.h \
-  ../Geo/fourierEdge.h ../Geo/GEdge.h ../Geo/GModel.h \
-  ../Geo/fourierVertex.h ../Geo/GModel.h ../Geo/GVertex.h \
-  ../Geo/MVertex.h ../Common/Message.h
+  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
+  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/SVector3.h ../Geo/GFace.h \
+  ../Geo/GEdgeLoop.h ../Geo/Pair.h ../Geo/GRegion.h ../Geo/MElement.h \
+  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h \
+  ../Graphics/Draw.h ../Geo/SBoundingBox3d.h ../Common/Options.h \
+  ../Post/ColorTable.h ../Common/Context.h ../DataStr/List.h \
+  ../Parser/OpenFile.h ../Graphics/SelectBuffer.h ../Geo/GVertex.h \
+  ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h GUI_Projection.h \
+  ../Common/GmshUI.h ../Geo/GModel.h ../Geo/fourierProjectionFace.h GUI.h \
+  Opengl_Window.h Colorbar_Window.h Popup_Button.h \
+  SpherePosition_Widget.h Shortcut_Window.h GUI_Extras.h \
+  ../Geo/fourierFace.h ../Geo/fourierEdge.h ../Geo/fourierVertex.h \
+  ../Common/Message.h
 GUI_Classifier.o: GUI_Classifier.cpp GUI_Classifier.h ../Common/GmshUI.h \
   ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
-  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \
-  ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h \
-  ../Geo/SPoint2.h ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/Pair.h ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h GUI.h Opengl_Window.h \
-  Colorbar_Window.h ../Post/ColorTable.h Popup_Button.h \
-  SpherePosition_Widget.h Shortcut_Window.h ../Graphics/Draw.h \
-  ../Common/Options.h ../Common/Context.h ../DataStr/List.h \
-  ../Graphics/SelectBuffer.h GUI_Projection.h \
-  ../Geo/fourierProjectionFace.h ../Geo/GModel.h ../Geo/Range.h \
+  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
+  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/SVector3.h ../Geo/GFace.h \
+  ../Geo/GEdgeLoop.h ../Geo/Pair.h ../Geo/GRegion.h ../Geo/MElement.h \
+  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h \
+  GUI.h Opengl_Window.h Colorbar_Window.h ../Post/ColorTable.h \
+  Popup_Button.h SpherePosition_Widget.h Shortcut_Window.h \
+  ../Graphics/Draw.h ../Geo/SBoundingBox3d.h ../Common/Options.h \
+  ../Common/Context.h ../DataStr/List.h ../Graphics/SelectBuffer.h \
+  ../Geo/GVertex.h ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h \
+  GUI_Projection.h ../Geo/fourierProjectionFace.h ../Geo/GModel.h \
   GUI_Extras.h ../Common/Message.h ../Mesh/meshGFaceDelaunayInsertion.h \
-  ../Mesh/meshGFaceOptimize.h ../Mesh/meshGFaceDelaunayInsertion.h \
-  ../Geo/discreteEdge.h ../Geo/GModel.h ../Geo/GEdge.h ../Geo/Geo.h \
-  ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \
-  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SBoundingBox3d.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../Geo/SPoint2.h ../Geo/ExtrudeParams.h \
-  ../Common/SmoothData.h ../Geo/discreteFace.h ../Geo/GModel.h \
-  ../Geo/GFace.h ../Geo/Geo.h
+  ../Mesh/meshGFaceOptimize.h ../Geo/MEdge.h \
+  ../Mesh/meshGFaceDelaunayInsertion.h ../Geo/discreteEdge.h ../Geo/Geo.h \
+  ../Geo/gmshSurface.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
+  ../DataStr/Tree.h ../DataStr/avl.h ../Geo/ExtrudeParams.h \
+  ../Common/SmoothData.h ../Geo/discreteFace.h
 Callbacks.o: Callbacks.cpp ../Common/GmshUI.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/Tools.h ../DataStr/List.h \
   ../DataStr/Tree.h ../DataStr/avl.h ../Geo/GModel.h ../Geo/GVertex.h \
   ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/GeoStringInterface.h ../Geo/findLinks.h ../Mesh/Generator.h \
-  ../Mesh/HighOrder.h ../Graphics/Draw.h ../Graphics/SelectBuffer.h \
-  ../Post/PView.h ../Post/PViewData.h ../Post/PViewOptions.h \
-  ../Post/ColorTable.h ../Parser/CreateFile.h ../Parser/OpenFile.h \
-  ../Common/CommandLine.h ../Common/Context.h ../Common/Options.h GUI.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Geo/MElement.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h \
+  ../Geo/GeoStringInterface.h ../DataStr/List.h ../Geo/findLinks.h \
+  ../Mesh/Generator.h ../Mesh/HighOrder.h ../Graphics/Draw.h \
+  ../Geo/SBoundingBox3d.h ../Graphics/SelectBuffer.h ../Geo/GVertex.h \
+  ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h ../Post/PView.h \
+  ../Post/PViewData.h ../Post/PViewOptions.h ../Post/ColorTable.h \
+  ../Parser/CreateFile.h ../Parser/OpenFile.h ../Common/CommandLine.h \
+  ../Common/Context.h ../Common/Options.h ../Post/ColorTable.h GUI.h \
   Opengl_Window.h Colorbar_Window.h Popup_Button.h \
   SpherePosition_Widget.h GUI_Extras.h Callbacks.h ../Plugin/Plugin.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../Common/GmshMatrix.h ../Plugin/PluginManager.h ../Plugin/Plugin.h \
-  ../Common/Visibility.h ../Common/GmshDefines.h ../Numeric/Numeric.h \
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../Common/GmshMatrix.h \
+  ../Plugin/PluginManager.h ../Plugin/Plugin.h ../Common/Visibility.h \
+  ../Common/GmshDefines.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h Solvers.h ../Common/OS.h ../Mesh/Field.h \
-  ../Geo/Geo.h ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h \
-  ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint2.h ../Geo/ExtrudeParams.h \
-  ../Common/SmoothData.h ../Post/OctreePost.h ../Common/Octree.h \
-  ../Common/OctreeInternals.h ../Mesh/BackgroundMesh.h
+  ../Geo/Geo.h ../Geo/gmshSurface.h ../DataStr/Tree.h \
+  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Post/OctreePost.h \
+  ../Common/Octree.h ../Common/OctreeInternals.h ../Mesh/BackgroundMesh.h
 Opengl.o: Opengl.cpp ../Common/GmshUI.h ../Common/GmshDefines.h \
   ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../Common/Context.h \
   ../DataStr/List.h ../Graphics/Draw.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Graphics/SelectBuffer.h ../Geo/GVertex.h \
-  ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
-  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/GFace.h ../Geo/GEntity.h \
-  ../Geo/GPoint.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/SPoint2.h \
-  ../Geo/SVector3.h ../Geo/Pair.h ../Geo/GRegion.h ../Geo/GEntity.h GUI.h \
-  Opengl_Window.h Colorbar_Window.h ../Post/ColorTable.h Popup_Button.h \
-  SpherePosition_Widget.h ../Graphics/gl2ps.h
+  ../Geo/GEntity.h ../Geo/Range.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
+  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GVertex.h ../Geo/SVector3.h \
+  ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/Pair.h \
+  ../Geo/GRegion.h GUI.h Opengl_Window.h Colorbar_Window.h \
+  ../Post/ColorTable.h Popup_Button.h SpherePosition_Widget.h \
+  ../Graphics/gl2ps.h
 Opengl_Window.o: Opengl_Window.cpp ../Common/GmshUI.h \
   ../Common/GmshDefines.h ../Common/Message.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h ../Common/Context.h ../DataStr/List.h \
   ../Graphics/Draw.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Graphics/SelectBuffer.h ../Geo/GVertex.h ../Geo/GEntity.h \
-  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h GUI.h Opengl_Window.h \
-  Colorbar_Window.h ../Post/ColorTable.h Popup_Button.h \
+  ../Geo/Range.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h \
+  ../Geo/GEdge.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/GFace.h \
+  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/Pair.h ../Geo/GRegion.h GUI.h \
+  Opengl_Window.h Colorbar_Window.h ../Post/ColorTable.h Popup_Button.h \
   SpherePosition_Widget.h ../Geo/MElement.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h
+  ../Geo/MEdge.h ../Geo/MFace.h
 Colorbar_Window.o: Colorbar_Window.cpp ../Common/GmshUI.h GUI.h \
   Opengl_Window.h Colorbar_Window.h ../Post/ColorTable.h Popup_Button.h \
   SpherePosition_Widget.h ../Common/Context.h ../DataStr/List.h
diff --git a/Fltk/Message.cpp b/Fltk/Message.cpp
index 97523f01019dca10adde3780ffa768a9496a42ca..5798500aea6bebfe1bb4aaa9cfc3b780d2d0ef4b 100644
--- a/Fltk/Message.cpp
+++ b/Fltk/Message.cpp
@@ -1,4 +1,4 @@
-// $Id: Message.cpp,v 1.84 2008-02-22 07:59:00 geuzaine Exp $
+// $Id: Message.cpp,v 1.85 2008-02-23 15:30:07 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -69,7 +69,7 @@ void Msg(int level, const char *fmt, ...)
 {
   va_list args;
   int abort = 0, verb = 0, window = -1, log = 1, color = 0;
-  char *str = NULL;
+  const char *str = NULL;
 
   // standard messages in black
   // errors, wanrnings in red
diff --git a/Fltk/Opengl.cpp b/Fltk/Opengl.cpp
index baa7060ef4deb2c4a4ad1703d58856a8393db1cc..6fb1a55ef91b648a8825fb3e1a3e2820722b3ffd 100644
--- a/Fltk/Opengl.cpp
+++ b/Fltk/Opengl.cpp
@@ -1,4 +1,4 @@
-// $Id: Opengl.cpp,v 1.77 2008-02-22 07:59:00 geuzaine Exp $
+// $Id: Opengl.cpp,v 1.78 2008-02-23 15:30:07 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -46,7 +46,7 @@ void Draw(void)
   WID->redraw_opengl();
 }
 
-void SanitizeTeXString(char *in, char *out)
+void SanitizeTeXString(const char *in, char *out)
 {
   // if there is a '$' or a '\' in the string, assume the author knows
   // what he's doing:
@@ -74,7 +74,7 @@ void SanitizeTeXString(char *in, char *out)
   *out = '\0';
 }
 
-void Draw_String(char *s, char *font_name, int font_enum, int font_size, int align)
+void Draw_String(const char *s, const char *font_name, int font_enum, int font_size, int align)
 {
   if(CTX.printing && !CTX.print.text) return;
 
@@ -140,22 +140,22 @@ void Draw_String(char *s, char *font_name, int font_enum, int font_size, int ali
   }
 }
 
-void Draw_String(char *s)
+void Draw_String(const char *s)
 {
   Draw_String(s, CTX.gl_font, CTX.gl_font_enum, CTX.gl_fontsize, 0);
 }
 
-void Draw_String_Center(char *s)
+void Draw_String_Center(const char *s)
 {
   Draw_String(s, CTX.gl_font, CTX.gl_font_enum, CTX.gl_fontsize, 1);
 }
 
-void Draw_String_Right(char *s)
+void Draw_String_Right(const char *s)
 {
   Draw_String(s, CTX.gl_font, CTX.gl_font_enum, CTX.gl_fontsize, 2);
 }
 
-void Draw_String(char *s, double style)
+void Draw_String(const char *s, double style)
 {
   unsigned int bits = (unsigned int)style;
 
@@ -167,7 +167,7 @@ void Draw_String(char *s, double style)
     int font = (bits>>8 & 0xff);
     int align = (bits>>16 & 0xff);
     int font_enum = GetFontEnum(font);
-    char *font_name = GetFontName(font);
+    const char *font_name = GetFontName(font);
     if(!size) size = CTX.gl_fontsize;
     Draw_String(s, font_name, font_enum, size, align);
   }
diff --git a/Fltk/Solvers.cpp b/Fltk/Solvers.cpp
index 4db85bc842d41610a3d2c5307393237bec661e02..03ab1e551d6acb22ae10b1c15d9991bd5bb1798a 100644
--- a/Fltk/Solvers.cpp
+++ b/Fltk/Solvers.cpp
@@ -1,4 +1,4 @@
-// $Id: Solvers.cpp,v 1.60 2008-02-22 07:59:00 geuzaine Exp $
+// $Id: Solvers.cpp,v 1.61 2008-02-23 15:30:07 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -77,7 +77,7 @@ int WaitForData(int socket, int num, double waitint)
 // This routine either launches a solver and waits for some answer (if
 // num >= 0), or simply waits for messages (if num < 0)
 
-int Solver(int num, char *args)
+int Solver(int num, const char *args)
 {
   char command[1024], sockname[1024], prog[1024], tmp[1024], tmp2[1024];
 
diff --git a/Fltk/Solvers.h b/Fltk/Solvers.h
index dbced776fff00f241b72f92972e0fb4fffa7c4ee..dbf7839d904412ebce285c21eb9650d12ee5c346 100644
--- a/Fltk/Solvers.h
+++ b/Fltk/Solvers.h
@@ -31,13 +31,13 @@ typedef struct{
   char option_name[MAXSOLVERS][256], option_command[256];
   char option[MAXSOLVERS][100][256];
   int  nboptions, nbval[MAXSOLVERS];
-  char *help;
+  const char *help;
   int client_server, popup_messages, merge_views;
   int pid;
 } SolverInfo ;
 
 extern SolverInfo SINFO[MAXSOLVERS] ;
 
-int Solver(int num, char *args);
+int Solver(int num, const char *args);
 
 #endif
diff --git a/Geo/GModelIO_Mesh.cpp b/Geo/GModelIO_Mesh.cpp
index 857b9877557c2bbe59f988dd98928039b8b12121..0c599353e20186a97932da349bf295c676311ec4 100644
--- a/Geo/GModelIO_Mesh.cpp
+++ b/Geo/GModelIO_Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: GModelIO_Mesh.cpp,v 1.37 2008-02-22 21:09:00 geuzaine Exp $
+// $Id: GModelIO_Mesh.cpp,v 1.38 2008-02-23 15:30:07 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -995,7 +995,7 @@ int GModel::writeSTL(const std::string &name, bool binary, bool saveAll,
   return 1;
 }
 
-static int skipUntil(FILE *fp, char *key)
+static int skipUntil(FILE *fp, const char *key)
 {
   char str[256], key_bracket[256];
   strcpy(key_bracket, key);
@@ -1036,7 +1036,8 @@ static int readElementsVRML(FILE *fp, std::vector<MVertex*> &vertexVector, int r
   idx.push_back(i);
 
   // check if vertex indices are separated by commas
-  char tmp[256], *format;
+  char tmp[256];
+  const char *format;
   fpos_t position;
   fgetpos(fp, &position);
   fgets(tmp, sizeof(tmp), fp);
diff --git a/Geo/GeoStringInterface.cpp b/Geo/GeoStringInterface.cpp
index 5b77310544a68e34a6b0888051b7f1e6a802c17f..bd6b0653f67cdb0154a57c382acdbcc061fb0638 100644
--- a/Geo/GeoStringInterface.cpp
+++ b/Geo/GeoStringInterface.cpp
@@ -1,4 +1,4 @@
-// $Id: GeoStringInterface.cpp,v 1.16 2008-02-22 07:49:38 geuzaine Exp $
+// $Id: GeoStringInterface.cpp,v 1.17 2008-02-23 15:30:07 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -37,7 +37,7 @@ extern Context_T CTX;
 // Some old systems don't have snprintf... Just call sprintf instead.
 
 #if defined(HAVE_NO_SNPRINTF)
-int snprintf(char *str, size_t size, const char* fmt, ...){
+int snprintf(const char *str, size_t size, const char* fmt, ...){
   va_list args;
   va_start(args, fmt);
   int ret = vsprintf(str, fmt, args);
@@ -46,7 +46,7 @@ int snprintf(char *str, size_t size, const char* fmt, ...){
 }
 #endif
 
-double evaluate_scalarfunction(char *var, double val, char *funct)
+double evaluate_scalarfunction(const char *var, double val, const char *funct)
 {
   FILE *tempf;
   tempf = gmsh_yyin;
@@ -79,7 +79,7 @@ double evaluate_scalarfunction(char *var, double val, char *funct)
   return *(double *)List_Pointer(TheSymbol_P->val, 0);
 }
 
-void add_infile(char *text, char *fich, bool deleted_something)
+void add_infile(const char *text, const char *fich, bool deleted_something)
 {
   if(!(gmsh_yyin = fopen(CTX.tmp_filename_fullpath, "w"))) {
     Msg(GERROR, "Unable to open temporary file '%s'", CTX.tmp_filename_fullpath);
@@ -132,7 +132,7 @@ void add_infile(char *text, char *fich, bool deleted_something)
   fclose(file);
 }
 
-void coherence(char *fich)
+void coherence(const char *fich)
 {
   add_infile("Coherence;", fich, true);
 }
@@ -151,7 +151,7 @@ void strncat_list(char *text, List_T *list)
   }
 }
 
-void delet(List_T *list, char *fich, char *what)
+void delet(List_T *list, const char *fich, const char *what)
 {
   char text[BUFFSIZE];
 
@@ -161,7 +161,7 @@ void delet(List_T *list, char *fich, char *what)
   add_infile(text, fich, true);
 }
 
-void add_trsfsurf(int N, int *l, char *fich, char *dir)
+void add_trsfsurf(int N, int *l, const char *fich, const char *dir)
 {
   char text[BUFFSIZE], text2[BUFFSIZE];
 
@@ -182,7 +182,7 @@ void add_trsfsurf(int N, int *l, char *fich, char *dir)
   add_infile(text, fich);
 }
 
-void add_charlength(List_T *list, char *fich, char *lc)
+void add_charlength(List_T *list, const char *fich, const char *lc)
 {
   char text[BUFFSIZE];
 
@@ -194,7 +194,7 @@ void add_charlength(List_T *list, char *fich, char *lc)
   add_infile(text, fich);
 }
 
-void add_recosurf(List_T *list, char *fich)
+void add_recosurf(List_T *list, const char *fich)
 {
   char text[BUFFSIZE];
 
@@ -204,7 +204,8 @@ void add_recosurf(List_T *list, char *fich)
   add_infile(text, fich);
 }
 
-void add_trsfline(int N, int *l, char *fich, char *type, char *typearg, char *pts)
+void add_trsfline(int N, int *l, const char *fich, const char *type, 
+		  const char *typearg, const char *pts)
 {
   char text[BUFFSIZE], text2[BUFFSIZE];
 
@@ -224,14 +225,15 @@ void add_trsfline(int N, int *l, char *fich, char *type, char *typearg, char *pt
   add_infile(text, fich);
 }
 
-void add_param(char *par, char *value, char *fich)
+void add_param(const char *par, const char *value, const char *fich)
 {
   char text[BUFFSIZE];
   snprintf(text, BUFFSIZE, "%s = %s;", par, value);
   add_infile(text, fich);
 }
 
-void add_point(char *fich, char *x, char *y, char *z, char *lc)
+void add_point(const char *fich, const char *x, const char *y, const char *z, 
+	       const char *lc)
 {
   char text[BUFFSIZE];
   int ip = NEWPOINT();
@@ -239,7 +241,8 @@ void add_point(char *fich, char *x, char *y, char *z, char *lc)
   add_infile(text, fich);
 }
 
-void add_attractor(char *fich, int ip, int typ, char *ax, char *ay, char *ad)
+void add_attractor(const char *fich, int ip, int typ,
+		   const char *ax, const char *ay, const char *ad)
 {
   char text[BUFFSIZE];
   if(typ == 0) {
@@ -255,7 +258,7 @@ void add_attractor(char *fich, int ip, int typ, char *ax, char *ay, char *ad)
 }
 
 
-void add_line(int p1, int p2, char *fich)
+void add_line(int p1, int p2, const char *fich)
 {
   char text[BUFFSIZE];
   int iseg;
@@ -272,7 +275,7 @@ void add_line(int p1, int p2, char *fich)
   add_infile(text, fich);
 }
 
-void add_circ(int p1, int p2, int p3, char *fich)
+void add_circ(int p1, int p2, int p3, const char *fich)
 {
   char text[BUFFSIZE];
 
@@ -280,7 +283,7 @@ void add_circ(int p1, int p2, int p3, char *fich)
   add_infile(text, fich);
 }
 
-void add_ell(int p1, int p2, int p3, int p4, char *fich)
+void add_ell(int p1, int p2, int p3, int p4, const char *fich)
 {
   char text[BUFFSIZE];
 
@@ -289,7 +292,7 @@ void add_ell(int p1, int p2, int p3, int p4, char *fich)
   add_infile(text, fich);
 }
 
-void add_spline(int N, int *p, char *fich)
+void add_spline(int N, int *p, const char *fich)
 {
   char text[BUFFSIZE], text2[BUFFSIZE];
 
@@ -304,7 +307,7 @@ void add_spline(int N, int *p, char *fich)
   add_infile(text, fich);
 }
 
-void add_bezier(int N, int *p, char *fich)
+void add_bezier(int N, int *p, const char *fich)
 {
   char text[BUFFSIZE], text2[BUFFSIZE];
 
@@ -320,7 +323,7 @@ void add_bezier(int N, int *p, char *fich)
 }
 
 
-void add_bspline(int N, int *p, char *fich)
+void add_bspline(int N, int *p, const char *fich)
 {
   char text[BUFFSIZE], text2[BUFFSIZE];
 
@@ -335,7 +338,7 @@ void add_bspline(int N, int *p, char *fich)
   add_infile(text, fich);
 }
 
-void add_multline(int N, int *p, char *fich)
+void add_multline(int N, int *p, const char *fich)
 {
   char text[BUFFSIZE], text2[BUFFSIZE];
   int iseg;
@@ -360,7 +363,7 @@ void add_multline(int N, int *p, char *fich)
   add_infile(text, fich);
 }
 
-void add_lineloop(List_T *list, char *fich, int *numloop)
+void add_lineloop(List_T *list, const char *fich, int *numloop)
 {
   char text[BUFFSIZE];
 
@@ -375,7 +378,7 @@ void add_lineloop(List_T *list, char *fich, int *numloop)
 }
 
 
-void add_surf(List_T *list, char *fich, int support, int typ)
+void add_surf(List_T *list, const char *fich, int support, int typ)
 {
   char text[BUFFSIZE];
 
@@ -390,7 +393,7 @@ void add_surf(List_T *list, char *fich, int support, int typ)
   add_infile(text, fich);
 }
 
-void add_surfloop(List_T *list, char *fich, int *numvol)
+void add_surfloop(List_T *list, const char *fich, int *numvol)
 {
   char text[BUFFSIZE];
 
@@ -404,7 +407,7 @@ void add_surfloop(List_T *list, char *fich, int *numvol)
   add_infile(text, fich);
 }
 
-void add_vol(List_T *list, char *fich)
+void add_vol(List_T *list, const char *fich)
 {
   char text[BUFFSIZE];
 
@@ -414,7 +417,7 @@ void add_vol(List_T *list, char *fich)
   add_infile(text, fich);
 }
 
-void add_trsfvol(int N, int *l, char *fich)
+void add_trsfvol(int N, int *l, const char *fich)
 {
   char text[BUFFSIZE], text2[BUFFSIZE];
 
@@ -431,7 +434,7 @@ void add_trsfvol(int N, int *l, char *fich)
   add_infile(text, fich);
 }
 
-int add_physical(List_T *list, char *fich, int type)
+int add_physical(List_T *list, const char *fich, int type)
 {
   char text[BUFFSIZE];
   int num = NEWPHYSICAL();
@@ -458,7 +461,8 @@ int add_physical(List_T *list, char *fich, int type)
   return num;
 }
 
-void translate(int add, List_T *list, char *fich, char *what, char *tx, char *ty, char *tz)
+void translate(int add, List_T *list, const char *fich, const char *what,
+	       const char *tx, const char *ty, const char *tz)
 {
   char text[BUFFSIZE];
 
@@ -477,8 +481,9 @@ void translate(int add, List_T *list, char *fich, char *what, char *tx, char *ty
   add_infile(text, fich);
 }
 
-void rotate(int add, List_T *list, char *fich, char *what, char *ax, char *ay, char *az,
-	    char *px, char *py, char *pz, char *angle)
+void rotate(int add, List_T *list, const char *fich, const char *what, 
+	    const char *ax, const char *ay, const char *az,
+	    const char *px, const char *py, const char *pz, const char *angle)
 {
   char text[BUFFSIZE];
 
@@ -499,7 +504,8 @@ void rotate(int add, List_T *list, char *fich, char *what, char *ax, char *ay, c
   add_infile(text, fich);
 }
 
-void dilate(int add, List_T *list, char *fich, char *what, char *dx, char *dy, char *dz, char *df)
+void dilate(int add, List_T *list, const char *fich, const char *what,
+	    const char *dx, const char *dy, const char *dz, const char *df)
 {
   char text[BUFFSIZE];
 
@@ -520,7 +526,8 @@ void dilate(int add, List_T *list, char *fich, char *what, char *dx, char *dy, c
   add_infile(text, fich);
 }
 
-void symmetry(int add, List_T *list, char *fich, char *what, char *sa, char *sb, char *sc, char *sd)
+void symmetry(int add, List_T *list, const char *fich, const char *what,
+	      const char *sa, const char *sb, const char *sc, const char *sd)
 {
   char text[BUFFSIZE];
 
@@ -541,7 +548,8 @@ void symmetry(int add, List_T *list, char *fich, char *what, char *sa, char *sb,
   add_infile(text, fich);
 }
 
-void extrude(List_T *list, char *fich, char *what, char *tx, char *ty, char *tz)
+void extrude(List_T *list, const char *fich, const char *what, 
+	     const char *tx, const char *ty, const char *tz)
 {
   char text[BUFFSIZE];
 
@@ -551,8 +559,9 @@ void extrude(List_T *list, char *fich, char *what, char *tx, char *ty, char *tz)
   add_infile(text, fich);
 }
 
-void protude(List_T *list, char *fich, char *what, char *ax, char *ay, char *az,
-	     char *px, char *py, char *pz, char *angle)
+void protude(List_T *list, const char *fich, const char *what, 
+	     const char *ax, const char *ay, const char *az,
+	     const char *px, const char *py, const char *pz, const char *angle)
 {
   char text[BUFFSIZE];
 
diff --git a/Geo/GeoStringInterface.h b/Geo/GeoStringInterface.h
index 923d14d23e1f42a3fdf8b44ccd14a58fa9b3e245..bde4965a365d601c2f5e35cac3751db5dc82b5f9 100644
--- a/Geo/GeoStringInterface.h
+++ b/Geo/GeoStringInterface.h
@@ -22,42 +22,46 @@
 
 #include "List.h"
 
-double evaluate_scalarfunction(char *var, double val, char *funct);
+double evaluate_scalarfunction(const char *var, double val, const char *funct);
 
-void coherence(char *fich);
-void delet(List_T *list, char *fich, char *what);
-void add_infile(char *text, char *fich, bool deleted_something=false);
-void add_trsfline(int N, int *l, char *fich, char *type, char *typearg, char *pts);
-void add_trsfsurf(int N, int *l, char *fich, char *dir);
-void add_trsfvol(int N, int *l, char *fich);
-void add_charlength(List_T *list, char *fich, char *lc);
-void add_recosurf(List_T *list, char *fich);
-void add_param(char *par, char *value, char *fich);
-void add_point(char *fich, char *x, char *y, char *z, char *lc);
-void add_attractor(char *fich, int ip, int typ);
-void add_line(int p1, int p2, char *fich);
-void add_circ(int p1, int p2, int p3, char *fich);
-void add_ell(int p1, int p2, int p3, int p4, char *fich);
-void add_spline(int N, int *p, char *fich);
-void add_bezier(int N, int *p, char *fich);
-void add_bspline(int N, int *p, char *fich);
-void add_multline(int N, int *p, char *fich);
-void add_lineloop(List_T *list, char *fich, int *numloop);
-void add_surf(List_T *list, char *fich, int support, int typ);
-void add_surfloop(List_T *list, char *fich, int *numvol);
-void add_vol(List_T *list, char *fich);
-int add_physical(List_T *list, char *fich, int type);
-void translate(int add, List_T *list, char *fich, char *what,
-	       char *tx, char *ty, char *tz);
-void rotate(int add, List_T *list, char *fich, char *what, 
-	    char *ax, char *ay, char *az,
-	    char *px, char *py, char *pz, char *angle);
-void dilate(int add, List_T *list, char *fich, char *what,
-	    char *dx, char *dy, char *dz, char *df);
-void symmetry(int add, List_T *list, char *fich, char *what, 
-	      char *sa, char *sb, char *sc, char *sd);
-void extrude(List_T *list, char *fich, char *what, char *tx, char *ty, char *tz);
-void protude(List_T *list, char *fich, char *what, char *ax, char *ay, char *az,
-	     char *px, char *py, char *pz, char *angle);
+void coherence(const char *fich);
+void delet(List_T *list, const char *fich, const char *what);
+void add_infile(const char *text, const char *fich, bool deleted_something=false);
+void add_trsfline(int N, int *l, const char *fich, const char *type, 
+		  const char *typearg, const char *pts);
+void add_trsfsurf(int N, int *l, const char *fich, const char *dir);
+void add_trsfvol(int N, int *l, const char *fich);
+void add_charlength(List_T *list, const char *fich, const char *lc);
+void add_recosurf(List_T *list, const char *fich);
+void add_param(const char *par, const char *value, const char *fich);
+void add_point(const char *fich, const char *x, const char *y, const char *z, 
+	       const char *lc);
+void add_attractor(const char *fich, int ip, int typ);
+void add_line(int p1, int p2, const char *fich);
+void add_circ(int p1, int p2, int p3, const char *fich);
+void add_ell(int p1, int p2, int p3, int p4, const char *fich);
+void add_spline(int N, int *p, const char *fich);
+void add_bezier(int N, int *p, const char *fich);
+void add_bspline(int N, int *p, const char *fich);
+void add_multline(int N, int *p, const char *fich);
+void add_lineloop(List_T *list, const char *fich, int *numloop);
+void add_surf(List_T *list, const char *fich, int support, int typ);
+void add_surfloop(List_T *list, const char *fich, int *numvol);
+void add_vol(List_T *list, const char *fich);
+int add_physical(List_T *list, const char *fich, int type);
+void translate(int add, List_T *list, const char *fich, const char *what,
+	       const char *tx, const char *ty, const char *tz);
+void rotate(int add, List_T *list, const char *fich, const char *what, 
+	    const char *ax, const char *ay, const char *az,
+	    const char *px, const char *py, const char *pz, const char *angle);
+void dilate(int add, List_T *list, const char *fich, const char *what,
+	    const char *dx, const char *dy, const char *dz, const char *df);
+void symmetry(int add, List_T *list, const char *fich, const char *what, 
+	      const char *sa, const char *sb, const char *sc, const char *sd);
+void extrude(List_T *list, const char *fich, const char *what, const char *tx, 
+	     const char *ty, const char *tz);
+void protude(List_T *list, const char *fich, const char *what, 
+	     const char *ax, const char *ay, const char *az, 
+	     const char *px, const char *py, const char *pz, const char *angle);
 
 #endif
diff --git a/Geo/Makefile b/Geo/Makefile
index 9735db0589a3be8a5a5a8eb6385bbbf0d7620340..b972307ef3f0d42b716dd89d90f5660b7ebaa8f5 100644
--- a/Geo/Makefile
+++ b/Geo/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.188 2008-02-21 12:49:49 geuzaine Exp $
+# $Id: Makefile,v 1.189 2008-02-23 15:30:07 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -75,7 +75,7 @@ depend:
 # DO NOT DELETE THIS LINE
 GEntity.o: GEntity.cpp GEntity.h Range.h SPoint3.h SBoundingBox3d.h \
   ../Common/VertexArray.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Common/Context.h ../DataStr/List.h
+  ../Common/Context.h ../DataStr/List.h ../Common/Context.h
 GVertex.o: GVertex.cpp GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h GPoint.h SPoint2.h GFace.h GEdgeLoop.h GEdge.h \
   SVector3.h Pair.h MVertex.h ../Common/Message.h
@@ -93,7 +93,7 @@ GFace.o: GFace.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   MVertex.h MEdge.h MFace.h ../Common/Message.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h ../Numeric/GaussLegendre1D.h \
   ../Common/VertexArray.h ../Geo/SVector3.h ../Common/Context.h \
-  ../DataStr/List.h
+  ../DataStr/List.h ../Common/Context.h
 GRegion.o: GRegion.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h GFace.h \
   GEdgeLoop.h Pair.h GRegion.h MElement.h ../Common/GmshDefines.h \
@@ -214,10 +214,10 @@ Geo.o: Geo.cpp ../Common/Message.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h ../DataStr/Malloc.h ../DataStr/Tools.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h Geo.h \
   ../Common/GmshDefines.h gmshSurface.h Pair.h Range.h SPoint2.h \
-  SPoint3.h SVector3.h SBoundingBox3d.h ExtrudeParams.h \
-  ../Common/SmoothData.h GModel.h GVertex.h GEntity.h GPoint.h GEdge.h \
-  GFace.h GEdgeLoop.h GRegion.h GeoInterpolation.h ../Parser/Parser.h \
-  ../Common/Context.h
+  SPoint3.h SVector3.h SBoundingBox3d.h ../DataStr/List.h \
+  ../DataStr/Tree.h ExtrudeParams.h ../Common/SmoothData.h GModel.h \
+  GVertex.h GEntity.h GPoint.h GEdge.h GFace.h GEdgeLoop.h GRegion.h \
+  GeoInterpolation.h ../Parser/Parser.h ../Common/Context.h
 GeoStringInterface.o: GeoStringInterface.cpp ../Common/Message.h \
   ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../DataStr/Malloc.h \
   Geo.h ../Common/GmshDefines.h gmshSurface.h Pair.h Range.h SPoint2.h \
diff --git a/Graphics/Draw.h b/Graphics/Draw.h
index 38fb5cfed68d509fcd44043dbe3f3b76b79e93ae..8056e3c12a1af97792ea0425e7efe6652e168d1e 100644
--- a/Graphics/Draw.h
+++ b/Graphics/Draw.h
@@ -44,10 +44,10 @@ void Draw2d();
 void DrawPlugin(void (*draw)());
 void Draw();
 
-void Draw_String(char *s);
-void Draw_String(char *s, double style);
-void Draw_String_Center(char *s);
-void Draw_String_Right(char *s);
+void Draw_String(const char *s);
+void Draw_String(const char *s, double style);
+void Draw_String_Center(const char *s);
+void Draw_String_Right(const char *s);
 void Draw_Geom();
 void Draw_Mesh();
 void Draw_Post();
diff --git a/Graphics/Graph2D.cpp b/Graphics/Graph2D.cpp
index 6fe022b5a10f43803e0d8078b5edaaf8cc3890b4..073c6304a3ce59451700804d964ceaf352feb6c3 100644
--- a/Graphics/Graph2D.cpp
+++ b/Graphics/Graph2D.cpp
@@ -1,4 +1,4 @@
-// $Id: Graph2D.cpp,v 1.72 2008-02-17 08:47:59 geuzaine Exp $
+// $Id: Graph2D.cpp,v 1.73 2008-02-23 15:30:07 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -59,7 +59,7 @@ void Draw_Text2D()
 	data->getString2D(j, opt->TimeStep, str, x, y, style);
 	Fix2DCoordinates(&x, &y);
 	glRasterPos2d(x, y);
-	Draw_String((char*)str.c_str(), style);
+	Draw_String(str.c_str(), style);
       }
     }
   }
diff --git a/Graphics/Makefile b/Graphics/Makefile
index 675467a4e469763f651a904d1de1df907fe25975..c8c143345543da42d3726b0b26e2c377569fdd4b 100644
--- a/Graphics/Makefile
+++ b/Graphics/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.140 2008-02-17 08:47:59 geuzaine Exp $
+# $Id: Makefile,v 1.141 2008-02-23 15:30:07 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -74,56 +74,42 @@ Draw.o: Draw.cpp ../Common/GmshUI.h ../Common/GmshDefines.h \
   ../Common/Message.h Draw.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Common/Context.h ../DataStr/List.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h ../Geo/GModel.h ../Geo/GVertex.h \
-  ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
-  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/GFace.h ../Geo/GEntity.h \
-  ../Geo/GPoint.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/SPoint2.h \
-  ../Geo/SVector3.h ../Geo/Pair.h ../Geo/GRegion.h ../Geo/GEntity.h \
-  ../Geo/SBoundingBox3d.h ../Post/PView.h ../Post/PViewData.h \
-  ../Post/PViewOptions.h ../Post/ColorTable.h
+  ../Geo/GEntity.h ../Geo/Range.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
+  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/SVector3.h ../Geo/GFace.h \
+  ../Geo/GEdgeLoop.h ../Geo/Pair.h ../Geo/GRegion.h ../Post/PView.h \
+  ../Post/PViewData.h ../Post/PViewOptions.h ../Post/ColorTable.h
 Mesh.o: Mesh.cpp ../Common/Message.h ../Common/GmshUI.h ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h Draw.h \
-  ../Common/Context.h ../DataStr/List.h ../Common/OS.h gl2ps.h \
-  ../Common/VertexArray.h ../Common/Context.h ../Common/SmoothData.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Geo/MElement.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h Draw.h \
+  ../Geo/SBoundingBox3d.h ../Common/Context.h ../DataStr/List.h \
+  ../Common/OS.h gl2ps.h ../Common/VertexArray.h ../Geo/SVector3.h \
+  ../Common/Context.h ../Common/SmoothData.h
 Geom.o: Geom.cpp ../Common/GmshUI.h Draw.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Common/Context.h ../DataStr/List.h gl2ps.h \
-  ../Common/VertexArray.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Common/Context.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h \
-  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/GFace.h \
-  ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
-  ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h ../Geo/GRegion.h \
-  ../Geo/GEntity.h ../Geo/SBoundingBox3d.h
+  ../Common/VertexArray.h ../Geo/SVector3.h ../Common/Context.h \
+  ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h
 Post.o: Post.cpp ../Common/Message.h ../Common/GmshUI.h \
   ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h Draw.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h Iso.h ../Post/PView.h \
   ../Post/PViewData.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Common/VertexArray.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Common/Context.h ../DataStr/List.h ../Common/SmoothData.h gl2ps.h
+  ../Common/VertexArray.h ../Geo/SVector3.h ../Common/Context.h \
+  ../DataStr/List.h ../Common/SmoothData.h ../Common/Context.h gl2ps.h
 SelectBuffer.o: SelectBuffer.cpp ../Common/Message.h ../Common/GmshUI.h \
   ../Common/GmshDefines.h ../Geo/GModel.h ../Geo/GVertex.h \
   ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/MEdge.h \
-  ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
-  ../Geo/SVector3.h Draw.h ../Common/Context.h ../DataStr/List.h \
-  SelectBuffer.h ../Common/VertexArray.h ../Common/Context.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h \
+  ../Geo/MFace.h Draw.h ../Geo/SBoundingBox3d.h ../Common/Context.h \
+  ../DataStr/List.h SelectBuffer.h ../Geo/GVertex.h ../Geo/GEdge.h \
+  ../Geo/GFace.h ../Geo/GRegion.h ../Common/VertexArray.h \
+  ../Geo/SVector3.h ../Common/Context.h
 Iso.o: Iso.cpp ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h
 Entity.o: Entity.cpp ../Common/GmshUI.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h Draw.h ../Geo/SBoundingBox3d.h \
@@ -131,8 +117,8 @@ Entity.o: Entity.cpp ../Common/GmshUI.h ../Numeric/Numeric.h \
 ReadImg.o: ReadImg.cpp ReadImg.h ../Common/Message.h ../Common/GmshUI.h \
   ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../DataStr/List.h ../Common/GmshMatrix.h
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Common/GmshMatrix.h
 Scale.o: Scale.cpp ../Common/GmshUI.h Draw.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PView.h ../Post/PViewData.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Common/Context.h \
diff --git a/Graphics/Post.cpp b/Graphics/Post.cpp
index e564c42652c4d0074ce6e51aec1c34331f0c1d92..4158065b1b58d0833848fddb84ad79750120d5b0 100644
--- a/Graphics/Post.cpp
+++ b/Graphics/Post.cpp
@@ -1,4 +1,4 @@
-// $Id: Post.cpp,v 1.150 2008-02-22 20:28:07 geuzaine Exp $
+// $Id: Post.cpp,v 1.151 2008-02-23 15:30:07 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -1070,7 +1070,7 @@ void drawNumberGlyphs(PView *p, int numNodes, int numComp,
       unsigned int col = opt->getColor(v, vmin, vmax);
       glColor4ubv((GLubyte *) & col);
       glRasterPos3d(pc.x(), pc.y(), pc.z());
-      char *txt = (char*)stringValue(numComp, d, v, opt->Format).c_str();
+      const char *txt = stringValue(numComp, d, v, opt->Format).c_str();
       if(opt->CenterGlyphs)
 	Draw_String_Center(txt);
       else
@@ -1084,7 +1084,7 @@ void drawNumberGlyphs(PView *p, int numNodes, int numComp,
 	unsigned int col = opt->getColor(v, vmin, vmax);
 	glColor4ubv((GLubyte *) & col);
 	glRasterPos3d(xyz[i][0], xyz[i][1], xyz[i][2]);
-	char *txt = (char*)stringValue(numComp, val[i], v, opt->Format).c_str();
+	const char *txt = stringValue(numComp, val[i], v, opt->Format).c_str();
 	if(opt->CenterGlyphs)
 	  Draw_String_Center(txt);
 	else
@@ -1350,7 +1350,7 @@ class drawPView {
 	std::string str;
 	data->getString3D(i, opt->TimeStep, str, x, y, z, style);
 	glRasterPos3d(x, y, z);
-	Draw_String((char*)str.c_str(), style);
+	Draw_String(str.c_str(), style);
       }
     }
     
diff --git a/Graphics/gl2ps.cpp b/Graphics/gl2ps.cpp
index 3bca05582fc3116d35021932158aa371afd6de30..a83fe69f95ce505273183e15ec44549bcada8b18 100644
--- a/Graphics/gl2ps.cpp
+++ b/Graphics/gl2ps.cpp
@@ -1,4 +1,4 @@
-/* $Id: gl2ps.cpp,v 1.113 2007-09-18 16:26:02 geuzaine Exp $ */
+/* $Id: gl2ps.cpp,v 1.114 2008-02-23 15:30:07 geuzaine Exp $ */
 /*
  * GL2PS, an OpenGL to PostScript Printing Library
  * Copyright (C) 1999-2007 Christophe Geuzaine <geuz@geuz.org>
@@ -2937,7 +2937,7 @@ static void gl2psParseStipplePattern(GLushort pattern, GLint factor,
   }
 }
 
-static int gl2psPrintPostScriptDash(GLushort pattern, GLint factor, char *str)
+static int gl2psPrintPostScriptDash(GLushort pattern, GLint factor, const char *str)
 {
   int len = 0, i, n, array[10];
 
diff --git a/Mesh/Makefile b/Mesh/Makefile
index d76c04e06d17603741deca72eac8ca74167de14b..47eb37edf14fbd4c8d5895abc3e3d0bed009db7e 100644
--- a/Mesh/Makefile
+++ b/Mesh/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.204 2008-02-21 09:49:22 geuzaine Exp $
+# $Id: Makefile,v 1.205 2008-02-23 15:30:07 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -89,294 +89,202 @@ Generator.o: Generator.cpp ../Common/Message.h ../Numeric/Numeric.h \
   ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PViewOptions.h ../Post/ColorTable.h \
   ../Common/OS.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h \
-  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h meshGEdge.h \
-  meshGFace.h meshGFaceBDS.h meshGRegion.h BackgroundMesh.h \
+  ../Geo/Range.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h \
+  ../Geo/GEdge.h ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h \
+  ../Geo/Pair.h ../Geo/GRegion.h ../Geo/MElement.h \
+  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h \
+  meshGEdge.h meshGFace.h meshGFaceBDS.h meshGRegion.h BackgroundMesh.h \
   BoundaryLayer.h HighOrder.h
 Field.o: Field.cpp ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h \
-  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \
-  ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
-  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/GFace.h ../Geo/GEntity.h \
-  ../Geo/GPoint.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/SPoint2.h \
-  ../Geo/SVector3.h ../Geo/Pair.h ../Geo/GRegion.h ../Geo/GEntity.h \
-  ../Geo/SBoundingBox3d.h ../Geo/MVertex.h ../Geo/SPoint3.h \
+  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
+  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/SVector3.h ../Geo/GFace.h \
+  ../Geo/GEdgeLoop.h ../Geo/Pair.h ../Geo/GRegion.h ../Geo/MVertex.h \
   ../Common/Message.h Field.h ../Post/PView.h ../Post/PViewData.h \
-  ../Post/PViewOptions.h ../Post/ColorTable.h ../Geo/Geo.h \
-  ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
-  ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SBoundingBox3d.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../Geo/SPoint2.h ../Geo/ExtrudeParams.h \
-  ../Common/SmoothData.h ../Post/OctreePost.h ../Common/Octree.h \
-  ../Common/OctreeInternals.h ../Common/Context.h \
+  ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h ../Post/ColorTable.h \
+  ../Geo/Geo.h ../Common/GmshDefines.h ../Geo/gmshSurface.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../DataStr/List.h \
+  ../DataStr/Tree.h ../DataStr/avl.h ../Geo/ExtrudeParams.h \
+  ../Common/SmoothData.h ../Geo/GEdge.h ../Post/OctreePost.h \
+  ../Common/Octree.h ../Common/OctreeInternals.h ../Common/Context.h \
   ../Geo/GeoInterpolation.h ../Geo/Geo.h BackgroundMesh.h
 meshGEdge.o: meshGEdge.cpp meshGEdge.h ../Geo/GEdge.h ../Geo/GEntity.h \
   ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \
-  ../Geo/SPoint3.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h \
-  ../Geo/SPoint2.h ../Geo/MElement.h ../Common/GmshDefines.h \
-  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h \
-  ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  BackgroundMesh.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
-  ../Common/Message.h ../DataStr/List.h ../Common/Context.h
+  ../Geo/GVertex.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
+  ../Geo/MEdge.h ../Geo/MFace.h BackgroundMesh.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../Common/Message.h ../DataStr/List.h \
+  ../Common/Context.h
 meshGEdgeExtruded.o: meshGEdgeExtruded.cpp ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Common/Message.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Geo/MElement.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h ../Geo/ExtrudeParams.h \
+  ../Common/SmoothData.h ../Common/Message.h
 meshGFace.o: meshGFace.cpp meshGFace.h meshGFaceBDS.h \
   meshGFaceDelaunayInsertion.h ../Geo/MElement.h ../Common/GmshDefines.h \
-  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/MFace.h ../Geo/MVertex.h \
-  ../Geo/SVector3.h meshGFaceOptimize.h DivideAndConquer.h \
+  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/SVector3.h \
+  ../Geo/MFace.h meshGFaceOptimize.h ../Geo/MEdge.h DivideAndConquer.h \
   BackgroundMesh.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
-  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \
-  ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Common/Context.h ../DataStr/List.h ../Common/Message.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h BDS.h ../Post/PView.h \
-  ../Post/PViewData.h ../Post/PViewOptions.h ../Post/ColorTable.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/GVertex.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
+  ../Geo/Pair.h ../Geo/MVertex.h ../Common/Context.h ../DataStr/List.h \
+  ../Geo/GPoint.h ../Common/Message.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h BDS.h ../Post/PView.h ../Post/PViewData.h \
+  ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h ../Post/ColorTable.h \
   qualityMeasures.h Field.h ../Geo/Geo.h ../Geo/gmshSurface.h \
-  ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h \
-  ../Geo/SVector3.h ../Geo/SBoundingBox3d.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../Geo/SPoint2.h ../Geo/ExtrudeParams.h \
+  ../DataStr/Tree.h ../DataStr/avl.h ../Geo/ExtrudeParams.h \
   ../Common/SmoothData.h ../Post/OctreePost.h ../Common/Octree.h \
   ../Common/OctreeInternals.h ../Common/OS.h
 meshGFaceTransfinite.o: meshGFaceTransfinite.cpp meshGFace.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/MElement.h \
-  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h \
-  ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
-  ../Geo/SVector3.h ../Common/Context.h ../DataStr/List.h \
-  ../Common/Message.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h \
+  ../Geo/GEdge.h ../Geo/Pair.h ../Geo/MVertex.h ../Geo/MElement.h \
+  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h \
+  ../Common/Context.h ../DataStr/List.h ../Common/Message.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h
 meshGFaceExtruded.o: meshGFaceExtruded.cpp ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Common/Context.h \
-  ../DataStr/List.h ../Common/Message.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Geo/MElement.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h ../Geo/ExtrudeParams.h \
+  ../Common/SmoothData.h ../Common/Context.h ../DataStr/List.h \
+  ../Common/Message.h
 meshGFaceBDS.o: meshGFaceBDS.cpp meshGFace.h meshGFaceOptimize.h \
   ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  meshGFaceDelaunayInsertion.h BackgroundMesh.h ../Geo/GVertex.h \
-  ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/GFace.h \
-  ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
-  ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h ../Common/Context.h \
-  ../DataStr/List.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEdge.h \
-  ../Geo/GFace.h ../Geo/GRegion.h ../Geo/GEntity.h \
-  ../Geo/SBoundingBox3d.h ../Common/Message.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h BDS.h ../Post/PView.h ../Post/PViewData.h \
+  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/SVector3.h ../Geo/MFace.h \
+  ../Geo/MEdge.h meshGFaceDelaunayInsertion.h BackgroundMesh.h \
+  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/GVertex.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
+  ../Geo/Pair.h ../Geo/MVertex.h ../Common/Context.h ../DataStr/List.h \
+  ../Geo/GPoint.h ../Geo/GModel.h ../Geo/GFace.h ../Geo/GRegion.h \
+  ../Common/Message.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
+  BDS.h ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h qualityMeasures.h Field.h \
-  ../Geo/Geo.h ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h \
-  ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SBoundingBox3d.h ../DataStr/Tree.h ../DataStr/avl.h \
-  ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
-  ../Post/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h \
-  ../Common/OS.h
+  ../Geo/Geo.h ../Geo/gmshSurface.h ../DataStr/Tree.h ../DataStr/avl.h \
+  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Post/OctreePost.h \
+  ../Common/Octree.h ../Common/OctreeInternals.h ../Common/OS.h
 meshGFaceDelaunayInsertion.o: meshGFaceDelaunayInsertion.cpp BDS.h \
   ../Geo/GFace.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/SPoint2.h \
-  ../Geo/SVector3.h ../Geo/Pair.h ../Post/PView.h ../Post/PViewData.h \
-  ../Post/PViewOptions.h ../Post/ColorTable.h BackgroundMesh.h \
-  meshGFaceDelaunayInsertion.h ../Geo/MElement.h ../Common/GmshDefines.h \
-  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h \
-  ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  meshGFaceOptimize.h meshGFace.h ../Numeric/Numeric.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
+  ../Geo/GEdge.h ../Geo/GVertex.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/Pair.h ../Post/PView.h ../Post/PViewData.h \
+  ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h ../Post/ColorTable.h \
+  BackgroundMesh.h meshGFaceDelaunayInsertion.h ../Geo/MElement.h \
+  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h \
+  meshGFaceOptimize.h ../Geo/MEdge.h meshGFace.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h ../Common/Message.h
 meshGFaceOptimize.o: meshGFaceOptimize.cpp meshGFaceOptimize.h \
   ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  meshGFaceDelaunayInsertion.h qualityMeasures.h ../Geo/GFace.h \
-  ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/Pair.h BackgroundMesh.h
+  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/SVector3.h ../Geo/MFace.h \
+  ../Geo/MEdge.h meshGFaceDelaunayInsertion.h qualityMeasures.h \
+  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SBoundingBox3d.h \
+  ../Geo/GPoint.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/GVertex.h \
+  ../Geo/SPoint2.h ../Geo/Pair.h ../Geo/GEdge.h ../Geo/GVertex.h \
+  ../Geo/MVertex.h BackgroundMesh.h
 meshGRegion.o: meshGRegion.cpp meshGRegion.h \
   meshGRegionDelaunayInsertion.h ../Geo/MElement.h \
   ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/SPoint3.h \
-  ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h qualityMeasures.h \
+  ../Geo/MEdge.h ../Geo/SVector3.h ../Geo/MFace.h qualityMeasures.h \
   ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
-  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \
-  ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/gmshRegion.h ../Geo/Geo.h ../Geo/gmshSurface.h ../Geo/Pair.h \
-  ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SBoundingBox3d.h ../Numeric/Numeric.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h ../Geo/GRegion.h \
+  ../Geo/GRegion.h ../Geo/GFace.h ../Geo/GEdge.h ../Geo/gmshRegion.h \
+  ../Geo/Geo.h ../Geo/gmshSurface.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../Geo/SPoint2.h ../Geo/ExtrudeParams.h \
-  ../Common/SmoothData.h ../Geo/GRegion.h BDS.h ../Post/PView.h \
-  ../Post/PViewData.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Common/Message.h ../Common/Context.h
+  ../DataStr/avl.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h BDS.h \
+  ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
+  ../Post/PViewOptions.h ../Post/ColorTable.h ../Common/Message.h \
+  ../Common/Context.h
 meshGRegionDelaunayInsertion.o: meshGRegionDelaunayInsertion.cpp \
   ../Common/OS.h BackgroundMesh.h meshGRegion.h meshGRegionLocalMeshMod.h \
   meshGRegionDelaunayInsertion.h ../Geo/MElement.h \
   ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/SPoint3.h \
-  ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h qualityMeasures.h \
+  ../Geo/MEdge.h ../Geo/SVector3.h ../Geo/MFace.h qualityMeasures.h \
   ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
-  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \
-  ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../Common/Message.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h ../Geo/GRegion.h \
+  ../Geo/GRegion.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
+  ../Common/Message.h
 meshGRegionTransfinite.o: meshGRegionTransfinite.cpp meshGFace.h \
   ../Geo/GFace.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/SPoint2.h \
-  ../Geo/SVector3.h ../Geo/Pair.h ../Geo/GRegion.h ../Geo/GEntity.h \
-  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/MElement.h \
-  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h \
-  ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
-  ../Geo/SVector3.h ../Common/Context.h ../DataStr/List.h \
-  ../Common/Message.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
+  ../Geo/GEdge.h ../Geo/GVertex.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/Pair.h ../Geo/GRegion.h ../Geo/MVertex.h ../Geo/MElement.h \
+  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h \
+  ../Common/Context.h ../DataStr/List.h ../Common/Message.h
 meshGRegionExtruded.o: meshGRegionExtruded.cpp ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h meshGFace.h meshGRegion.h \
-  ../Common/Context.h ../DataStr/List.h ../Common/Message.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Geo/MElement.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h ../Geo/ExtrudeParams.h \
+  ../Common/SmoothData.h meshGFace.h meshGRegion.h ../Common/Context.h \
+  ../DataStr/List.h ../Common/Message.h
 meshGRegionCarveHole.o: meshGRegionCarveHole.cpp ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Message.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Geo/MElement.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h ../Common/Message.h
 meshGRegionLocalMeshMod.o: meshGRegionLocalMeshMod.cpp \
   meshGRegionLocalMeshMod.h meshGRegionDelaunayInsertion.h \
   ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  qualityMeasures.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GRegion.h \
-  ../Geo/GEntity.h ../Common/Message.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h
+  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/SVector3.h ../Geo/MFace.h \
+  qualityMeasures.h ../Geo/GEntity.h ../Geo/Range.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GRegion.h ../Geo/GEntity.h \
+  ../Common/Message.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h
 DivideAndConquer.o: DivideAndConquer.cpp ../Common/Message.h \
   ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h DivideAndConquer.h \
   ../DataStr/Malloc.h
 BackgroundMesh.o: BackgroundMesh.cpp ../Common/Message.h BackgroundMesh.h \
   ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../Common/Context.h \
   ../DataStr/List.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
-  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \
-  ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h \
-  ../Geo/SPoint2.h ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/Pair.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEdge.h \
-  ../Geo/GFace.h ../Geo/GRegion.h ../Geo/GEntity.h \
-  ../Geo/SBoundingBox3d.h Field.h ../Post/PView.h ../Post/PViewData.h \
-  ../Post/PViewOptions.h ../Post/ColorTable.h ../Geo/Geo.h \
-  ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
-  ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SBoundingBox3d.h ../DataStr/Tree.h ../DataStr/avl.h \
-  ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
-  ../Post/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h
+  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
+  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GVertex.h ../Geo/SVector3.h \
+  ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/Pair.h \
+  ../Geo/GModel.h ../Geo/GFace.h ../Geo/GRegion.h Field.h ../Post/PView.h \
+  ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h \
+  ../Post/ColorTable.h ../Geo/Geo.h ../Common/GmshDefines.h \
+  ../Geo/gmshSurface.h ../DataStr/Tree.h ../DataStr/avl.h \
+  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Post/OctreePost.h \
+  ../Common/Octree.h ../Common/OctreeInternals.h
 qualityMeasures.o: qualityMeasures.cpp qualityMeasures.h BDS.h \
   ../Geo/GFace.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/SPoint2.h \
-  ../Geo/SVector3.h ../Geo/Pair.h ../Post/PView.h ../Post/PViewData.h \
-  ../Post/PViewOptions.h ../Post/ColorTable.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MElement.h ../Common/GmshDefines.h \
-  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h ../Numeric/Numeric.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
+  ../Geo/GEdge.h ../Geo/GVertex.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/Pair.h ../Post/PView.h ../Post/PViewData.h \
+  ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h ../Post/ColorTable.h \
+  ../Geo/MVertex.h ../Geo/MElement.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h
 BoundaryLayer.o: BoundaryLayer.cpp ../Geo/GModel.h ../Geo/GVertex.h \
   ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h BoundaryLayer.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Geo/MElement.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h BoundaryLayer.h \
   ../Geo/ExtrudeParams.h ../Common/SmoothData.h meshGEdge.h meshGFace.h \
   ../Common/Message.h
 BDS.o: BDS.cpp ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h BDS.h \
   ../Geo/GFace.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/SPoint2.h \
-  ../Geo/SVector3.h ../Geo/Pair.h ../Post/PView.h ../Post/PViewData.h \
-  ../Post/PViewOptions.h ../Post/ColorTable.h ../Common/Message.h \
-  meshGFaceDelaunayInsertion.h ../Geo/MElement.h ../Common/GmshDefines.h \
-  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h \
-  ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
+  ../Geo/GEdge.h ../Geo/GVertex.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/Pair.h ../Post/PView.h ../Post/PViewData.h \
+  ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h ../Post/ColorTable.h \
+  ../Common/Message.h meshGFaceDelaunayInsertion.h ../Geo/MElement.h \
+  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h \
   qualityMeasures.h
 HighOrder.o: HighOrder.cpp HighOrder.h ../Geo/GModel.h ../Geo/GVertex.h \
   ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  meshGFaceOptimize.h ../Geo/MElement.h ../Common/GmshDefines.h \
-  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h \
-  ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  meshGFaceDelaunayInsertion.h ../Common/Message.h ../Common/OS.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../Common/Context.h \
-  ../DataStr/List.h ../Common/GmshMatrix.h ../Numeric/FunctionSpace.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h meshGFaceOptimize.h ../Geo/MElement.h \
+  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h \
+  ../Geo/MEdge.h meshGFaceDelaunayInsertion.h ../Common/Message.h \
+  ../Common/OS.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
+  ../Common/Context.h ../DataStr/List.h ../Common/GmshMatrix.h \
+  ../Numeric/FunctionSpace.h
diff --git a/Mesh/meshGFace.cpp b/Mesh/meshGFace.cpp
index cc62a3f6c7364697676181d0e6441f728eee1a2e..0e0f158b59bcfded8fb34e684e646cd6c01b3304 100644
--- a/Mesh/meshGFace.cpp
+++ b/Mesh/meshGFace.cpp
@@ -1,4 +1,4 @@
-// $Id: meshGFace.cpp,v 1.120 2008-02-22 07:49:39 geuzaine Exp $
+// $Id: meshGFace.cpp,v 1.121 2008-02-23 15:30:07 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -1290,7 +1290,7 @@ void meshGFace::operator() (GFace *gf)
   if(MeshTransfiniteSurface(gf)) return;
   if(MeshExtrudedSurface(gf)) return;
 
-  char *algo = "Unknown";
+  const char *algo = "Unknown";
   switch(CTX.mesh.algo2d){
   case ALGO_2D_MESHADAPT:
     algo = "MeshAdapt";
diff --git a/Parser/Gmsh.l b/Parser/Gmsh.l
index 9d94ea1be6faf988bbb1ca6455e9fe2343c64acd..392e9a2a00e6481702be7a713f86b585632bd25f 100644
--- a/Parser/Gmsh.l
+++ b/Parser/Gmsh.l
@@ -1,5 +1,5 @@
 %{
-// $Id: Gmsh.l,v 1.99 2008-02-17 08:48:02 geuzaine Exp $
+// $Id: Gmsh.l,v 1.100 2008-02-23 15:30:07 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -297,7 +297,7 @@ char *strsave(char *ptr)
   return((char*)strcpy((char*)malloc(strlen(ptr)+1),ptr));
 }
 
-void skipline(void)
+void skipline()
 {
   int c;
   while ((c = yyinput()) != '\n'){
@@ -305,7 +305,7 @@ void skipline(void)
   }
 }
 
-void skip_until(char *skip, char *until)
+void skip_until(const char *skip, const char *until)
 {
   int i, nb_skip;
   int l, l_skip, l_until;
diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index 198801372089df5af746cabeed40bc76bbc6d007..b651e6d0bbc575e4fe474bce0c44dbaa232d2a8a 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -336,7 +336,7 @@
 /* Copy the first part of user declarations.  */
 #line 1 "Gmsh.y"
 
-// $Id: Gmsh.tab.cpp,v 1.348 2008-02-22 21:09:01 geuzaine Exp $
+// $Id: Gmsh.tab.cpp,v 1.349 2008-02-23 15:30:07 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -408,8 +408,8 @@ static double LoopControlVariablesTab[MAX_RECUR_LOOPS][3];
 static char *LoopControlVariablesNameTab[MAX_RECUR_LOOPS];
 
 void yyerror(char *s);
-void yymsg(int type, char *fmt, ...);
-void skip_until(char *skip, char *until);
+void yymsg(int type, const char *fmt, ...);
+void skip_until(const char *skip, const char *until);
 int PrintListOfDouble(char *format, List_T *list, char *buffer);
 
 
@@ -1003,35 +1003,35 @@ static const yytype_uint16 yyrline[] =
      457,   312,   471,   476,   485,   484,   499,   504,   513,   512,
      526,   531,   542,   541,   553,   554,   555,   556,   557,   561,
      562,   569,   600,   639,   693,   710,   728,   739,   756,   763,
-     777,   794,   820,   847,   861,   878,   893,   911,   931,   954,
-     964,   979,   983,   996,  1018,  1034,  1055,  1062,  1073,  1088,
-    1096,  1111,  1118,  1130,  1164,  1200,  1222,  1240,  1258,  1276,
-    1302,  1320,  1346,  1366,  1384,  1402,  1428,  1445,  1464,  1482,
-    1520,  1526,  1532,  1539,  1563,  1587,  1603,  1623,  1640,  1657,
-    1678,  1683,  1688,  1693,  1698,  1709,  1715,  1724,  1725,  1730,
-    1733,  1737,  1760,  1783,  1806,  1834,  1843,  1856,  1872,  1887,
-    1901,  1907,  1913,  1922,  1936,  1984,  2000,  2016,  2035,  2045,
-    2067,  2071,  2076,  2081,  2093,  2110,  2127,  2154,  2181,  2212,
-    2220,  2226,  2233,  2237,  2246,  2254,  2262,  2271,  2270,  2283,
-    2282,  2295,  2294,  2307,  2306,  2318,  2317,  2333,  2340,  2347,
-    2354,  2361,  2368,  2375,  2382,  2389,  2397,  2396,  2408,  2407,
-    2419,  2418,  2430,  2429,  2441,  2440,  2452,  2451,  2463,  2462,
-    2474,  2473,  2485,  2484,  2499,  2502,  2508,  2517,  2537,  2560,
-    2564,  2588,  2606,  2624,  2642,  2671,  2706,  2711,  2738,  2752,
-    2765,  2782,  2788,  2794,  2797,  2806,  2816,  2817,  2818,  2819,
-    2820,  2821,  2822,  2823,  2824,  2831,  2832,  2833,  2834,  2835,
-    2836,  2837,  2838,  2839,  2840,  2841,  2842,  2843,  2844,  2845,
-    2846,  2847,  2848,  2849,  2850,  2851,  2852,  2853,  2854,  2855,
-    2856,  2857,  2858,  2859,  2860,  2861,  2862,  2864,  2865,  2866,
-    2867,  2868,  2869,  2870,  2871,  2872,  2873,  2874,  2875,  2876,
-    2877,  2878,  2879,  2880,  2881,  2882,  2883,  2884,  2893,  2894,
-    2895,  2896,  2897,  2898,  2899,  2903,  2919,  2934,  2954,  2967,
-    2980,  3003,  3021,  3039,  3057,  3075,  3083,  3087,  3091,  3095,
-    3099,  3106,  3110,  3114,  3118,  3125,  3130,  3138,  3143,  3147,
-    3152,  3156,  3164,  3175,  3183,  3191,  3197,  3208,  3228,  3238,
-    3248,  3265,  3292,  3297,  3301,  3305,  3318,  3322,  3334,  3341,
-    3362,  3366,  3381,  3386,  3393,  3397,  3404,  3408,  3416,  3424,
-    3438,  3452,  3456,  3475,  3497
+     778,   796,   822,   849,   863,   880,   895,   913,   933,   956,
+     966,   981,   985,   998,  1020,  1036,  1057,  1064,  1075,  1090,
+    1098,  1113,  1120,  1132,  1166,  1202,  1224,  1242,  1260,  1278,
+    1304,  1322,  1348,  1368,  1386,  1404,  1430,  1447,  1466,  1484,
+    1522,  1528,  1534,  1541,  1565,  1589,  1605,  1625,  1642,  1659,
+    1680,  1685,  1690,  1695,  1700,  1711,  1717,  1726,  1727,  1732,
+    1735,  1739,  1762,  1785,  1808,  1836,  1845,  1858,  1874,  1889,
+    1903,  1909,  1915,  1924,  1938,  1986,  2002,  2018,  2037,  2047,
+    2069,  2073,  2078,  2083,  2095,  2112,  2129,  2156,  2183,  2214,
+    2222,  2228,  2235,  2239,  2248,  2256,  2264,  2273,  2272,  2285,
+    2284,  2297,  2296,  2309,  2308,  2320,  2319,  2335,  2342,  2349,
+    2356,  2363,  2370,  2377,  2384,  2391,  2399,  2398,  2410,  2409,
+    2421,  2420,  2432,  2431,  2443,  2442,  2454,  2453,  2465,  2464,
+    2476,  2475,  2487,  2486,  2501,  2504,  2510,  2519,  2539,  2562,
+    2566,  2590,  2608,  2626,  2644,  2673,  2708,  2713,  2740,  2754,
+    2767,  2784,  2790,  2796,  2799,  2808,  2818,  2819,  2820,  2821,
+    2822,  2823,  2824,  2825,  2826,  2833,  2834,  2835,  2836,  2837,
+    2838,  2839,  2840,  2841,  2842,  2843,  2844,  2845,  2846,  2847,
+    2848,  2849,  2850,  2851,  2852,  2853,  2854,  2855,  2856,  2857,
+    2858,  2859,  2860,  2861,  2862,  2863,  2864,  2866,  2867,  2868,
+    2869,  2870,  2871,  2872,  2873,  2874,  2875,  2876,  2877,  2878,
+    2879,  2880,  2881,  2882,  2883,  2884,  2885,  2886,  2895,  2896,
+    2897,  2898,  2899,  2900,  2901,  2905,  2921,  2936,  2956,  2969,
+    2982,  3005,  3023,  3041,  3059,  3077,  3085,  3089,  3093,  3097,
+    3101,  3108,  3112,  3116,  3120,  3127,  3132,  3140,  3145,  3149,
+    3154,  3158,  3166,  3177,  3185,  3193,  3199,  3210,  3230,  3240,
+    3250,  3267,  3294,  3299,  3303,  3307,  3320,  3324,  3336,  3343,
+    3364,  3368,  3383,  3388,  3395,  3399,  3406,  3410,  3418,  3426,
+    3440,  3454,  3458,  3477,  3500
 };
 #endif
 
@@ -3855,14 +3855,14 @@ yyreduce:
   case 20:
 #line 176 "Gmsh.y"
     {
-      (yyval.c) = "w";
+      (yyval.c) = (char*)"w";
     ;}
     break;
 
   case 21:
 #line 180 "Gmsh.y"
     {
-      (yyval.c) = "a";
+      (yyval.c) = (char*)"a";
     ;}
     break;
 
@@ -4517,12 +4517,13 @@ yyreduce:
   case 69:
 #line 764 "Gmsh.y"
     { 
-      char* (*pStrOpt)(int num, int action, char *value);
+      const char* (*pStrOpt)(int num, int action, const char *value);
       StringXString *pStrCat;
       if(!(pStrCat = Get_StringOptionCategory((yyvsp[(1) - (6)].c))))
 	yymsg(GERROR, "Unknown string option class '%s'", (yyvsp[(1) - (6)].c));
       else{
-	if(!(pStrOpt = (char *(*) (int, int, char *))Get_StringOption((yyvsp[(3) - (6)].c), pStrCat)))
+	if(!(pStrOpt = (const char *(*) (int, int, const char *))
+	     Get_StringOption((yyvsp[(3) - (6)].c), pStrCat)))
 	  yymsg(GERROR, "Unknown string option '%s.%s'", (yyvsp[(1) - (6)].c), (yyvsp[(3) - (6)].c));
 	else
 	  pStrOpt(0, GMSH_SET|GMSH_GUI, (yyvsp[(5) - (6)].c));
@@ -4532,14 +4533,15 @@ yyreduce:
     break;
 
   case 70:
-#line 778 "Gmsh.y"
+#line 779 "Gmsh.y"
     { 
-      char* (*pStrOpt)(int num, int action, char *value);
+      const char* (*pStrOpt)(int num, int action, const char *value);
       StringXString *pStrCat;
       if(!(pStrCat = Get_StringOptionCategory((yyvsp[(1) - (9)].c))))
 	yymsg(GERROR, "Unknown string option class '%s'", (yyvsp[(1) - (9)].c));
       else{
-	if(!(pStrOpt = (char *(*) (int, int, char *))Get_StringOption((yyvsp[(6) - (9)].c), pStrCat)))
+	if(!(pStrOpt = (const char *(*) (int, int, const char *))
+	     Get_StringOption((yyvsp[(6) - (9)].c), pStrCat)))
 	  yymsg(GERROR, "Unknown string option '%s[%d].%s'", (yyvsp[(1) - (9)].c), (int)(yyvsp[(3) - (9)].d), (yyvsp[(6) - (9)].c));
 	else
 	  pStrOpt((int)(yyvsp[(3) - (9)].d), GMSH_SET|GMSH_GUI, (yyvsp[(8) - (9)].c));
@@ -4549,7 +4551,7 @@ yyreduce:
     break;
 
   case 71:
-#line 795 "Gmsh.y"
+#line 797 "Gmsh.y"
     {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
@@ -4578,7 +4580,7 @@ yyreduce:
     break;
 
   case 72:
-#line 821 "Gmsh.y"
+#line 823 "Gmsh.y"
     {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
@@ -4608,7 +4610,7 @@ yyreduce:
     break;
 
   case 73:
-#line 848 "Gmsh.y"
+#line 850 "Gmsh.y"
     {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
@@ -4625,7 +4627,7 @@ yyreduce:
     break;
 
   case 74:
-#line 862 "Gmsh.y"
+#line 864 "Gmsh.y"
     {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
@@ -4642,7 +4644,7 @@ yyreduce:
     break;
 
   case 75:
-#line 879 "Gmsh.y"
+#line 881 "Gmsh.y"
     {
       unsigned int (*pColOpt)(int num, int action, unsigned int value);
       StringXColor *pColCat;
@@ -4660,7 +4662,7 @@ yyreduce:
     break;
 
   case 76:
-#line 894 "Gmsh.y"
+#line 896 "Gmsh.y"
     {
       unsigned int (*pColOpt)(int num, int action, unsigned int value);
       StringXColor *pColCat;
@@ -4678,7 +4680,7 @@ yyreduce:
     break;
 
   case 77:
-#line 912 "Gmsh.y"
+#line 914 "Gmsh.y"
     {
       GmshColorTable *ct = Get_ColorTable(0);
       if(!ct)
@@ -4701,7 +4703,7 @@ yyreduce:
     break;
 
   case 78:
-#line 932 "Gmsh.y"
+#line 934 "Gmsh.y"
     {
       GmshColorTable *ct = Get_ColorTable((int)(yyvsp[(3) - (9)].d));
       if(!ct)
@@ -4724,7 +4726,7 @@ yyreduce:
     break;
 
   case 79:
-#line 955 "Gmsh.y"
+#line 957 "Gmsh.y"
     {
       try {
 	GMSH_PluginManager::instance()->setPluginOption((yyvsp[(3) - (9)].c), (yyvsp[(6) - (9)].c), (yyvsp[(8) - (9)].d)); 
@@ -4737,7 +4739,7 @@ yyreduce:
     break;
 
   case 80:
-#line 965 "Gmsh.y"
+#line 967 "Gmsh.y"
     {
       try {
 	GMSH_PluginManager::instance()->setPluginOption((yyvsp[(3) - (9)].c), (yyvsp[(6) - (9)].c), (yyvsp[(8) - (9)].c)); 
@@ -4750,14 +4752,14 @@ yyreduce:
     break;
 
   case 81:
-#line 980 "Gmsh.y"
+#line 982 "Gmsh.y"
     { 
       (yyval.i) = (int)(yyvsp[(1) - (1)].d); 
     ;}
     break;
 
   case 82:
-#line 984 "Gmsh.y"
+#line 986 "Gmsh.y"
     { 
       (yyval.i) = GModel::current()->setPhysicalName
 	(std::string((yyvsp[(1) - (1)].c)), ++GModel::current()->getGEOInternals()->MaxPhysicalNum);
@@ -4766,7 +4768,7 @@ yyreduce:
     break;
 
   case 83:
-#line 997 "Gmsh.y"
+#line 999 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       if(FindPoint(num)){
@@ -4791,7 +4793,7 @@ yyreduce:
     break;
 
   case 84:
-#line 1019 "Gmsh.y"
+#line 1021 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].i);
       if(FindPhysicalGroup(num, MSH_PHYSICAL_POINT)){
@@ -4810,7 +4812,7 @@ yyreduce:
     break;
 
   case 85:
-#line 1035 "Gmsh.y"
+#line 1037 "Gmsh.y"
     {
       AttractorField *att = new AttractorField();
       for(int i = 0; i < List_Nbr((yyvsp[(8) - (9)].l)); i++){
@@ -4834,7 +4836,7 @@ yyreduce:
     break;
 
   case 86:
-#line 1056 "Gmsh.y"
+#line 1058 "Gmsh.y"
     {
       fields.insert(new LatLonField(fields.get((int)(yyvsp[(7) - (8)].d))), (int)(yyvsp[(4) - (8)].d));
       // dummy values
@@ -4844,7 +4846,7 @@ yyreduce:
     break;
 
   case 87:
-#line 1063 "Gmsh.y"
+#line 1065 "Gmsh.y"
     {
       int index = (int)(yyvsp[(7) - (8)].d);
       if(index >= 0 && index < (int)PView::list.size()) 
@@ -4858,7 +4860,7 @@ yyreduce:
     break;
 
   case 88:
-#line 1074 "Gmsh.y"
+#line 1076 "Gmsh.y"
     {
       double pars[] = {0, CTX.lc/10, CTX.lc, CTX.lc/100, CTX.lc/20};
       for(int i = 0; i < List_Nbr((yyvsp[(7) - (8)].l)); i++){
@@ -4876,7 +4878,7 @@ yyreduce:
     break;
 
   case 89:
-#line 1089 "Gmsh.y"
+#line 1091 "Gmsh.y"
     {
       std::list<Field*> *flist = new std::list<Field*>;
       fields.insert(new FunctionField(flist,(yyvsp[(7) - (8)].c)), (int)(yyvsp[(4) - (8)].d));
@@ -4887,7 +4889,7 @@ yyreduce:
     break;
 
   case 90:
-#line 1097 "Gmsh.y"
+#line 1099 "Gmsh.y"
     {
       std::list<Field*> *flist = new std::list<Field*>;
       flist->resize(0);
@@ -4905,7 +4907,7 @@ yyreduce:
     break;
 
   case 91:
-#line 1112 "Gmsh.y"
+#line 1114 "Gmsh.y"
     {
       fields.insert(new StructuredField((yyvsp[(7) - (8)].c)), (int)(yyvsp[(4) - (8)].d));
       // dummy values
@@ -4915,7 +4917,7 @@ yyreduce:
     break;
 
   case 92:
-#line 1119 "Gmsh.y"
+#line 1121 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){
 	double id;
@@ -4929,7 +4931,7 @@ yyreduce:
     break;
 
   case 93:
-#line 1131 "Gmsh.y"
+#line 1133 "Gmsh.y"
     {
       double pars[] = { CTX.lc/10, CTX.lc/100., CTX.lc/20, 1, 3 };
       for(int i = 0; i < List_Nbr((yyvsp[(5) - (6)].l)); i++){
@@ -4966,7 +4968,7 @@ yyreduce:
     break;
 
   case 94:
-#line 1165 "Gmsh.y"
+#line 1167 "Gmsh.y"
     {
       double pars[] = { CTX.lc/10, CTX.lc/100., CTX.lc/20, 10, 3 };
       for(int i = 0; i < List_Nbr((yyvsp[(5) - (6)].l)); i++){
@@ -5005,7 +5007,7 @@ yyreduce:
     break;
 
   case 95:
-#line 1201 "Gmsh.y"
+#line 1203 "Gmsh.y"
     {      
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){
 	double d;
@@ -5027,7 +5029,7 @@ yyreduce:
     break;
 
   case 96:
-#line 1223 "Gmsh.y"
+#line 1225 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       if(FindCurve(num)){
@@ -5048,7 +5050,7 @@ yyreduce:
     break;
 
   case 97:
-#line 1241 "Gmsh.y"
+#line 1243 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       if(FindCurve(num)){
@@ -5069,7 +5071,7 @@ yyreduce:
     break;
 
   case 98:
-#line 1259 "Gmsh.y"
+#line 1261 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       if(FindCurve(num)){
@@ -5090,7 +5092,7 @@ yyreduce:
     break;
 
   case 99:
-#line 1277 "Gmsh.y"
+#line 1279 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (9)].d);
       if(FindCurve(num)){
@@ -5119,7 +5121,7 @@ yyreduce:
     break;
 
   case 100:
-#line 1303 "Gmsh.y"
+#line 1305 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       if(FindCurve(num)){
@@ -5140,7 +5142,7 @@ yyreduce:
     break;
 
   case 101:
-#line 1321 "Gmsh.y"
+#line 1323 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (9)].d);
       if(FindCurve(num)){
@@ -5169,7 +5171,7 @@ yyreduce:
     break;
 
   case 102:
-#line 1348 "Gmsh.y"
+#line 1350 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (17)].d);
       if(FindCurve(num)){
@@ -5191,7 +5193,7 @@ yyreduce:
     break;
 
   case 103:
-#line 1367 "Gmsh.y"
+#line 1369 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       if(FindCurve(num)){
@@ -5212,7 +5214,7 @@ yyreduce:
     break;
 
   case 104:
-#line 1385 "Gmsh.y"
+#line 1387 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       if(FindCurve(num)){
@@ -5233,7 +5235,7 @@ yyreduce:
     break;
 
   case 105:
-#line 1403 "Gmsh.y"
+#line 1405 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (11)].d);
       if(List_Nbr((yyvsp[(6) - (11)].l)) + (int)(yyvsp[(10) - (11)].d) + 1 != List_Nbr((yyvsp[(8) - (11)].l))){
@@ -5262,7 +5264,7 @@ yyreduce:
     break;
 
   case 106:
-#line 1429 "Gmsh.y"
+#line 1431 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].d);
       if(FindEdgeLoop(num)){
@@ -5282,7 +5284,7 @@ yyreduce:
     break;
 
   case 107:
-#line 1446 "Gmsh.y"
+#line 1448 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].i);
       if(FindPhysicalGroup(num, MSH_PHYSICAL_LINE)){
@@ -5301,7 +5303,7 @@ yyreduce:
     break;
 
   case 108:
-#line 1465 "Gmsh.y"
+#line 1467 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].d);
       if(FindSurface(num)){
@@ -5322,7 +5324,7 @@ yyreduce:
     break;
 
   case 109:
-#line 1483 "Gmsh.y"
+#line 1485 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].d), type = 0;
       if(FindSurface(num)){
@@ -5363,7 +5365,7 @@ yyreduce:
     break;
 
   case 110:
-#line 1521 "Gmsh.y"
+#line 1523 "Gmsh.y"
     {
       myGmshSurface = 0;
       (yyval.s).Type = 0;
@@ -5372,7 +5374,7 @@ yyreduce:
     break;
 
   case 111:
-#line 1527 "Gmsh.y"
+#line 1529 "Gmsh.y"
     {
       myGmshSurface = gmshSurface::getSurface((int)(yyvsp[(3) - (4)].d));
       (yyval.s).Type = 0;
@@ -5381,7 +5383,7 @@ yyreduce:
     break;
 
   case 112:
-#line 1533 "Gmsh.y"
+#line 1535 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (10)].d);
       myGmshSurface = gmshParametricSurface::NewParametricSurface(num, (yyvsp[(7) - (10)].c), (yyvsp[(8) - (10)].c), (yyvsp[(9) - (10)].c));
@@ -5391,7 +5393,7 @@ yyreduce:
     break;
 
   case 113:
-#line 1540 "Gmsh.y"
+#line 1542 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       if (List_Nbr((yyvsp[(6) - (7)].l)) != 2){
@@ -5418,7 +5420,7 @@ yyreduce:
     break;
 
   case 114:
-#line 1564 "Gmsh.y"
+#line 1566 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       if (List_Nbr((yyvsp[(6) - (7)].l)) != 2){
@@ -5445,7 +5447,7 @@ yyreduce:
     break;
 
   case 115:
-#line 1588 "Gmsh.y"
+#line 1590 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].d);
       if(FindSurfaceLoop(num)){
@@ -5464,7 +5466,7 @@ yyreduce:
     break;
 
   case 116:
-#line 1604 "Gmsh.y"
+#line 1606 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].i);
       if(FindPhysicalGroup(num, MSH_PHYSICAL_SURFACE)){
@@ -5483,7 +5485,7 @@ yyreduce:
     break;
 
   case 117:
-#line 1624 "Gmsh.y"
+#line 1626 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].d);
       if(FindVolume(num)){
@@ -5503,7 +5505,7 @@ yyreduce:
     break;
 
   case 118:
-#line 1641 "Gmsh.y"
+#line 1643 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (7)].d);
       if(FindVolume(num)){
@@ -5523,7 +5525,7 @@ yyreduce:
     break;
 
   case 119:
-#line 1658 "Gmsh.y"
+#line 1660 "Gmsh.y"
     {
       int num = (int)(yyvsp[(4) - (8)].i);
       if(FindPhysicalGroup(num, MSH_PHYSICAL_VOLUME)){
@@ -5542,7 +5544,7 @@ yyreduce:
     break;
 
   case 120:
-#line 1679 "Gmsh.y"
+#line 1681 "Gmsh.y"
     {
       TranslateShapes((yyvsp[(2) - (5)].v)[0], (yyvsp[(2) - (5)].v)[1], (yyvsp[(2) - (5)].v)[2], (yyvsp[(4) - (5)].l));
       (yyval.l) = (yyvsp[(4) - (5)].l);
@@ -5550,7 +5552,7 @@ yyreduce:
     break;
 
   case 121:
-#line 1684 "Gmsh.y"
+#line 1686 "Gmsh.y"
     {
       RotateShapes((yyvsp[(3) - (11)].v)[0], (yyvsp[(3) - (11)].v)[1], (yyvsp[(3) - (11)].v)[2], (yyvsp[(5) - (11)].v)[0], (yyvsp[(5) - (11)].v)[1], (yyvsp[(5) - (11)].v)[2], (yyvsp[(7) - (11)].d), (yyvsp[(10) - (11)].l));
       (yyval.l) = (yyvsp[(10) - (11)].l);
@@ -5558,7 +5560,7 @@ yyreduce:
     break;
 
   case 122:
-#line 1689 "Gmsh.y"
+#line 1691 "Gmsh.y"
     {
       SymmetryShapes((yyvsp[(2) - (5)].v)[0], (yyvsp[(2) - (5)].v)[1], (yyvsp[(2) - (5)].v)[2], (yyvsp[(2) - (5)].v)[3], (yyvsp[(4) - (5)].l));
       (yyval.l) = (yyvsp[(4) - (5)].l);
@@ -5566,7 +5568,7 @@ yyreduce:
     break;
 
   case 123:
-#line 1694 "Gmsh.y"
+#line 1696 "Gmsh.y"
     {
       DilatShapes((yyvsp[(3) - (9)].v)[0], (yyvsp[(3) - (9)].v)[1], (yyvsp[(3) - (9)].v)[2], (yyvsp[(5) - (9)].d), (yyvsp[(8) - (9)].l));
       (yyval.l) = (yyvsp[(8) - (9)].l);
@@ -5574,7 +5576,7 @@ yyreduce:
     break;
 
   case 124:
-#line 1699 "Gmsh.y"
+#line 1701 "Gmsh.y"
     {
       (yyval.l) = List_Create(3, 3, sizeof(Shape));
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){
@@ -5588,7 +5590,7 @@ yyreduce:
     break;
 
   case 125:
-#line 1710 "Gmsh.y"
+#line 1712 "Gmsh.y"
     { 
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       IntersectCurvesWithSurface((yyvsp[(4) - (9)].l), (int)(yyvsp[(8) - (9)].d), (yyval.l));
@@ -5597,7 +5599,7 @@ yyreduce:
     break;
 
   case 126:
-#line 1716 "Gmsh.y"
+#line 1718 "Gmsh.y"
     { 
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       BoundaryShapes((yyvsp[(3) - (4)].l), (yyval.l));
@@ -5606,31 +5608,31 @@ yyreduce:
     break;
 
   case 127:
-#line 1724 "Gmsh.y"
+#line 1726 "Gmsh.y"
     { (yyval.l) = (yyvsp[(1) - (1)].l); ;}
     break;
 
   case 128:
-#line 1725 "Gmsh.y"
+#line 1727 "Gmsh.y"
     { (yyval.l) = (yyvsp[(1) - (1)].l); ;}
     break;
 
   case 129:
-#line 1730 "Gmsh.y"
+#line 1732 "Gmsh.y"
     {
       (yyval.l) = List_Create(3, 3, sizeof(Shape));
     ;}
     break;
 
   case 130:
-#line 1734 "Gmsh.y"
+#line 1736 "Gmsh.y"
     {
       List_Add((yyval.l), &(yyvsp[(2) - (2)].s));
     ;}
     break;
 
   case 131:
-#line 1738 "Gmsh.y"
+#line 1740 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){
 	double d;
@@ -5656,7 +5658,7 @@ yyreduce:
     break;
 
   case 132:
-#line 1761 "Gmsh.y"
+#line 1763 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){
 	double d;
@@ -5682,7 +5684,7 @@ yyreduce:
     break;
 
   case 133:
-#line 1784 "Gmsh.y"
+#line 1786 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){
 	double d;
@@ -5708,7 +5710,7 @@ yyreduce:
     break;
 
   case 134:
-#line 1807 "Gmsh.y"
+#line 1809 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){
 	double d;
@@ -5734,7 +5736,7 @@ yyreduce:
     break;
 
   case 135:
-#line 1835 "Gmsh.y"
+#line 1837 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){
 	Shape TheShape;
@@ -5746,7 +5748,7 @@ yyreduce:
     break;
 
   case 136:
-#line 1844 "Gmsh.y"
+#line 1846 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(2) - (6)].c), "View")){
 	int index = (int)(yyvsp[(4) - (6)].d);
@@ -5762,7 +5764,7 @@ yyreduce:
     break;
 
   case 137:
-#line 1857 "Gmsh.y"
+#line 1859 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(2) - (3)].c), "Meshes") || !strcmp((yyvsp[(2) - (3)].c), "All")){
 	GModel::current()->destroy();
@@ -5781,7 +5783,7 @@ yyreduce:
     break;
 
   case 138:
-#line 1873 "Gmsh.y"
+#line 1875 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(2) - (4)].c), "Empty") && !strcmp((yyvsp[(3) - (4)].c), "Views")){
 	for(int i = PView::list.size() - 1; i >= 0; i--)
@@ -5794,7 +5796,7 @@ yyreduce:
     break;
 
   case 139:
-#line 1888 "Gmsh.y"
+#line 1890 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){
 	Shape TheShape;
@@ -5806,7 +5808,7 @@ yyreduce:
     break;
 
   case 140:
-#line 1902 "Gmsh.y"
+#line 1904 "Gmsh.y"
     {
       for(int i = 0; i < 4; i++)
 	VisibilityShape((yyvsp[(2) - (3)].c), i, 1);
@@ -5815,7 +5817,7 @@ yyreduce:
     break;
 
   case 141:
-#line 1908 "Gmsh.y"
+#line 1910 "Gmsh.y"
     {
       for(int i = 0; i < 4; i++)
 	VisibilityShape((yyvsp[(2) - (3)].c), i, 0);
@@ -5824,7 +5826,7 @@ yyreduce:
     break;
 
   case 142:
-#line 1914 "Gmsh.y"
+#line 1916 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){
 	Shape TheShape;
@@ -5836,7 +5838,7 @@ yyreduce:
     break;
 
   case 143:
-#line 1923 "Gmsh.y"
+#line 1925 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){
 	Shape TheShape;
@@ -5848,7 +5850,7 @@ yyreduce:
     break;
 
   case 144:
-#line 1937 "Gmsh.y"
+#line 1939 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(1) - (3)].c), "Include")){
 	char tmpstring[1024];
@@ -5899,7 +5901,7 @@ yyreduce:
     break;
 
   case 145:
-#line 1985 "Gmsh.y"
+#line 1987 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(1) - (7)].c), "Save") && !strcmp((yyvsp[(2) - (7)].c), "View")){
 	int index = (int)(yyvsp[(4) - (7)].d);
@@ -5918,7 +5920,7 @@ yyreduce:
     break;
 
   case 146:
-#line 2001 "Gmsh.y"
+#line 2003 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(1) - (7)].c), "Background") && !strcmp((yyvsp[(2) - (7)].c), "Mesh")  && !strcmp((yyvsp[(3) - (7)].c), "View")){
 	int index = (int)(yyvsp[(5) - (7)].d);
@@ -5937,7 +5939,7 @@ yyreduce:
     break;
 
   case 147:
-#line 2017 "Gmsh.y"
+#line 2019 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(1) - (3)].c), "Sleep")){
 	SleepInSeconds((yyvsp[(2) - (3)].d));
@@ -5959,7 +5961,7 @@ yyreduce:
     break;
 
   case 148:
-#line 2036 "Gmsh.y"
+#line 2038 "Gmsh.y"
     {
        try {
 	 GMSH_PluginManager::instance()->action((yyvsp[(3) - (7)].c), (yyvsp[(6) - (7)].c), 0);
@@ -5972,7 +5974,7 @@ yyreduce:
     break;
 
   case 149:
-#line 2046 "Gmsh.y"
+#line 2048 "Gmsh.y"
     {
       if(!strcmp((yyvsp[(2) - (3)].c), "ElementsFromAllViews"))
 	PView::combine(false, 1, CTX.post.combine_remove_orig);
@@ -5997,14 +5999,14 @@ yyreduce:
     break;
 
   case 150:
-#line 2068 "Gmsh.y"
+#line 2070 "Gmsh.y"
     {
       exit(0);
     ;}
     break;
 
   case 151:
-#line 2072 "Gmsh.y"
+#line 2074 "Gmsh.y"
     {
       CTX.forced_bbox = 0;
       SetBoundingBox();
@@ -6012,7 +6014,7 @@ yyreduce:
     break;
 
   case 152:
-#line 2077 "Gmsh.y"
+#line 2079 "Gmsh.y"
     {
       CTX.forced_bbox = 1;
       SetBoundingBox((yyvsp[(3) - (15)].d), (yyvsp[(5) - (15)].d), (yyvsp[(7) - (15)].d), (yyvsp[(9) - (15)].d), (yyvsp[(11) - (15)].d), (yyvsp[(13) - (15)].d));
@@ -6020,7 +6022,7 @@ yyreduce:
     break;
 
   case 153:
-#line 2082 "Gmsh.y"
+#line 2084 "Gmsh.y"
     {
 #if defined(HAVE_FLTK)
       Draw();
@@ -6029,7 +6031,7 @@ yyreduce:
     break;
 
   case 154:
-#line 2094 "Gmsh.y"
+#line 2096 "Gmsh.y"
     {
       LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (6)].d);
       LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(5) - (6)].d);
@@ -6049,7 +6051,7 @@ yyreduce:
     break;
 
   case 155:
-#line 2111 "Gmsh.y"
+#line 2113 "Gmsh.y"
     {
       LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (8)].d);
       LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(5) - (8)].d);
@@ -6069,7 +6071,7 @@ yyreduce:
     break;
 
   case 156:
-#line 2128 "Gmsh.y"
+#line 2130 "Gmsh.y"
     {
       LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (8)].d);
       LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(7) - (8)].d);
@@ -6099,7 +6101,7 @@ yyreduce:
     break;
 
   case 157:
-#line 2155 "Gmsh.y"
+#line 2157 "Gmsh.y"
     {
       LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (10)].d);
       LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(7) - (10)].d);
@@ -6129,7 +6131,7 @@ yyreduce:
     break;
 
   case 158:
-#line 2182 "Gmsh.y"
+#line 2184 "Gmsh.y"
     {
       if(ImbricatedLoop <= 0){
 	yymsg(GERROR, "Invalid For/EndFor loop");
@@ -6163,7 +6165,7 @@ yyreduce:
     break;
 
   case 159:
-#line 2213 "Gmsh.y"
+#line 2215 "Gmsh.y"
     {
       if(!FunctionManager::Instance()->createFunction((yyvsp[(2) - (2)].c), gmsh_yyin, gmsh_yyname,
 						      gmsh_yylineno))
@@ -6174,7 +6176,7 @@ yyreduce:
     break;
 
   case 160:
-#line 2221 "Gmsh.y"
+#line 2223 "Gmsh.y"
     {
       if(!FunctionManager::Instance()->leaveFunction(&gmsh_yyin, gmsh_yyname,
 						     gmsh_yylineno))
@@ -6183,7 +6185,7 @@ yyreduce:
     break;
 
   case 161:
-#line 2227 "Gmsh.y"
+#line 2229 "Gmsh.y"
     {
       if(!FunctionManager::Instance()->enterFunction((yyvsp[(2) - (3)].c), &gmsh_yyin, gmsh_yyname,
 						     gmsh_yylineno))
@@ -6193,20 +6195,20 @@ yyreduce:
     break;
 
   case 162:
-#line 2234 "Gmsh.y"
+#line 2236 "Gmsh.y"
     {
       if(!(yyvsp[(3) - (4)].d)) skip_until("If", "EndIf");
     ;}
     break;
 
   case 163:
-#line 2238 "Gmsh.y"
+#line 2240 "Gmsh.y"
     {
     ;}
     break;
 
   case 164:
-#line 2247 "Gmsh.y"
+#line 2249 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShapes(TRANSLATE, (yyvsp[(4) - (5)].l), 
@@ -6217,7 +6219,7 @@ yyreduce:
     break;
 
   case 165:
-#line 2255 "Gmsh.y"
+#line 2257 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShapes(ROTATE, (yyvsp[(10) - (11)].l), 
@@ -6228,7 +6230,7 @@ yyreduce:
     break;
 
   case 166:
-#line 2263 "Gmsh.y"
+#line 2265 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShapes(TRANSLATE_ROTATE, (yyvsp[(12) - (13)].l), 
@@ -6239,14 +6241,14 @@ yyreduce:
     break;
 
   case 167:
-#line 2271 "Gmsh.y"
+#line 2273 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
     ;}
     break;
 
   case 168:
-#line 2275 "Gmsh.y"
+#line 2277 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShapes(TRANSLATE, (yyvsp[(4) - (7)].l), 
@@ -6257,14 +6259,14 @@ yyreduce:
     break;
 
   case 169:
-#line 2283 "Gmsh.y"
+#line 2285 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
     ;}
     break;
 
   case 170:
-#line 2287 "Gmsh.y"
+#line 2289 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShapes(ROTATE, (yyvsp[(10) - (13)].l), 
@@ -6275,14 +6277,14 @@ yyreduce:
     break;
 
   case 171:
-#line 2295 "Gmsh.y"
+#line 2297 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
     ;}
     break;
 
   case 172:
-#line 2299 "Gmsh.y"
+#line 2301 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShapes(TRANSLATE_ROTATE, (yyvsp[(12) - (15)].l), 
@@ -6293,14 +6295,14 @@ yyreduce:
     break;
 
   case 173:
-#line 2307 "Gmsh.y"
+#line 2309 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
     ;}
     break;
 
   case 174:
-#line 2311 "Gmsh.y"
+#line 2313 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShapes(BOUNDARY_LAYER, (yyvsp[(3) - (6)].l), 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
@@ -6310,14 +6312,14 @@ yyreduce:
     break;
 
   case 175:
-#line 2318 "Gmsh.y"
+#line 2320 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
     ;}
     break;
 
   case 176:
-#line 2322 "Gmsh.y"
+#line 2324 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       extr.mesh.ViewIndex = (int)(yyvsp[(4) - (10)].d);
@@ -6330,7 +6332,7 @@ yyreduce:
     break;
 
   case 177:
-#line 2334 "Gmsh.y"
+#line 2336 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE, MSH_POINT, (int)(yyvsp[(4) - (8)].d), 
@@ -6340,7 +6342,7 @@ yyreduce:
     break;
 
   case 178:
-#line 2341 "Gmsh.y"
+#line 2343 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (8)].d), 
@@ -6350,7 +6352,7 @@ yyreduce:
     break;
 
   case 179:
-#line 2348 "Gmsh.y"
+#line 2350 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (8)].d), 
@@ -6360,7 +6362,7 @@ yyreduce:
     break;
 
   case 180:
-#line 2355 "Gmsh.y"
+#line 2357 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(ROTATE, MSH_POINT, (int)(yyvsp[(4) - (12)].d), 
@@ -6370,7 +6372,7 @@ yyreduce:
     break;
 
   case 181:
-#line 2362 "Gmsh.y"
+#line 2364 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (12)].d), 
@@ -6380,7 +6382,7 @@ yyreduce:
     break;
 
   case 182:
-#line 2369 "Gmsh.y"
+#line 2371 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (12)].d), 
@@ -6390,7 +6392,7 @@ yyreduce:
     break;
 
   case 183:
-#line 2376 "Gmsh.y"
+#line 2378 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)(yyvsp[(4) - (14)].d), 
@@ -6400,7 +6402,7 @@ yyreduce:
     break;
 
   case 184:
-#line 2383 "Gmsh.y"
+#line 2385 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (14)].d), 
@@ -6410,7 +6412,7 @@ yyreduce:
     break;
 
   case 185:
-#line 2390 "Gmsh.y"
+#line 2392 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (14)].d), 
@@ -6420,14 +6422,14 @@ yyreduce:
     break;
 
   case 186:
-#line 2397 "Gmsh.y"
+#line 2399 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
     ;}
     break;
 
   case 187:
-#line 2401 "Gmsh.y"
+#line 2403 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE, MSH_POINT, (int)(yyvsp[(4) - (12)].d), 
@@ -6437,14 +6439,14 @@ yyreduce:
     break;
 
   case 188:
-#line 2408 "Gmsh.y"
+#line 2410 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
     ;}
     break;
 
   case 189:
-#line 2412 "Gmsh.y"
+#line 2414 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (12)].d), 
@@ -6454,14 +6456,14 @@ yyreduce:
     break;
 
   case 190:
-#line 2419 "Gmsh.y"
+#line 2421 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
     ;}
     break;
 
   case 191:
-#line 2423 "Gmsh.y"
+#line 2425 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (12)].d), 
@@ -6471,14 +6473,14 @@ yyreduce:
     break;
 
   case 192:
-#line 2430 "Gmsh.y"
+#line 2432 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
     ;}
     break;
 
   case 193:
-#line 2434 "Gmsh.y"
+#line 2436 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(ROTATE, MSH_POINT, (int)(yyvsp[(4) - (16)].d), 
@@ -6488,14 +6490,14 @@ yyreduce:
     break;
 
   case 194:
-#line 2441 "Gmsh.y"
+#line 2443 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
     ;}
     break;
 
   case 195:
-#line 2445 "Gmsh.y"
+#line 2447 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (16)].d), 
@@ -6505,14 +6507,14 @@ yyreduce:
     break;
 
   case 196:
-#line 2452 "Gmsh.y"
+#line 2454 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
     ;}
     break;
 
   case 197:
-#line 2456 "Gmsh.y"
+#line 2458 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (16)].d), 
@@ -6522,14 +6524,14 @@ yyreduce:
     break;
 
   case 198:
-#line 2463 "Gmsh.y"
+#line 2465 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
     ;}
     break;
 
   case 199:
-#line 2467 "Gmsh.y"
+#line 2469 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)(yyvsp[(4) - (18)].d), 
@@ -6539,14 +6541,14 @@ yyreduce:
     break;
 
   case 200:
-#line 2474 "Gmsh.y"
+#line 2476 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
     ;}
     break;
 
   case 201:
-#line 2478 "Gmsh.y"
+#line 2480 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (18)].d), 
@@ -6556,14 +6558,14 @@ yyreduce:
     break;
 
   case 202:
-#line 2485 "Gmsh.y"
+#line 2487 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
     ;}
     break;
 
   case 203:
-#line 2489 "Gmsh.y"
+#line 2491 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (18)].d), 
@@ -6573,19 +6575,19 @@ yyreduce:
     break;
 
   case 204:
-#line 2500 "Gmsh.y"
+#line 2502 "Gmsh.y"
     {
     ;}
     break;
 
   case 205:
-#line 2503 "Gmsh.y"
+#line 2505 "Gmsh.y"
     {
     ;}
     break;
 
   case 206:
-#line 2509 "Gmsh.y"
+#line 2511 "Gmsh.y"
     {
       extr.mesh.ExtrudeMesh = true;
       extr.mesh.NbLayer = 1;
@@ -6597,7 +6599,7 @@ yyreduce:
     break;
 
   case 207:
-#line 2518 "Gmsh.y"
+#line 2520 "Gmsh.y"
     {
       double d;
       extr.mesh.ExtrudeMesh = true;
@@ -6620,7 +6622,7 @@ yyreduce:
     break;
 
   case 208:
-#line 2538 "Gmsh.y"
+#line 2540 "Gmsh.y"
     {
       yymsg(GERROR, "Explicit region numbers in layers are deprecated");
       double d;
@@ -6646,14 +6648,14 @@ yyreduce:
     break;
 
   case 209:
-#line 2561 "Gmsh.y"
+#line 2563 "Gmsh.y"
     {
       extr.mesh.Recombine = true;
     ;}
     break;
 
   case 210:
-#line 2565 "Gmsh.y"
+#line 2567 "Gmsh.y"
     {
       int num = (int)(yyvsp[(3) - (9)].d);
       if(FindSurface(num)){
@@ -6675,7 +6677,7 @@ yyreduce:
     break;
 
   case 211:
-#line 2589 "Gmsh.y"
+#line 2591 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){
 	double d;
@@ -6696,7 +6698,7 @@ yyreduce:
     break;
 
   case 212:
-#line 2607 "Gmsh.y"
+#line 2609 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (9)].l)); i++){
 	double d;
@@ -6717,7 +6719,7 @@ yyreduce:
     break;
 
   case 213:
-#line 2625 "Gmsh.y"
+#line 2627 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (9)].l)); i++){
 	double d;
@@ -6738,7 +6740,7 @@ yyreduce:
     break;
 
   case 214:
-#line 2643 "Gmsh.y"
+#line 2645 "Gmsh.y"
     {
       Surface *s = FindSurface((int)(yyvsp[(4) - (8)].d));
       if(!s)
@@ -6770,7 +6772,7 @@ yyreduce:
     break;
 
   case 215:
-#line 2672 "Gmsh.y"
+#line 2674 "Gmsh.y"
     {
       Surface *s = FindSurface((int)(yyvsp[(4) - (9)].d));
       if(!s)
@@ -6808,7 +6810,7 @@ yyreduce:
     break;
 
   case 216:
-#line 2707 "Gmsh.y"
+#line 2709 "Gmsh.y"
     {
       yymsg(WARNING, "Elliptic Surface is deprecated: use Transfinite instead (with smoothing)");
       List_Delete((yyvsp[(7) - (8)].l));
@@ -6816,7 +6818,7 @@ yyreduce:
     break;
 
   case 217:
-#line 2712 "Gmsh.y"
+#line 2714 "Gmsh.y"
     {
       Volume *v = FindVolume((int)(yyvsp[(4) - (8)].d));
       if(!v)
@@ -6846,7 +6848,7 @@ yyreduce:
     break;
 
   case 218:
-#line 2739 "Gmsh.y"
+#line 2741 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){
 	double d;
@@ -6863,7 +6865,7 @@ yyreduce:
     break;
 
   case 219:
-#line 2753 "Gmsh.y"
+#line 2755 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){
 	double d;
@@ -6879,7 +6881,7 @@ yyreduce:
     break;
 
   case 220:
-#line 2766 "Gmsh.y"
+#line 2768 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){
 	double d;
@@ -6893,7 +6895,7 @@ yyreduce:
     break;
 
   case 221:
-#line 2783 "Gmsh.y"
+#line 2785 "Gmsh.y"
     { 
       Surface *s = FindSurface((int)(yyvsp[(8) - (10)].d));
       if(s)
@@ -6902,7 +6904,7 @@ yyreduce:
     break;
 
   case 222:
-#line 2789 "Gmsh.y"
+#line 2791 "Gmsh.y"
     {
       Surface *s = FindSurface((int)(yyvsp[(8) - (10)].d));
       if(s)
@@ -6911,66 +6913,66 @@ yyreduce:
     break;
 
   case 223:
-#line 2795 "Gmsh.y"
+#line 2797 "Gmsh.y"
     {
     ;}
     break;
 
   case 224:
-#line 2798 "Gmsh.y"
+#line 2800 "Gmsh.y"
     {
     ;}
     break;
 
   case 225:
-#line 2807 "Gmsh.y"
+#line 2809 "Gmsh.y"
     { 
       ReplaceAllDuplicates();
     ;}
     break;
 
   case 226:
-#line 2816 "Gmsh.y"
+#line 2818 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (1)].d);           ;}
     break;
 
   case 227:
-#line 2817 "Gmsh.y"
+#line 2819 "Gmsh.y"
     { (yyval.d) = (yyvsp[(2) - (3)].d);           ;}
     break;
 
   case 228:
-#line 2818 "Gmsh.y"
+#line 2820 "Gmsh.y"
     { (yyval.d) = -(yyvsp[(2) - (2)].d);          ;}
     break;
 
   case 229:
-#line 2819 "Gmsh.y"
+#line 2821 "Gmsh.y"
     { (yyval.d) = (yyvsp[(2) - (2)].d);           ;}
     break;
 
   case 230:
-#line 2820 "Gmsh.y"
+#line 2822 "Gmsh.y"
     { (yyval.d) = !(yyvsp[(2) - (2)].d);          ;}
     break;
 
   case 231:
-#line 2821 "Gmsh.y"
+#line 2823 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (3)].d) - (yyvsp[(3) - (3)].d);      ;}
     break;
 
   case 232:
-#line 2822 "Gmsh.y"
+#line 2824 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (3)].d) + (yyvsp[(3) - (3)].d);      ;}
     break;
 
   case 233:
-#line 2823 "Gmsh.y"
+#line 2825 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (3)].d) * (yyvsp[(3) - (3)].d);      ;}
     break;
 
   case 234:
-#line 2825 "Gmsh.y"
+#line 2827 "Gmsh.y"
     { 
       if(!(yyvsp[(3) - (3)].d))
 	yymsg(GERROR, "Division by zero in '%g / %g'", (yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d));
@@ -6980,307 +6982,307 @@ yyreduce:
     break;
 
   case 235:
-#line 2831 "Gmsh.y"
+#line 2833 "Gmsh.y"
     { (yyval.d) = (int)(yyvsp[(1) - (3)].d) % (int)(yyvsp[(3) - (3)].d);  ;}
     break;
 
   case 236:
-#line 2832 "Gmsh.y"
+#line 2834 "Gmsh.y"
     { (yyval.d) = pow((yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d));  ;}
     break;
 
   case 237:
-#line 2833 "Gmsh.y"
+#line 2835 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d);      ;}
     break;
 
   case 238:
-#line 2834 "Gmsh.y"
+#line 2836 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (3)].d) > (yyvsp[(3) - (3)].d);      ;}
     break;
 
   case 239:
-#line 2835 "Gmsh.y"
+#line 2837 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (3)].d) <= (yyvsp[(3) - (3)].d);     ;}
     break;
 
   case 240:
-#line 2836 "Gmsh.y"
+#line 2838 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (3)].d) >= (yyvsp[(3) - (3)].d);     ;}
     break;
 
   case 241:
-#line 2837 "Gmsh.y"
+#line 2839 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (3)].d) == (yyvsp[(3) - (3)].d);     ;}
     break;
 
   case 242:
-#line 2838 "Gmsh.y"
+#line 2840 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (3)].d) != (yyvsp[(3) - (3)].d);     ;}
     break;
 
   case 243:
-#line 2839 "Gmsh.y"
+#line 2841 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (3)].d) && (yyvsp[(3) - (3)].d);     ;}
     break;
 
   case 244:
-#line 2840 "Gmsh.y"
+#line 2842 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (3)].d) || (yyvsp[(3) - (3)].d);     ;}
     break;
 
   case 245:
-#line 2841 "Gmsh.y"
+#line 2843 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (5)].d)? (yyvsp[(3) - (5)].d) : (yyvsp[(5) - (5)].d);  ;}
     break;
 
   case 246:
-#line 2842 "Gmsh.y"
+#line 2844 "Gmsh.y"
     { (yyval.d) = exp((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 247:
-#line 2843 "Gmsh.y"
+#line 2845 "Gmsh.y"
     { (yyval.d) = log((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 248:
-#line 2844 "Gmsh.y"
+#line 2846 "Gmsh.y"
     { (yyval.d) = log10((yyvsp[(3) - (4)].d));    ;}
     break;
 
   case 249:
-#line 2845 "Gmsh.y"
+#line 2847 "Gmsh.y"
     { (yyval.d) = sqrt((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 250:
-#line 2846 "Gmsh.y"
+#line 2848 "Gmsh.y"
     { (yyval.d) = sin((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 251:
-#line 2847 "Gmsh.y"
+#line 2849 "Gmsh.y"
     { (yyval.d) = asin((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 252:
-#line 2848 "Gmsh.y"
+#line 2850 "Gmsh.y"
     { (yyval.d) = cos((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 253:
-#line 2849 "Gmsh.y"
+#line 2851 "Gmsh.y"
     { (yyval.d) = acos((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 254:
-#line 2850 "Gmsh.y"
+#line 2852 "Gmsh.y"
     { (yyval.d) = tan((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 255:
-#line 2851 "Gmsh.y"
+#line 2853 "Gmsh.y"
     { (yyval.d) = atan((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 256:
-#line 2852 "Gmsh.y"
+#line 2854 "Gmsh.y"
     { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));;}
     break;
 
   case 257:
-#line 2853 "Gmsh.y"
+#line 2855 "Gmsh.y"
     { (yyval.d) = sinh((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 258:
-#line 2854 "Gmsh.y"
+#line 2856 "Gmsh.y"
     { (yyval.d) = cosh((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 259:
-#line 2855 "Gmsh.y"
+#line 2857 "Gmsh.y"
     { (yyval.d) = tanh((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 260:
-#line 2856 "Gmsh.y"
+#line 2858 "Gmsh.y"
     { (yyval.d) = fabs((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 261:
-#line 2857 "Gmsh.y"
+#line 2859 "Gmsh.y"
     { (yyval.d) = floor((yyvsp[(3) - (4)].d));    ;}
     break;
 
   case 262:
-#line 2858 "Gmsh.y"
+#line 2860 "Gmsh.y"
     { (yyval.d) = ceil((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 263:
-#line 2859 "Gmsh.y"
+#line 2861 "Gmsh.y"
     { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;}
     break;
 
   case 264:
-#line 2860 "Gmsh.y"
+#line 2862 "Gmsh.y"
     { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;}
     break;
 
   case 265:
-#line 2861 "Gmsh.y"
+#line 2863 "Gmsh.y"
     { (yyval.d) = sqrt((yyvsp[(3) - (6)].d)*(yyvsp[(3) - (6)].d)+(yyvsp[(5) - (6)].d)*(yyvsp[(5) - (6)].d)); ;}
     break;
 
   case 266:
-#line 2862 "Gmsh.y"
+#line 2864 "Gmsh.y"
     { (yyval.d) = (yyvsp[(3) - (4)].d)*(double)rand()/(double)RAND_MAX; ;}
     break;
 
   case 267:
-#line 2864 "Gmsh.y"
+#line 2866 "Gmsh.y"
     { (yyval.d) = exp((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 268:
-#line 2865 "Gmsh.y"
+#line 2867 "Gmsh.y"
     { (yyval.d) = log((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 269:
-#line 2866 "Gmsh.y"
+#line 2868 "Gmsh.y"
     { (yyval.d) = log10((yyvsp[(3) - (4)].d));    ;}
     break;
 
   case 270:
-#line 2867 "Gmsh.y"
+#line 2869 "Gmsh.y"
     { (yyval.d) = sqrt((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 271:
-#line 2868 "Gmsh.y"
+#line 2870 "Gmsh.y"
     { (yyval.d) = sin((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 272:
-#line 2869 "Gmsh.y"
+#line 2871 "Gmsh.y"
     { (yyval.d) = asin((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 273:
-#line 2870 "Gmsh.y"
+#line 2872 "Gmsh.y"
     { (yyval.d) = cos((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 274:
-#line 2871 "Gmsh.y"
+#line 2873 "Gmsh.y"
     { (yyval.d) = acos((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 275:
-#line 2872 "Gmsh.y"
+#line 2874 "Gmsh.y"
     { (yyval.d) = tan((yyvsp[(3) - (4)].d));      ;}
     break;
 
   case 276:
-#line 2873 "Gmsh.y"
+#line 2875 "Gmsh.y"
     { (yyval.d) = atan((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 277:
-#line 2874 "Gmsh.y"
+#line 2876 "Gmsh.y"
     { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));;}
     break;
 
   case 278:
-#line 2875 "Gmsh.y"
+#line 2877 "Gmsh.y"
     { (yyval.d) = sinh((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 279:
-#line 2876 "Gmsh.y"
+#line 2878 "Gmsh.y"
     { (yyval.d) = cosh((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 280:
-#line 2877 "Gmsh.y"
+#line 2879 "Gmsh.y"
     { (yyval.d) = tanh((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 281:
-#line 2878 "Gmsh.y"
+#line 2880 "Gmsh.y"
     { (yyval.d) = fabs((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 282:
-#line 2879 "Gmsh.y"
+#line 2881 "Gmsh.y"
     { (yyval.d) = floor((yyvsp[(3) - (4)].d));    ;}
     break;
 
   case 283:
-#line 2880 "Gmsh.y"
+#line 2882 "Gmsh.y"
     { (yyval.d) = ceil((yyvsp[(3) - (4)].d));     ;}
     break;
 
   case 284:
-#line 2881 "Gmsh.y"
+#line 2883 "Gmsh.y"
     { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;}
     break;
 
   case 285:
-#line 2882 "Gmsh.y"
+#line 2884 "Gmsh.y"
     { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;}
     break;
 
   case 286:
-#line 2883 "Gmsh.y"
+#line 2885 "Gmsh.y"
     { (yyval.d) = sqrt((yyvsp[(3) - (6)].d)*(yyvsp[(3) - (6)].d)+(yyvsp[(5) - (6)].d)*(yyvsp[(5) - (6)].d)); ;}
     break;
 
   case 287:
-#line 2884 "Gmsh.y"
+#line 2886 "Gmsh.y"
     { (yyval.d) = (yyvsp[(3) - (4)].d)*(double)rand()/(double)RAND_MAX; ;}
     break;
 
   case 288:
-#line 2893 "Gmsh.y"
+#line 2895 "Gmsh.y"
     { (yyval.d) = (yyvsp[(1) - (1)].d); ;}
     break;
 
   case 289:
-#line 2894 "Gmsh.y"
+#line 2896 "Gmsh.y"
     { (yyval.d) = 3.141592653589793; ;}
     break;
 
   case 290:
-#line 2895 "Gmsh.y"
+#line 2897 "Gmsh.y"
     { (yyval.d) = ParUtil::Instance()->rank(); ;}
     break;
 
   case 291:
-#line 2896 "Gmsh.y"
+#line 2898 "Gmsh.y"
     { (yyval.d) = ParUtil::Instance()->size(); ;}
     break;
 
   case 292:
-#line 2897 "Gmsh.y"
+#line 2899 "Gmsh.y"
     { (yyval.d) = Get_GmshMajorVersion(); ;}
     break;
 
   case 293:
-#line 2898 "Gmsh.y"
+#line 2900 "Gmsh.y"
     { (yyval.d) = Get_GmshMinorVersion(); ;}
     break;
 
   case 294:
-#line 2899 "Gmsh.y"
+#line 2901 "Gmsh.y"
     { (yyval.d) = Get_GmshPatchVersion(); ;}
     break;
 
   case 295:
-#line 2904 "Gmsh.y"
+#line 2906 "Gmsh.y"
     {
       Symbol TheSymbol;
       TheSymbol.Name = (yyvsp[(1) - (1)].c);
@@ -7296,7 +7298,7 @@ yyreduce:
     break;
 
   case 296:
-#line 2920 "Gmsh.y"
+#line 2922 "Gmsh.y"
     {
       char tmpstring[1024];
       sprintf(tmpstring, "%s_%d", (yyvsp[(1) - (5)].c), (int)(yyvsp[(4) - (5)].d)) ;
@@ -7314,7 +7316,7 @@ yyreduce:
     break;
 
   case 297:
-#line 2935 "Gmsh.y"
+#line 2937 "Gmsh.y"
     {
       Symbol TheSymbol;
       TheSymbol.Name = (yyvsp[(1) - (4)].c);
@@ -7337,7 +7339,7 @@ yyreduce:
     break;
 
   case 298:
-#line 2955 "Gmsh.y"
+#line 2957 "Gmsh.y"
     {
       Symbol TheSymbol;
       TheSymbol.Name = (yyvsp[(2) - (4)].c);
@@ -7353,7 +7355,7 @@ yyreduce:
     break;
 
   case 299:
-#line 2968 "Gmsh.y"
+#line 2970 "Gmsh.y"
     {
       Symbol TheSymbol;
       TheSymbol.Name = (yyvsp[(1) - (2)].c);
@@ -7369,7 +7371,7 @@ yyreduce:
     break;
 
   case 300:
-#line 2981 "Gmsh.y"
+#line 2983 "Gmsh.y"
     {
       Symbol TheSymbol;
       TheSymbol.Name = (yyvsp[(1) - (5)].c);
@@ -7392,7 +7394,7 @@ yyreduce:
     break;
 
   case 301:
-#line 3004 "Gmsh.y"
+#line 3006 "Gmsh.y"
     {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
@@ -7413,7 +7415,7 @@ yyreduce:
     break;
 
   case 302:
-#line 3022 "Gmsh.y"
+#line 3024 "Gmsh.y"
     {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
@@ -7434,7 +7436,7 @@ yyreduce:
     break;
 
   case 303:
-#line 3040 "Gmsh.y"
+#line 3042 "Gmsh.y"
     {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
@@ -7455,7 +7457,7 @@ yyreduce:
     break;
 
   case 304:
-#line 3058 "Gmsh.y"
+#line 3060 "Gmsh.y"
     {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
@@ -7476,7 +7478,7 @@ yyreduce:
     break;
 
   case 305:
-#line 3076 "Gmsh.y"
+#line 3078 "Gmsh.y"
     { 
       (yyval.d) = GetValue((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].d));
       Free((yyvsp[(3) - (6)].c));
@@ -7484,70 +7486,70 @@ yyreduce:
     break;
 
   case 306:
-#line 3084 "Gmsh.y"
+#line 3086 "Gmsh.y"
     {
       memcpy((yyval.v), (yyvsp[(1) - (1)].v), 5*sizeof(double));
     ;}
     break;
 
   case 307:
-#line 3088 "Gmsh.y"
+#line 3090 "Gmsh.y"
     {
       for(int i = 0; i < 5; i++) (yyval.v)[i] = -(yyvsp[(2) - (2)].v)[i];
     ;}
     break;
 
   case 308:
-#line 3092 "Gmsh.y"
+#line 3094 "Gmsh.y"
     { 
       for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(2) - (2)].v)[i];
     ;}
     break;
 
   case 309:
-#line 3096 "Gmsh.y"
+#line 3098 "Gmsh.y"
     { 
       for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] - (yyvsp[(3) - (3)].v)[i];
     ;}
     break;
 
   case 310:
-#line 3100 "Gmsh.y"
+#line 3102 "Gmsh.y"
     {
       for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] + (yyvsp[(3) - (3)].v)[i];
     ;}
     break;
 
   case 311:
-#line 3107 "Gmsh.y"
+#line 3109 "Gmsh.y"
     { 
       (yyval.v)[0] = (yyvsp[(2) - (11)].d);  (yyval.v)[1] = (yyvsp[(4) - (11)].d);  (yyval.v)[2] = (yyvsp[(6) - (11)].d);  (yyval.v)[3] = (yyvsp[(8) - (11)].d); (yyval.v)[4] = (yyvsp[(10) - (11)].d);
     ;}
     break;
 
   case 312:
-#line 3111 "Gmsh.y"
+#line 3113 "Gmsh.y"
     { 
       (yyval.v)[0] = (yyvsp[(2) - (9)].d);  (yyval.v)[1] = (yyvsp[(4) - (9)].d);  (yyval.v)[2] = (yyvsp[(6) - (9)].d);  (yyval.v)[3] = (yyvsp[(8) - (9)].d); (yyval.v)[4] = 1.0;
     ;}
     break;
 
   case 313:
-#line 3115 "Gmsh.y"
+#line 3117 "Gmsh.y"
     {
       (yyval.v)[0] = (yyvsp[(2) - (7)].d);  (yyval.v)[1] = (yyvsp[(4) - (7)].d);  (yyval.v)[2] = (yyvsp[(6) - (7)].d);  (yyval.v)[3] = 0.0; (yyval.v)[4] = 1.0;
     ;}
     break;
 
   case 314:
-#line 3119 "Gmsh.y"
+#line 3121 "Gmsh.y"
     {
       (yyval.v)[0] = (yyvsp[(2) - (7)].d);  (yyval.v)[1] = (yyvsp[(4) - (7)].d);  (yyval.v)[2] = (yyvsp[(6) - (7)].d);  (yyval.v)[3] = 0.0; (yyval.v)[4] = 1.0;
     ;}
     break;
 
   case 315:
-#line 3126 "Gmsh.y"
+#line 3128 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(List_T*));
       List_Add((yyval.l), &((yyvsp[(1) - (1)].l)));
@@ -7555,14 +7557,14 @@ yyreduce:
     break;
 
   case 316:
-#line 3131 "Gmsh.y"
+#line 3133 "Gmsh.y"
     {
       List_Add((yyval.l), &((yyvsp[(3) - (3)].l)));
     ;}
     break;
 
   case 317:
-#line 3139 "Gmsh.y"
+#line 3141 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(double));
       List_Add((yyval.l), &((yyvsp[(1) - (1)].d)));
@@ -7570,14 +7572,14 @@ yyreduce:
     break;
 
   case 318:
-#line 3144 "Gmsh.y"
+#line 3146 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(1) - (1)].l);
     ;}
     break;
 
   case 319:
-#line 3148 "Gmsh.y"
+#line 3150 "Gmsh.y"
     {
       // creates an empty list
       (yyval.l) = List_Create(2, 1, sizeof(double));
@@ -7585,14 +7587,14 @@ yyreduce:
     break;
 
   case 320:
-#line 3153 "Gmsh.y"
+#line 3155 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(2) - (3)].l);
     ;}
     break;
 
   case 321:
-#line 3157 "Gmsh.y"
+#line 3159 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(3) - (4)].l);
       for(int i = 0; i < List_Nbr((yyval.l)); i++){
@@ -7603,7 +7605,7 @@ yyreduce:
     break;
 
   case 322:
-#line 3165 "Gmsh.y"
+#line 3167 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(4) - (5)].l);
       for(int i = 0; i < List_Nbr((yyval.l)); i++){
@@ -7614,7 +7616,7 @@ yyreduce:
     break;
 
   case 323:
-#line 3176 "Gmsh.y"
+#line 3178 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(2) - (2)].l);
       for(int i = 0; i < List_Nbr((yyval.l)); i++){
@@ -7625,7 +7627,7 @@ yyreduce:
     break;
 
   case 324:
-#line 3184 "Gmsh.y"
+#line 3186 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(3) - (3)].l);
       for(int i = 0; i < List_Nbr((yyval.l)); i++){
@@ -7636,7 +7638,7 @@ yyreduce:
     break;
 
   case 325:
-#line 3192 "Gmsh.y"
+#line 3194 "Gmsh.y"
     { 
       (yyval.l) = List_Create(2, 1, sizeof(double)); 
       for(double d = (yyvsp[(1) - (3)].d); ((yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d)) ? (d <= (yyvsp[(3) - (3)].d)) : (d >= (yyvsp[(3) - (3)].d)); ((yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d)) ? (d += 1.) : (d -= 1.)) 
@@ -7645,7 +7647,7 @@ yyreduce:
     break;
 
   case 326:
-#line 3198 "Gmsh.y"
+#line 3200 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(double)); 
       if(!(yyvsp[(5) - (5)].d) || ((yyvsp[(1) - (5)].d) < (yyvsp[(3) - (5)].d) && (yyvsp[(5) - (5)].d) < 0) || ((yyvsp[(1) - (5)].d) > (yyvsp[(3) - (5)].d) && (yyvsp[(5) - (5)].d) > 0)){
@@ -7659,7 +7661,7 @@ yyreduce:
     break;
 
   case 327:
-#line 3209 "Gmsh.y"
+#line 3211 "Gmsh.y"
     {
       // Returns the coordinates of a point and fills a list with it.
       // This allows to ensure e.g. that relative point positions are
@@ -7682,7 +7684,7 @@ yyreduce:
     break;
 
   case 328:
-#line 3229 "Gmsh.y"
+#line 3231 "Gmsh.y"
     {
       (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double));
       for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){
@@ -7695,7 +7697,7 @@ yyreduce:
     break;
 
   case 329:
-#line 3239 "Gmsh.y"
+#line 3241 "Gmsh.y"
     {
       (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double));
       for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){
@@ -7708,7 +7710,7 @@ yyreduce:
     break;
 
   case 330:
-#line 3249 "Gmsh.y"
+#line 3251 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(double));
       Symbol TheSymbol;
@@ -7728,7 +7730,7 @@ yyreduce:
     break;
 
   case 331:
-#line 3266 "Gmsh.y"
+#line 3268 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(double));
       Symbol TheSymbol;
@@ -7755,7 +7757,7 @@ yyreduce:
     break;
 
   case 332:
-#line 3293 "Gmsh.y"
+#line 3295 "Gmsh.y"
     {
       (yyval.l) = List_Create(2, 1, sizeof(double));
       List_Add((yyval.l), &((yyvsp[(1) - (1)].d)));
@@ -7763,21 +7765,21 @@ yyreduce:
     break;
 
   case 333:
-#line 3298 "Gmsh.y"
+#line 3300 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(1) - (1)].l);
     ;}
     break;
 
   case 334:
-#line 3302 "Gmsh.y"
+#line 3304 "Gmsh.y"
     {
       List_Add((yyval.l), &((yyvsp[(3) - (3)].d)));
     ;}
     break;
 
   case 335:
-#line 3306 "Gmsh.y"
+#line 3308 "Gmsh.y"
     {
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (3)].l)); i++){
 	double d;
@@ -7789,21 +7791,21 @@ yyreduce:
     break;
 
   case 336:
-#line 3319 "Gmsh.y"
+#line 3321 "Gmsh.y"
     {
       (yyval.u) = CTX.PACK_COLOR((int)(yyvsp[(2) - (9)].d), (int)(yyvsp[(4) - (9)].d), (int)(yyvsp[(6) - (9)].d), (int)(yyvsp[(8) - (9)].d));
     ;}
     break;
 
   case 337:
-#line 3323 "Gmsh.y"
+#line 3325 "Gmsh.y"
     {
       (yyval.u) = CTX.PACK_COLOR((int)(yyvsp[(2) - (7)].d), (int)(yyvsp[(4) - (7)].d), (int)(yyvsp[(6) - (7)].d), 255);
     ;}
     break;
 
   case 338:
-#line 3335 "Gmsh.y"
+#line 3337 "Gmsh.y"
     {
       int flag;
       (yyval.u) = Get_ColorForString(ColorString, -1, (yyvsp[(1) - (1)].c), &flag);
@@ -7813,7 +7815,7 @@ yyreduce:
     break;
 
   case 339:
-#line 3342 "Gmsh.y"
+#line 3344 "Gmsh.y"
     {
       unsigned int (*pColOpt)(int num, int action, unsigned int value);
       StringXColor *pColCat;
@@ -7834,14 +7836,14 @@ yyreduce:
     break;
 
   case 340:
-#line 3363 "Gmsh.y"
+#line 3365 "Gmsh.y"
     {
       (yyval.l) = (yyvsp[(2) - (3)].l);
     ;}
     break;
 
   case 341:
-#line 3367 "Gmsh.y"
+#line 3369 "Gmsh.y"
     {
       (yyval.l) = List_Create(256, 10, sizeof(unsigned int));
       GmshColorTable *ct = Get_ColorTable((int)(yyvsp[(3) - (6)].d));
@@ -7856,7 +7858,7 @@ yyreduce:
     break;
 
   case 342:
-#line 3382 "Gmsh.y"
+#line 3384 "Gmsh.y"
     {
       (yyval.l) = List_Create(256, 10, sizeof(unsigned int));
       List_Add((yyval.l), &((yyvsp[(1) - (1)].u)));
@@ -7864,35 +7866,35 @@ yyreduce:
     break;
 
   case 343:
-#line 3387 "Gmsh.y"
+#line 3389 "Gmsh.y"
     {
       List_Add((yyval.l), &((yyvsp[(3) - (3)].u)));
     ;}
     break;
 
   case 344:
-#line 3394 "Gmsh.y"
+#line 3396 "Gmsh.y"
     {
       (yyval.c) = (yyvsp[(1) - (1)].c);
     ;}
     break;
 
   case 345:
-#line 3398 "Gmsh.y"
+#line 3400 "Gmsh.y"
     {
       Msg(WARNING, "Named string expressions not implemented yet");
     ;}
     break;
 
   case 346:
-#line 3405 "Gmsh.y"
+#line 3407 "Gmsh.y"
     {
       (yyval.c) = (yyvsp[(1) - (1)].c);
     ;}
     break;
 
   case 347:
-#line 3409 "Gmsh.y"
+#line 3411 "Gmsh.y"
     {
       (yyval.c) = (char *)Malloc(32*sizeof(char));
       time_t now;
@@ -7903,7 +7905,7 @@ yyreduce:
     break;
 
   case 348:
-#line 3417 "Gmsh.y"
+#line 3419 "Gmsh.y"
     {
       (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (6)].c))+strlen((yyvsp[(5) - (6)].c))+1)*sizeof(char));
       strcpy((yyval.c), (yyvsp[(3) - (6)].c));
@@ -7914,7 +7916,7 @@ yyreduce:
     break;
 
   case 349:
-#line 3425 "Gmsh.y"
+#line 3427 "Gmsh.y"
     {
       (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c))+1)*sizeof(char));
       int i;
@@ -7931,7 +7933,7 @@ yyreduce:
     break;
 
   case 350:
-#line 3439 "Gmsh.y"
+#line 3441 "Gmsh.y"
     {
       (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c))+1)*sizeof(char));
       int i;
@@ -7948,14 +7950,14 @@ yyreduce:
     break;
 
   case 351:
-#line 3453 "Gmsh.y"
+#line 3455 "Gmsh.y"
     {
       (yyval.c) = (yyvsp[(3) - (4)].c);
     ;}
     break;
 
   case 352:
-#line 3457 "Gmsh.y"
+#line 3459 "Gmsh.y"
     {
       char tmpstring[1024];
       int i = PrintListOfDouble((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].l), tmpstring);
@@ -7977,9 +7979,9 @@ yyreduce:
     break;
 
   case 353:
-#line 3476 "Gmsh.y"
+#line 3478 "Gmsh.y"
     { 
-      char* (*pStrOpt)(int num, int action, char *value);
+      const char* (*pStrOpt)(int num, int action, const char *value);
       StringXString *pStrCat;
       if(!(pStrCat = Get_StringOptionCategory((yyvsp[(3) - (6)].c)))){
 	yymsg(GERROR, "Unknown string option class '%s'", (yyvsp[(3) - (6)].c));
@@ -7987,13 +7989,14 @@ yyreduce:
 	(yyval.c)[0] = '\0';
       }
       else{
-	if(!(pStrOpt = (char *(*) (int, int, char *))Get_StringOption((yyvsp[(5) - (6)].c), pStrCat))){
+	if(!(pStrOpt = (const char *(*) (int, int, const char *))
+	     Get_StringOption((yyvsp[(5) - (6)].c), pStrCat))){
 	  yymsg(GERROR, "Unknown string option '%s.%s'", (yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c));
 	  (yyval.c) = (char*)Malloc(sizeof(char));
 	  (yyval.c)[0] = '\0';
 	}
 	else{
-	  char *str = pStrOpt(0, GMSH_GET, NULL);
+	  const char *str = pStrOpt(0, GMSH_GET, NULL);
 	  (yyval.c) = (char*)Malloc((strlen(str)+1)*sizeof(char));
 	  strcpy((yyval.c), str);
 	}
@@ -8002,9 +8005,9 @@ yyreduce:
     break;
 
   case 354:
-#line 3498 "Gmsh.y"
+#line 3501 "Gmsh.y"
     { 
-      char* (*pStrOpt)(int num, int action, char *value);
+      const char* (*pStrOpt)(int num, int action, const char *value);
       StringXString *pStrCat;
       if(!(pStrCat = Get_StringOptionCategory((yyvsp[(3) - (9)].c)))){
 	yymsg(GERROR, "Unknown string option class '%s'", (yyvsp[(3) - (9)].c));
@@ -8012,13 +8015,14 @@ yyreduce:
 	(yyval.c)[0] = '\0';
       }
       else{
-	if(!(pStrOpt = (char *(*) (int, int, char *))Get_StringOption((yyvsp[(8) - (9)].c), pStrCat))){
+	if(!(pStrOpt = (const char *(*) (int, int, const char *))
+	     Get_StringOption((yyvsp[(8) - (9)].c), pStrCat))){
 	  yymsg(GERROR, "Unknown string option '%s[%d].%s'", (yyvsp[(3) - (9)].c), (int)(yyvsp[(5) - (9)].d), (yyvsp[(8) - (9)].c));
 	  (yyval.c) = (char*)Malloc(sizeof(char));
 	  (yyval.c)[0] = '\0';
 	}
 	else{
-	  char *str = pStrOpt((int)(yyvsp[(5) - (9)].d), GMSH_GET, NULL);
+	  const char *str = pStrOpt((int)(yyvsp[(5) - (9)].d), GMSH_GET, NULL);
 	  (yyval.c) = (char*)Malloc((strlen(str)+1)*sizeof(char));
 	  strcpy((yyval.c), str);
 	}
@@ -8028,7 +8032,7 @@ yyreduce:
 
 
 /* Line 1267 of yacc.c.  */
-#line 8032 "Gmsh.tab.cpp"
+#line 8036 "Gmsh.tab.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -8242,20 +8246,23 @@ yyreturn:
 }
 
 
-#line 3521 "Gmsh.y"
+#line 3525 "Gmsh.y"
 
 
-void DeleteSymbol(void *a, void *b){
+void DeleteSymbol(void *a, void *b)
+{
   Symbol *s = (Symbol*)a;
   Free(s->Name);
   List_Delete(s->val);
 }
 
-int CompareSymbols (const void *a, const void *b){
+int CompareSymbols (const void *a, const void *b)
+{
   return(strcmp(((Symbol*)a)->Name, ((Symbol*)b)->Name));
 }
 
-void InitSymbols(void){
+void InitSymbols()
+{
   if(Symbol_T){
     Tree_Action(Symbol_T, DeleteSymbol);
     Tree_Delete(Symbol_T);
@@ -8263,7 +8270,8 @@ void InitSymbols(void){
   Symbol_T = Tree_Create(sizeof(Symbol), CompareSymbols);
 }
 
-int PrintListOfDouble(char *format, List_T *list, char *buffer){
+int PrintListOfDouble(char *format, List_T *list, char *buffer)
+{
   int j, k;
   char tmp1[256], tmp2[256];
 
@@ -8297,12 +8305,14 @@ int PrintListOfDouble(char *format, List_T *list, char *buffer){
   return 0;
 }
 
-void yyerror(char *s){
+void yyerror(char *s)
+{
   Msg(GERROR, "'%s', line %d : %s (%s)", gmsh_yyname, gmsh_yylineno - 1, s, gmsh_yytext);
   gmsh_yyerrorstate++;
 }
 
-void yymsg(int type, char *fmt, ...){
+void yymsg(int type, const char *fmt, ...)
+{
   va_list args;
   char tmp[1024];
 
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
index 027e5724dd0f23d57d03415544b4d5cc61893dce..fd2985ce60791f243fedfc709fd7630303a81017 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -1,5 +1,5 @@
 %{
-// $Id: Gmsh.y,v 1.301 2008-02-22 21:09:02 geuzaine Exp $
+// $Id: Gmsh.y,v 1.302 2008-02-23 15:30:09 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -71,8 +71,8 @@ static double LoopControlVariablesTab[MAX_RECUR_LOOPS][3];
 static char *LoopControlVariablesNameTab[MAX_RECUR_LOOPS];
 
 void yyerror(char *s);
-void yymsg(int type, char *fmt, ...);
-void skip_until(char *skip, char *until);
+void yymsg(int type, const char *fmt, ...);
+void skip_until(const char *skip, const char *until);
 int PrintListOfDouble(char *format, List_T *list, char *buffer);
 %}
 
@@ -174,11 +174,11 @@ GeoFormatItem :
 SendToFile :
     '>'
     {
-      $$ = "w";
+      $$ = (char*)"w";
     }
   | '>' '>'
     {
-      $$ = "a";
+      $$ = (char*)"a";
     }
 ;
 
@@ -762,12 +762,13 @@ Affectation :
 
   | tSTRING '.' tSTRING tAFFECT StringExpr tEND 
     { 
-      char* (*pStrOpt)(int num, int action, char *value);
+      const char* (*pStrOpt)(int num, int action, const char *value);
       StringXString *pStrCat;
       if(!(pStrCat = Get_StringOptionCategory($1)))
 	yymsg(GERROR, "Unknown string option class '%s'", $1);
       else{
-	if(!(pStrOpt = (char *(*) (int, int, char *))Get_StringOption($3, pStrCat)))
+	if(!(pStrOpt = (const char *(*) (int, int, const char *))
+	     Get_StringOption($3, pStrCat)))
 	  yymsg(GERROR, "Unknown string option '%s.%s'", $1, $3);
 	else
 	  pStrOpt(0, GMSH_SET|GMSH_GUI, $5);
@@ -776,12 +777,13 @@ Affectation :
     }
   | tSTRING '[' FExpr ']' '.' tSTRING tAFFECT StringExpr tEND 
     { 
-      char* (*pStrOpt)(int num, int action, char *value);
+      const char* (*pStrOpt)(int num, int action, const char *value);
       StringXString *pStrCat;
       if(!(pStrCat = Get_StringOptionCategory($1)))
 	yymsg(GERROR, "Unknown string option class '%s'", $1);
       else{
-	if(!(pStrOpt = (char *(*) (int, int, char *))Get_StringOption($6, pStrCat)))
+	if(!(pStrOpt = (const char *(*) (int, int, const char *))
+	     Get_StringOption($6, pStrCat)))
 	  yymsg(GERROR, "Unknown string option '%s[%d].%s'", $1, (int)$3, $6);
 	else
 	  pStrOpt((int)$3, GMSH_SET|GMSH_GUI, $8);
@@ -3474,7 +3476,7 @@ StringExpr :
     }
   | tSprintf '(' tSTRING '.' tSTRING ')'
     { 
-      char* (*pStrOpt)(int num, int action, char *value);
+      const char* (*pStrOpt)(int num, int action, const char *value);
       StringXString *pStrCat;
       if(!(pStrCat = Get_StringOptionCategory($3))){
 	yymsg(GERROR, "Unknown string option class '%s'", $3);
@@ -3482,13 +3484,14 @@ StringExpr :
 	$$[0] = '\0';
       }
       else{
-	if(!(pStrOpt = (char *(*) (int, int, char *))Get_StringOption($5, pStrCat))){
+	if(!(pStrOpt = (const char *(*) (int, int, const char *))
+	     Get_StringOption($5, pStrCat))){
 	  yymsg(GERROR, "Unknown string option '%s.%s'", $3, $5);
 	  $$ = (char*)Malloc(sizeof(char));
 	  $$[0] = '\0';
 	}
 	else{
-	  char *str = pStrOpt(0, GMSH_GET, NULL);
+	  const char *str = pStrOpt(0, GMSH_GET, NULL);
 	  $$ = (char*)Malloc((strlen(str)+1)*sizeof(char));
 	  strcpy($$, str);
 	}
@@ -3496,7 +3499,7 @@ StringExpr :
     }
   | tSprintf '(' tSTRING '[' FExpr ']' '.' tSTRING ')'
     { 
-      char* (*pStrOpt)(int num, int action, char *value);
+      const char* (*pStrOpt)(int num, int action, const char *value);
       StringXString *pStrCat;
       if(!(pStrCat = Get_StringOptionCategory($3))){
 	yymsg(GERROR, "Unknown string option class '%s'", $3);
@@ -3504,13 +3507,14 @@ StringExpr :
 	$$[0] = '\0';
       }
       else{
-	if(!(pStrOpt = (char *(*) (int, int, char *))Get_StringOption($8, pStrCat))){
+	if(!(pStrOpt = (const char *(*) (int, int, const char *))
+	     Get_StringOption($8, pStrCat))){
 	  yymsg(GERROR, "Unknown string option '%s[%d].%s'", $3, (int)$5, $8);
 	  $$ = (char*)Malloc(sizeof(char));
 	  $$[0] = '\0';
 	}
 	else{
-	  char *str = pStrOpt((int)$5, GMSH_GET, NULL);
+	  const char *str = pStrOpt((int)$5, GMSH_GET, NULL);
 	  $$ = (char*)Malloc((strlen(str)+1)*sizeof(char));
 	  strcpy($$, str);
 	}
@@ -3520,17 +3524,20 @@ StringExpr :
 
 %%
 
-void DeleteSymbol(void *a, void *b){
+void DeleteSymbol(void *a, void *b)
+{
   Symbol *s = (Symbol*)a;
   Free(s->Name);
   List_Delete(s->val);
 }
 
-int CompareSymbols (const void *a, const void *b){
+int CompareSymbols (const void *a, const void *b)
+{
   return(strcmp(((Symbol*)a)->Name, ((Symbol*)b)->Name));
 }
 
-void InitSymbols(void){
+void InitSymbols()
+{
   if(Symbol_T){
     Tree_Action(Symbol_T, DeleteSymbol);
     Tree_Delete(Symbol_T);
@@ -3538,7 +3545,8 @@ void InitSymbols(void){
   Symbol_T = Tree_Create(sizeof(Symbol), CompareSymbols);
 }
 
-int PrintListOfDouble(char *format, List_T *list, char *buffer){
+int PrintListOfDouble(char *format, List_T *list, char *buffer)
+{
   int j, k;
   char tmp1[256], tmp2[256];
 
@@ -3572,12 +3580,14 @@ int PrintListOfDouble(char *format, List_T *list, char *buffer){
   return 0;
 }
 
-void yyerror(char *s){
+void yyerror(char *s)
+{
   Msg(GERROR, "'%s', line %d : %s (%s)", gmsh_yyname, gmsh_yylineno - 1, s, gmsh_yytext);
   gmsh_yyerrorstate++;
 }
 
-void yymsg(int type, char *fmt, ...){
+void yymsg(int type, const char *fmt, ...)
+{
   va_list args;
   char tmp[1024];
 
diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp
index 0e8f7e4a076a6b360725d276a4498f9588be2252..ae7f8bb723ab4013c824de973d9a609c9592c65d 100644
--- a/Parser/Gmsh.yy.cpp
+++ b/Parser/Gmsh.yy.cpp
@@ -852,7 +852,7 @@ int gmsh_yy_flex_debug = 0;
 char *gmsh_yytext;
 #line 1 "Gmsh.l"
 #line 2 "Gmsh.l"
-// $Id: Gmsh.yy.cpp,v 1.348 2008-02-22 21:09:02 geuzaine Exp $
+// $Id: Gmsh.yy.cpp,v 1.349 2008-02-23 15:30:10 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -2934,7 +2934,7 @@ char *strsave(char *ptr)
   return((char*)strcpy((char*)malloc(strlen(ptr)+1),ptr));
 }
 
-void skipline(void)
+void skipline()
 {
   int c;
   while ((c = yyinput()) != '\n'){
@@ -2942,7 +2942,7 @@ void skipline(void)
   }
 }
 
-void skip_until(char *skip, char *until)
+void skip_until(const char *skip, const char *until)
 {
   int i, nb_skip;
   int l, l_skip, l_until;
diff --git a/Parser/Makefile b/Parser/Makefile
index 1ea321113f861b4f175e6c26ce88076497025389..6425e55ca25e39d98e049709bfeab576c519f41e 100644
--- a/Parser/Makefile
+++ b/Parser/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.140 2008-02-17 08:48:05 geuzaine Exp $
+# $Id: Makefile,v 1.141 2008-02-23 15:30:10 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -73,66 +73,50 @@ Gmsh.tab.o: Gmsh.tab.cpp ../Common/Message.h ../DataStr/Malloc.h \
   ../Plugin/PluginManager.h ../Plugin/Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Post/PView.h ../Post/PViewData.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Post/PViewOptions.h \
-  ../Post/ColorTable.h ../Post/PViewDataList.h ../Post/PViewData.h \
-  ../Post/AdaptiveViews.h ../Common/GmshMatrix.h ../Parallel/ParUtil.h \
+  ../Post/ColorTable.h ../Post/PViewDataList.h ../Post/AdaptiveViews.h \
+  ../DataStr/List.h ../Common/GmshMatrix.h ../Parallel/ParUtil.h \
   ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../Common/Context.h \
   ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h ../Geo/Geo.h \
-  ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
-  ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint2.h ../Geo/ExtrudeParams.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Geo/Geo.h ../Common/GmshDefines.h \
+  ../Geo/gmshSurface.h ../DataStr/Tree.h ../Geo/ExtrudeParams.h \
   ../Common/SmoothData.h ../Geo/GeoInterpolation.h ../Geo/Geo.h \
   ../Mesh/Generator.h ../Graphics/Draw.h ../Common/Colors.h \
   ../Common/Options.h Parser.h OpenFile.h ../Common/CommandLine.h \
-  FunctionManager.h ../Common/OS.h CreateFile.h ../Mesh/Field.h \
-  ../Post/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h \
-  ../Mesh/BackgroundMesh.h
+  FunctionManager.h ../Common/OS.h CreateFile.h ../Geo/gmshSurface.h \
+  ../Mesh/Field.h ../Geo/GEdge.h ../Post/OctreePost.h ../Common/Octree.h \
+  ../Common/OctreeInternals.h ../Mesh/BackgroundMesh.h
 Gmsh.yy.o: Gmsh.yy.cpp ../Common/Message.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h ../Geo/Geo.h ../Common/GmshDefines.h \
   ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \
-  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../DataStr/avl.h ../Geo/SPoint2.h \
+  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SBoundingBox3d.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
   ../Geo/ExtrudeParams.h ../Common/SmoothData.h Gmsh.tab.hpp
 OpenFile.o: OpenFile.cpp ../Common/Message.h ../Geo/Geo.h \
   ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
   ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../DataStr/avl.h ../Geo/SPoint2.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/GModel.h \
-  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
-  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/SPoint2.h ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/Pair.h ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
+  ../Geo/SBoundingBox3d.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
+  ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/GPoint.h \
+  ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/GRegion.h \
   ../Common/Context.h Parser.h OpenFile.h ../Common/CommandLine.h \
-  ../Post/PView.h ../Post/PViewData.h ../Post/PViewOptions.h \
-  ../Post/ColorTable.h ../Graphics/ReadImg.h ../Common/OS.h \
-  ../Mesh/HighOrder.h ../Common/GmshUI.h ../Graphics/Draw.h \
-  ../Graphics/SelectBuffer.h ../Fltk/GUI.h ../Fltk/Opengl_Window.h \
-  ../Fltk/Colorbar_Window.h ../Fltk/Popup_Button.h \
-  ../Fltk/SpherePosition_Widget.h
+  ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
+  ../Post/PViewOptions.h ../Post/ColorTable.h ../Graphics/ReadImg.h \
+  ../Common/OS.h ../Mesh/HighOrder.h ../Common/GmshUI.h \
+  ../Graphics/Draw.h ../Graphics/SelectBuffer.h ../Geo/GVertex.h \
+  ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h ../Fltk/GUI.h \
+  ../Fltk/Opengl_Window.h ../Fltk/Colorbar_Window.h ../Post/ColorTable.h \
+  ../Fltk/Popup_Button.h ../Fltk/SpherePosition_Widget.h
 CreateFile.o: CreateFile.cpp ../Common/Message.h ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Common/GmshDefines.h OpenFile.h ../Common/Context.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Common/GmshDefines.h OpenFile.h ../Common/Context.h \
   ../DataStr/List.h ../Common/Options.h ../Post/ColorTable.h \
   ../Common/GmshUI.h ../Graphics/gl2ps.h ../Graphics/gl2gif.h \
   ../Graphics/PixelBuffer.h ../DataStr/Malloc.h ../Graphics/Draw.h \
-  ../Graphics/gl2jpeg.h ../Graphics/PixelBuffer.h ../Graphics/gl2png.h \
-  ../Graphics/PixelBuffer.h ../Graphics/gl2ppm.h \
-  ../Graphics/PixelBuffer.h ../Graphics/gl2yuv.h \
-  ../Graphics/PixelBuffer.h
+  ../Geo/SBoundingBox3d.h ../Graphics/gl2jpeg.h ../Graphics/gl2png.h \
+  ../Graphics/gl2ppm.h ../Graphics/gl2yuv.h
 FunctionManager.o: FunctionManager.cpp FunctionManager.h
diff --git a/Parser/OpenFile.cpp b/Parser/OpenFile.cpp
index 008b6be6ca4c994f607138153539e268635aebf4..0f165ba0bf501a9c889f0504531e5c3f56595ad5 100644
--- a/Parser/OpenFile.cpp
+++ b/Parser/OpenFile.cpp
@@ -1,4 +1,4 @@
-// $Id: OpenFile.cpp,v 1.176 2008-02-22 07:59:00 geuzaine Exp $
+// $Id: OpenFile.cpp,v 1.177 2008-02-23 15:30:10 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -448,7 +448,7 @@ void OpenProjectMacFinder(const char *filename)
     first = 0;
   }
   else{
-    OpenProject((char*)filename);
+    OpenProject(filename);
 #if defined(HAVE_FLTK)
     Draw();
 #endif
diff --git a/Plugin/Annotate.cpp b/Plugin/Annotate.cpp
index 6ebf20fe6693fc267b8091b6b3cc1442a25d18a6..fcc06cf75eaaf7b1223076dce76b7170e640f3c0 100644
--- a/Plugin/Annotate.cpp
+++ b/Plugin/Annotate.cpp
@@ -1,4 +1,4 @@
-// $Id: Annotate.cpp,v 1.19 2008-02-17 08:48:06 geuzaine Exp $
+// $Id: Annotate.cpp,v 1.20 2008-02-23 15:30:10 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -133,7 +133,8 @@ double GMSH_AnnotatePlugin::callback(int num, int action, double value, double *
   return 0.;
 }
 
-char *GMSH_AnnotatePlugin::callbackStr(int num, int action, char *value, char **opt)
+const char *GMSH_AnnotatePlugin::callbackStr(int num, int action, const char *value,
+					     const char **opt)
 {
   *opt = value;
 #if defined(HAVE_FLTK)
@@ -184,17 +185,17 @@ double GMSH_AnnotatePlugin::callbackFontSize(int num, int action, double value)
 		  1, 5, 100);
 }
 
-char *GMSH_AnnotatePlugin::callbackText(int num, int action, char *value)
+const char *GMSH_AnnotatePlugin::callbackText(int num, int action, const char *value)
 {
   return callbackStr(num, action, value, &AnnotateOptions_String[0].def);
 }
 
-char *GMSH_AnnotatePlugin::callbackFont(int num, int action, char *value)
+const char *GMSH_AnnotatePlugin::callbackFont(int num, int action, const char *value)
 {
   return callbackStr(num, action, value, &AnnotateOptions_String[1].def);
 }
 
-char *GMSH_AnnotatePlugin::callbackAlign(int num, int action, char *value)
+const char *GMSH_AnnotatePlugin::callbackAlign(int num, int action, const char *value)
 {
   return callbackStr(num, action, value, &AnnotateOptions_String[2].def);
 }
@@ -255,7 +256,7 @@ PView *GMSH_AnnotatePlugin::execute(PView *v)
   double Z = AnnotateOptions_Number[2].def;
   int dim3 = (int)AnnotateOptions_Number[3].def;
   int iView = (int)AnnotateOptions_Number[5].def;
-  char *text = AnnotateOptions_String[0].def;
+  const char *text = AnnotateOptions_String[0].def;
   double style = getStyle();
 
   PView *v1 = getView(iView, v);
@@ -271,8 +272,8 @@ PView *GMSH_AnnotatePlugin::execute(PView *v)
     List_Add(data1->T3D, &style); 
     double d = List_Nbr(data1->T3C);
     List_Add(data1->T3D, &d); 
-    for(int i = 0; i < (int)strlen(text)+1; i++) 
-      List_Add(data1->T3C, &text[i]); 
+    for(int i = 0; i < (int)strlen(text) + 1; i++) 
+      List_Add(data1->T3C, (void*)&text[i]); 
     data1->NbT3++;
   }
   else{
@@ -281,8 +282,8 @@ PView *GMSH_AnnotatePlugin::execute(PView *v)
     List_Add(data1->T2D, &style); 
     double d = List_Nbr(data1->T2C);
     List_Add(data1->T2D, &d); 
-    for(int i = 0; i < (int)strlen(text)+1; i++) 
-      List_Add(data1->T2C, &text[i]); 
+    for(int i = 0; i < (int)strlen(text) + 1; i++) 
+      List_Add(data1->T2C, (void*)&text[i]); 
     data1->NbT2++;
   }
 
diff --git a/Plugin/Annotate.h b/Plugin/Annotate.h
index 71ae6bf9ba9ae83c3f66be8a8f988b51776cad91..c59c27142b5610ff0514641b4014341edf18af00 100644
--- a/Plugin/Annotate.h
+++ b/Plugin/Annotate.h
@@ -32,7 +32,7 @@ class GMSH_AnnotatePlugin : public GMSH_Post_Plugin
 private:
   static double callback(int num, int action, double value, double *opt,
 			 double step, double min, double max);
-  static char *callbackStr(int num, int action, char *value, char **opt);
+  static const char *callbackStr(int num, int action, const char *value, const char **opt);
 public:
   GMSH_AnnotatePlugin();
   void getName(char *name) const;
@@ -49,9 +49,9 @@ public:
   static double callbackZ(int, int, double);
   static double callback3D(int, int, double);
   static double callbackFontSize(int, int, double);
-  static char *callbackText(int, int, char *);
-  static char *callbackFont(int, int, char *);
-  static char *callbackAlign(int, int, char *);
+  static const char *callbackText(int, int, const char *);
+  static const char *callbackFont(int, int, const char *);
+  static const char *callbackAlign(int, int, const char *);
   static void draw();
 };
 
diff --git a/Plugin/CutParametric.cpp b/Plugin/CutParametric.cpp
index 28d5818343302fab4c4b0f71f606b7f33bc1c0d6..f416e56ee53271d36a949da436870391180e9b0c 100644
--- a/Plugin/CutParametric.cpp
+++ b/Plugin/CutParametric.cpp
@@ -1,4 +1,4 @@
-// $Id: CutParametric.cpp,v 1.24 2008-02-17 08:48:06 geuzaine Exp $
+// $Id: CutParametric.cpp,v 1.25 2008-02-23 15:30:10 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -86,26 +86,26 @@ int GMSH_CutParametricPlugin::fillXYZ()
   Msg(GERROR, "MathEval is not compiled in this version of Gmsh");
   return 0;
 #else
-  char *exprx = CutParametricOptions_String[0].def;
-  char *expry = CutParametricOptions_String[1].def;
-  char *exprz = CutParametricOptions_String[2].def;
+  const char *exprx = CutParametricOptions_String[0].def;
+  const char *expry = CutParametricOptions_String[1].def;
+  const char *exprz = CutParametricOptions_String[2].def;
   int nbU = (int)CutParametricOptions_Number[2].def;
 
   x.resize(nbU);
   y.resize(nbU);
   z.resize(nbU);
-  void *fx = evaluator_create(exprx);
+  void *fx = evaluator_create((char*)exprx);
   if(!fx){
     Msg(GERROR, "Invalid expression '%s'", exprx);
     return 0;
   }
-  void *fy = evaluator_create(expry);
+  void *fy = evaluator_create((char*)expry);
   if(!fy){
     evaluator_destroy(fx);
     Msg(GERROR, "Invalid expression '%s'", expry);
     return 0;
   }
-  void *fz = evaluator_create(exprz);
+  void *fz = evaluator_create((char*)exprz);
   if(!fz){
     Msg(GERROR, "Invalid expression '%s'", exprz);
     evaluator_destroy(fx);
@@ -163,7 +163,8 @@ double GMSH_CutParametricPlugin::callback(int num, int action, double value, dou
   return 0.;
 }
 
-char *GMSH_CutParametricPlugin::callbackStr(int num, int action, char *value, char **opt)
+const char *GMSH_CutParametricPlugin::callbackStr(int num, int action, const char *value,
+						  const char **opt)
 {
   *opt = value;
 #if defined(HAVE_FLTK)
@@ -197,17 +198,17 @@ double GMSH_CutParametricPlugin::callbackConnect(int num, int action, double val
 		  1, 0, 1);
 }
 
-char *GMSH_CutParametricPlugin::callbackX(int num, int action, char *value)
+const char *GMSH_CutParametricPlugin::callbackX(int num, int action, const char *value)
 {
   return callbackStr(num, action, value, &CutParametricOptions_String[0].def);
 }
 
-char *GMSH_CutParametricPlugin::callbackY(int num, int action, char *value)
+const char *GMSH_CutParametricPlugin::callbackY(int num, int action, const char *value)
 {
   return callbackStr(num, action, value, &CutParametricOptions_String[1].def);
 }
 
-char *GMSH_CutParametricPlugin::callbackZ(int num, int action, char *value)
+const char *GMSH_CutParametricPlugin::callbackZ(int num, int action, const char *value)
 {
   return callbackStr(num, action, value, &CutParametricOptions_String[2].def);
 }
diff --git a/Plugin/CutParametric.h b/Plugin/CutParametric.h
index 2cfc2f79d245426b9f3149d27e65bed1ab56c592..fb958fd36422b57f9f03864d8cff32f5c21eea0b 100644
--- a/Plugin/CutParametric.h
+++ b/Plugin/CutParametric.h
@@ -34,7 +34,8 @@ class GMSH_CutParametricPlugin : public GMSH_Post_Plugin
 private:
   static double callback(int num, int action, double value, double *opt,
 			 double step, double min, double max);
-  static char *callbackStr(int num, int action, char *value, char **opt);
+  static const char *callbackStr(int num, int action, const char *value, 
+				 const char **opt);
   static int fillXYZ();
   static int recompute;
   static std::vector<double> x, y, z;
@@ -53,9 +54,9 @@ public:
   static double callbackMaxU(int, int, double);
   static double callbackN(int, int, double);
   static double callbackConnect(int, int, double);
-  static char *callbackX(int, int, char *);
-  static char *callbackY(int, int, char *);
-  static char *callbackZ(int, int, char *);
+  static const char *callbackX(int, int, const char *);
+  static const char *callbackY(int, int, const char *);
+  static const char *callbackZ(int, int, const char *);
   static void draw();
 };
 
diff --git a/Plugin/Evaluate.cpp b/Plugin/Evaluate.cpp
index 498abdeb01e5bd3a0e037852b36f1a7498e4e45e..21805d84ba0b4d2916ed028eca15de8507339530 100644
--- a/Plugin/Evaluate.cpp
+++ b/Plugin/Evaluate.cpp
@@ -1,4 +1,4 @@
-// $Id: Evaluate.cpp,v 1.33 2008-02-17 08:48:06 geuzaine Exp $
+// $Id: Evaluate.cpp,v 1.34 2008-02-23 15:30:10 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -138,7 +138,7 @@ void GMSH_EvaluatePlugin::evaluate(PView *v1, List_T *list1, int nbElm1,
 				   PView *v2, List_T *list2, int nbElm2,
 				   int nbNod, int nbComp, int comp, 
 				   int timeStep1, int timeStep2,
-				   char *expression)
+				   const char *expression)
 {
 #if !defined(HAVE_MATH_EVAL)
 
@@ -149,7 +149,7 @@ void GMSH_EvaluatePlugin::evaluate(PView *v1, List_T *list1, int nbElm1,
   if(!nbElm1)
     return;
 
-  void *f = evaluator_create(expression);
+  void *f = evaluator_create((char*)expression);
 
   if(!f){
     Msg(GERROR, "Invalid expression '%s'", expression);
@@ -223,7 +223,7 @@ PView *GMSH_EvaluatePlugin::execute(PView *v)
   int externalView = (int)EvaluateOptions_Number[2].def;
   int externalTimeStep = (int)EvaluateOptions_Number[3].def;
   int iView = (int)EvaluateOptions_Number[4].def;
-  char *expr = EvaluateOptions_String[0].def;
+  const char *expr = EvaluateOptions_String[0].def;
 
   PView *v1 = getView(iView, v);
   if(!v1) return v;
diff --git a/Plugin/Evaluate.h b/Plugin/Evaluate.h
index 993975c6a45da5dc43bd48ce64aa0d77b023d59e..ebeffd16758b7b1f417f07ca8b2bbd4c3b600e71 100644
--- a/Plugin/Evaluate.h
+++ b/Plugin/Evaluate.h
@@ -36,7 +36,7 @@ private:
 		PView *v2, List_T *list2, int nbElm2,
 		int nbNod, int nbComp, int comp, 
 		int timeStep, int timeStep2,
-		char *expression);
+		const char *expression);
 public:
   GMSH_EvaluatePlugin();
   void getName(char *name) const;
diff --git a/Plugin/Extract.cpp b/Plugin/Extract.cpp
index 566c236dc4622b6ee084208ce29531cc0b015b28..838f474ac6726262ce505f267cb014349b2c8f60 100644
--- a/Plugin/Extract.cpp
+++ b/Plugin/Extract.cpp
@@ -1,4 +1,4 @@
-// $Id: Extract.cpp,v 1.25 2008-02-17 08:48:06 geuzaine Exp $
+// $Id: Extract.cpp,v 1.26 2008-02-23 15:30:10 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -117,7 +117,7 @@ void GMSH_ExtractPlugin::catchErrorMessage(char *errorMessage) const
   strcpy(errorMessage, "Extract failed...");
 }
 
-static void extract(char *expr[9], List_T *inList, int inNb, 
+static void extract(const char *expr[9], List_T *inList, int inNb, 
 		    List_T *outListScalar, int *outNbScalar, 
 		    List_T *outListVector, int *outNbVector, 
 		    List_T *outListTensor, int *outNbTensor, 
@@ -156,7 +156,7 @@ static void extract(char *expr[9], List_T *inList, int inNb,
 #if defined(HAVE_MATH_EVAL)
   void *f[9] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL };
   for(int i = 0; i < outNbComp; i++){
-    f[i] = evaluator_create(expr[i]);
+    f[i] = evaluator_create((char*)expr[i]);
     if(!f[i]){
       Msg(GERROR, "Invalid expression '%s'", expr[i]);
       for(int j = 0; j < i; j++)
@@ -226,15 +226,15 @@ PView *GMSH_ExtractPlugin::execute(PView *v)
 {
   int step = (int)ExtractOptions_Number[0].def;
   int iView = (int)ExtractOptions_Number[1].def;
-  char *expr[9] = { ExtractOptions_String[0].def, 
-		    ExtractOptions_String[1].def,
-		    ExtractOptions_String[2].def,
-		    ExtractOptions_String[3].def,
-		    ExtractOptions_String[4].def,
-		    ExtractOptions_String[5].def,
-		    ExtractOptions_String[6].def,
-		    ExtractOptions_String[7].def,
-		    ExtractOptions_String[8].def };
+  const char *expr[9] = { ExtractOptions_String[0].def, 
+			  ExtractOptions_String[1].def,
+			  ExtractOptions_String[2].def,
+			  ExtractOptions_String[3].def,
+			  ExtractOptions_String[4].def,
+			  ExtractOptions_String[5].def,
+			  ExtractOptions_String[6].def,
+			  ExtractOptions_String[7].def,
+			  ExtractOptions_String[8].def };
 
   PView *v1 = getView(iView, v);
   if(!v1) return v;
diff --git a/Plugin/Makefile b/Plugin/Makefile
index 7adcb4bdfa23930e0bff2c7b0ac8e3c03b9e716e..e35482b322aa84289e3665a2a5d00940aec56668 100644
--- a/Plugin/Makefile
+++ b/Plugin/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.150 2008-02-17 08:48:07 geuzaine Exp $
+# $Id: Makefile,v 1.151 2008-02-23 15:30:10 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -76,267 +76,238 @@ depend:
 Plugin.o: Plugin.cpp Plugin.h ../Common/Options.h ../Post/ColorTable.h \
   ../Common/Message.h ../Post/PView.h ../Post/PViewData.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Post/PViewOptions.h \
-  ../Post/ColorTable.h ../Post/PViewDataList.h ../Post/PViewData.h \
-  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h
+  ../Post/ColorTable.h ../Post/PViewDataList.h ../Post/AdaptiveViews.h \
+  ../DataStr/List.h ../Common/GmshMatrix.h
 PluginManager.o: PluginManager.cpp Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
-  ../Common/GmshMatrix.h PluginManager.h CutMap.h Levelset.h CutGrid.h \
-  StreamLines.h CutPlane.h CutParametric.h CutSphere.h Skin.h \
-  ../DataStr/Tree.h ../DataStr/avl.h Extract.h ExtractElements.h \
-  ExtractEdges.h HarmonicToTime.h ModulusPhase.h Integrate.h Gradient.h \
-  Curl.h Divergence.h Annotate.h Remove.h MakeSimplex.h Smooth.h \
-  Transform.h TransformLatLon.h Triangulate.h Warp.h SphericalRaise.h \
-  Eigenvectors.h Eigenvalues.h Lambda2.h Evaluate.h ../Post/OctreePost.h \
-  ../Common/Octree.h ../Common/OctreeInternals.h Probe.h FieldView.h \
-  ../Common/Context.h
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
+  PluginManager.h CutMap.h Levelset.h CutGrid.h StreamLines.h CutPlane.h \
+  CutParametric.h CutSphere.h Skin.h ../DataStr/Tree.h ../DataStr/avl.h \
+  Extract.h ExtractElements.h ExtractEdges.h HarmonicToTime.h \
+  ModulusPhase.h Integrate.h Gradient.h Curl.h Divergence.h Annotate.h \
+  Remove.h MakeSimplex.h Smooth.h Transform.h TransformLatLon.h \
+  Triangulate.h Warp.h SphericalRaise.h Eigenvectors.h Eigenvalues.h \
+  Lambda2.h Evaluate.h ../Post/OctreePost.h ../Common/Octree.h \
+  ../Common/OctreeInternals.h Probe.h FieldView.h ../Common/Context.h
 Levelset.o: Levelset.cpp Levelset.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
-  ../Common/GmshMatrix.h MakeSimplex.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
+  MakeSimplex.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h
 CutPlane.o: CutPlane.cpp CutPlane.h Levelset.h Plugin.h \
   ../Common/Options.h ../Post/ColorTable.h ../Common/Message.h \
   ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../DataStr/List.h ../Common/GmshMatrix.h ../Common/Context.h \
-  ../Common/GmshUI.h ../Graphics/Draw.h
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Common/GmshMatrix.h ../Common/Context.h ../Common/GmshUI.h \
+  ../Graphics/Draw.h
 CutSphere.o: CutSphere.cpp CutSphere.h Levelset.h Plugin.h \
   ../Common/Options.h ../Post/ColorTable.h ../Common/Message.h \
   ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../DataStr/List.h ../Common/GmshMatrix.h ../Common/Context.h \
-  ../Common/GmshUI.h ../Graphics/Draw.h
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Common/GmshMatrix.h ../Common/Context.h ../Common/GmshUI.h \
+  ../Graphics/Draw.h
 CutMap.o: CutMap.cpp CutMap.h Levelset.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
-  ../Common/GmshMatrix.h ../Common/Context.h
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
+  ../Common/Context.h
 Smooth.o: Smooth.cpp Smooth.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
-  ../Common/GmshMatrix.h
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h
 CutParametric.o: CutParametric.cpp ../Post/OctreePost.h \
   ../Common/Octree.h ../Common/OctreeInternals.h CutParametric.h Plugin.h \
   ../Common/Options.h ../Post/ColorTable.h ../Common/Message.h \
   ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../DataStr/List.h ../Common/GmshMatrix.h ../Common/Context.h \
-  ../Common/GmshUI.h ../Graphics/Draw.h
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Common/GmshMatrix.h ../Common/Context.h ../Common/GmshUI.h \
+  ../Graphics/Draw.h
 Lambda2.o: Lambda2.cpp Lambda2.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
-  ../Common/GmshMatrix.h ../Common/ShapeFunctions.h ../Numeric/Numeric.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
+  ../Common/ShapeFunctions.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h
 Eigenvectors.o: Eigenvectors.cpp Eigenvectors.h Plugin.h \
   ../Common/Options.h ../Post/ColorTable.h ../Common/Message.h \
   ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../DataStr/List.h ../Common/GmshMatrix.h ../Numeric/Numeric.h \
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Common/GmshMatrix.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h ../Numeric/EigSolve.h
 Eigenvalues.o: Eigenvalues.cpp Eigenvalues.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
-  ../Common/GmshMatrix.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h
 StreamLines.o: StreamLines.cpp StreamLines.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
-  ../Common/GmshMatrix.h ../Post/OctreePost.h ../Common/Octree.h \
-  ../Common/OctreeInternals.h ../Common/Context.h ../Common/GmshUI.h \
-  ../Graphics/Draw.h
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
+  ../Post/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h \
+  ../Common/Context.h ../Common/GmshUI.h ../Graphics/Draw.h
 CutGrid.o: CutGrid.cpp ../Post/OctreePost.h ../Common/Octree.h \
   ../Common/OctreeInternals.h CutGrid.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
-  ../Common/GmshMatrix.h ../Common/Context.h ../Common/GmshUI.h \
-  ../Graphics/Draw.h
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
+  ../Common/Context.h ../Common/GmshUI.h ../Graphics/Draw.h
 Transform.o: Transform.cpp Transform.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
-  ../Common/GmshMatrix.h
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h
 TransformLatLon.o: TransformLatLon.cpp TransformLatLon.h Plugin.h \
   ../Common/Options.h ../Post/ColorTable.h ../Common/Message.h \
   ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../DataStr/List.h ../Common/GmshMatrix.h
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Common/GmshMatrix.h
 Triangulate.o: Triangulate.cpp ../Geo/GModel.h ../Geo/GVertex.h \
   ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/discreteFace.h ../Geo/GModel.h ../Geo/GFace.h ../Geo/Geo.h \
-  ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
-  ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SBoundingBox3d.h ../Numeric/Numeric.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Geo/discreteFace.h ../Geo/GModel.h ../Geo/Geo.h \
+  ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../Geo/SPoint2.h ../Geo/ExtrudeParams.h \
-  ../Common/SmoothData.h ../Mesh/DivideAndConquer.h ../Common/Message.h \
-  ../Geo/MVertex.h ../Geo/SPoint3.h Triangulate.h Plugin.h \
-  ../Common/Options.h ../Post/ColorTable.h ../Post/PView.h \
-  ../Post/PViewData.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../Common/GmshMatrix.h ../Common/Context.h
+  ../DataStr/avl.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
+  ../Mesh/DivideAndConquer.h ../Common/Message.h ../Geo/MVertex.h \
+  Triangulate.h Plugin.h ../Common/Options.h ../Post/ColorTable.h \
+  ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
+  ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
+  ../Post/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h
 Warp.o: Warp.cpp Warp.h Plugin.h ../Common/Options.h ../Post/ColorTable.h \
   ../Common/Message.h ../Post/PView.h ../Post/PViewData.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Post/PViewOptions.h \
-  ../Post/ColorTable.h ../Post/PViewDataList.h ../Post/PViewData.h \
-  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
-  ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h
+  ../Post/ColorTable.h ../Post/PViewDataList.h ../Post/AdaptiveViews.h \
+  ../DataStr/List.h ../Common/GmshMatrix.h ../Common/SmoothData.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h
 SphericalRaise.o: SphericalRaise.cpp SphericalRaise.h Plugin.h \
   ../Common/Options.h ../Post/ColorTable.h ../Common/Message.h \
   ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../DataStr/List.h ../Common/GmshMatrix.h ../Numeric/Numeric.h \
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Common/GmshMatrix.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h
 Skin.o: Skin.cpp Skin.h Plugin.h ../Common/Options.h ../Post/ColorTable.h \
   ../Common/Message.h ../Post/PView.h ../Post/PViewData.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Post/PViewOptions.h \
-  ../Post/ColorTable.h ../Post/PViewDataList.h ../Post/PViewData.h \
-  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
-  ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Malloc.h \
-  ../Common/Context.h
+  ../Post/ColorTable.h ../Post/PViewDataList.h ../Post/AdaptiveViews.h \
+  ../DataStr/List.h ../Common/GmshMatrix.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Malloc.h ../Common/Context.h
 Extract.o: Extract.cpp Extract.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
-  ../Common/GmshMatrix.h
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h
 ExtractElements.o: ExtractElements.cpp ExtractElements.h Plugin.h \
   ../Common/Options.h ../Post/ColorTable.h ../Common/Message.h \
   ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../DataStr/List.h ../Common/GmshMatrix.h ../Numeric/Numeric.h \
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Common/GmshMatrix.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h
 ExtractEdges.o: ExtractEdges.cpp ExtractEdges.h Plugin.h \
   ../Common/Options.h ../Post/ColorTable.h ../Common/Message.h \
   ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../DataStr/List.h ../Common/GmshMatrix.h ../Mesh/BDS.h ../Geo/GFace.h \
-  ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/GEntity.h \
-  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/Pair.h
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Common/GmshMatrix.h ../Mesh/BDS.h ../Geo/GFace.h ../Geo/GEntity.h \
+  ../Geo/Range.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
+  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/GVertex.h ../Geo/SPoint2.h \
+  ../Geo/SVector3.h ../Geo/Pair.h
 MakeSimplex.o: MakeSimplex.cpp MakeSimplex.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
-  ../Common/GmshMatrix.h
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h
 Evaluate.o: Evaluate.cpp Evaluate.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
-  ../Common/GmshMatrix.h ../Post/OctreePost.h ../Common/Octree.h \
-  ../Common/OctreeInternals.h
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
+  ../Post/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h
 FieldView.o: FieldView.cpp FieldView.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
-  ../Common/GmshMatrix.h ../Mesh/Field.h ../Geo/Geo.h \
-  ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
-  ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Numeric/Numeric.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
+  ../Mesh/Field.h ../Geo/Geo.h ../Common/GmshDefines.h \
+  ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \
+  ../Geo/SVector3.h ../Geo/SBoundingBox3d.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h ../DataStr/Tree.h ../DataStr/avl.h \
-  ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
-  ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/GVertex.h ../Geo/GEntity.h \
-  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/SPoint2.h ../Post/OctreePost.h ../Common/Octree.h \
-  ../Common/OctreeInternals.h
+  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/GEdge.h \
+  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/GPoint.h ../Post/OctreePost.h \
+  ../Common/Octree.h ../Common/OctreeInternals.h
 Integrate.o: Integrate.cpp Integrate.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
-  ../Common/GmshMatrix.h ../Common/ShapeFunctions.h ../Numeric/Numeric.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
+  ../Common/ShapeFunctions.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h
 Gradient.o: Gradient.cpp Gradient.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
-  ../Common/GmshMatrix.h ../Common/ShapeFunctions.h ../Numeric/Numeric.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
+  ../Common/ShapeFunctions.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h
 Curl.o: Curl.cpp Curl.h Plugin.h ../Common/Options.h ../Post/ColorTable.h \
   ../Common/Message.h ../Post/PView.h ../Post/PViewData.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Post/PViewOptions.h \
-  ../Post/ColorTable.h ../Post/PViewDataList.h ../Post/PViewData.h \
-  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
-  ../Common/ShapeFunctions.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h
+  ../Post/ColorTable.h ../Post/PViewDataList.h ../Post/AdaptiveViews.h \
+  ../DataStr/List.h ../Common/GmshMatrix.h ../Common/ShapeFunctions.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h
 Divergence.o: Divergence.cpp Divergence.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
-  ../Common/GmshMatrix.h ../Common/ShapeFunctions.h ../Numeric/Numeric.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
+  ../Common/ShapeFunctions.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h
 Annotate.o: Annotate.cpp Annotate.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
-  ../Common/GmshMatrix.h ../Common/Context.h ../Common/GmshUI.h \
-  ../Fltk/GUI.h ../Fltk/Opengl_Window.h ../Fltk/Colorbar_Window.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
+  ../Common/Context.h ../Common/GmshUI.h ../Fltk/GUI.h \
+  ../Fltk/Opengl_Window.h ../Fltk/Colorbar_Window.h \
   ../Fltk/Popup_Button.h ../Fltk/SpherePosition_Widget.h \
   ../Graphics/Draw.h
 Remove.o: Remove.cpp Remove.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
-  ../Common/GmshMatrix.h
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h
 Probe.o: Probe.cpp Probe.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
-  ../Common/GmshMatrix.h ../Common/Context.h ../Post/OctreePost.h \
-  ../Common/Octree.h ../Common/OctreeInternals.h ../Common/GmshUI.h \
-  ../Graphics/Draw.h
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
+  ../Common/Context.h ../Post/OctreePost.h ../Common/Octree.h \
+  ../Common/OctreeInternals.h ../Common/GmshUI.h ../Graphics/Draw.h
 HarmonicToTime.o: HarmonicToTime.cpp HarmonicToTime.h Plugin.h \
   ../Common/Options.h ../Post/ColorTable.h ../Common/Message.h \
   ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../DataStr/List.h ../Common/GmshMatrix.h
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Common/GmshMatrix.h
 ModulusPhase.o: ModulusPhase.cpp ModulusPhase.h Plugin.h \
   ../Common/Options.h ../Post/ColorTable.h ../Common/Message.h \
   ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../DataStr/List.h ../Common/GmshMatrix.h
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Common/GmshMatrix.h
diff --git a/Plugin/PluginManager.cpp b/Plugin/PluginManager.cpp
index 2d2dbf97194e49a66fc82d7df78d5f2e3000f4cd..da6125f370f5d7a2ca8a1cb24c3e91eafcb0952d 100644
--- a/Plugin/PluginManager.cpp
+++ b/Plugin/PluginManager.cpp
@@ -1,4 +1,4 @@
-// $Id: PluginManager.cpp,v 1.4 2008-02-17 08:48:07 geuzaine Exp $
+// $Id: PluginManager.cpp,v 1.5 2008-02-23 15:30:10 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -172,70 +172,70 @@ void GMSH_PluginManager::registerDefaultPlugins()
   }
 
   if(CTX.post.plugins){
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("StreamLines", GMSH_RegisterStreamLinesPlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("CutGrid", GMSH_RegisterCutGridPlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("CutMap", GMSH_RegisterCutMapPlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("CutPlane", GMSH_RegisterCutPlanePlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("CutSphere", GMSH_RegisterCutSpherePlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("Skin", GMSH_RegisterSkinPlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("Extract", GMSH_RegisterExtractPlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("ExtractElements", GMSH_RegisterExtractElementsPlugin()));
 #if 0 // waiting for BDS rewrite
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("ExtractEdges", GMSH_RegisterExtractEdgesPlugin()));
 #endif
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("MakeSimplex", GMSH_RegisterMakeSimplexPlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("Smooth", GMSH_RegisterSmoothPlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("Transform", GMSH_RegisterTransformPlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("TransformLatLon", GMSH_RegisterTransformLatLonPlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("Warp", GMSH_RegisterWarpPlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("SphericalRaise", GMSH_RegisterSphericalRaisePlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("HarmonicToTime", GMSH_RegisterHarmonicToTimePlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("ModulusPhase", GMSH_RegisterModulusPhasePlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("Integrate", GMSH_RegisterIntegratePlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("Gradient", GMSH_RegisterGradientPlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("Curl", GMSH_RegisterCurlPlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("Divergence", GMSH_RegisterDivergencePlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("Annotate", GMSH_RegisterAnnotatePlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("Remove", GMSH_RegisterRemovePlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("Eigenvectors", GMSH_RegisterEigenvectorsPlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("Eigenvalues", GMSH_RegisterEigenvaluesPlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("Lambda2", GMSH_RegisterLambda2Plugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("Probe", GMSH_RegisterProbePlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("FieldView", GMSH_RegisterFieldViewPlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("Triangulate", GMSH_RegisterTriangulatePlugin()));
 #if defined(HAVE_MATH_EVAL)
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("Evaluate", GMSH_RegisterEvaluatePlugin()));
-    allPlugins.insert(std::pair < char *, GMSH_Plugin * >
+    allPlugins.insert(std::pair<const char*, GMSH_Plugin*>
 		      ("CutParametric", GMSH_RegisterCutParametricPlugin()));
 #endif
   }
@@ -277,13 +277,13 @@ void GMSH_PluginManager::addPlugin(char *dirName, char *pluginName)
   sprintf(dynamic_lib, "%s/%s", dirName, pluginName);
   Msg(INFO, "Opening Plugin '%s'", dynamic_lib);
   void *hlib = dlopen(dynamic_lib, RTLD_NOW);
-  char *err = (char*)dlerror();
+  const char *err = dlerror();
   if(!hlib){
     Msg(WARNING, "Error in opening %s (dlerror = %s)", dynamic_lib, err);
     return;
   }
   registerPlugin = (class GMSH_Plugin * (*)(void))dlsym(hlib, GMSH_PluginEntry);
-  err = (char*)dlerror();
+  err = dlerror();
   if(err){
     Msg(WARNING, "Symbol '%s' missing in plugin '%s' (dlerror = %s)",
         GMSH_PluginEntry, pluginName, err);
@@ -298,7 +298,7 @@ void GMSH_PluginManager::addPlugin(char *dirName, char *pluginName)
     Msg(WARNING, "Plugin '%s' multiply defined", pluginName);
     return;
   }
-  allPlugins.insert(std::pair < char *, GMSH_Plugin * >(plugin_name, p));
+  allPlugins.insert(std::pair<const char*, GMSH_Plugin*>(plugin_name, p));
   Msg(INFO, "Loaded Plugin '%s' (%s)", plugin_name, plugin_author);
 #endif
 }
diff --git a/Post/Makefile b/Post/Makefile
index 4eda6ce9d5e69f58d05c9552247bd8e875c879bd..d5d14f179fdc97f9c49d3695eaa4b6c259968ca4 100644
--- a/Post/Makefile
+++ b/Post/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.29 2008-02-18 18:49:18 geuzaine Exp $
+# $Id: Makefile,v 1.30 2008-02-23 15:30:11 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -66,13 +66,10 @@ PView.o: PView.cpp PView.h PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h PViewOptions.h ColorTable.h PViewDataList.h \
   AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   PViewDataGModel.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h \
-  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Common/VertexArray.h ../Common/Context.h ../Common/SmoothData.h \
+  ../Geo/Range.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h \
+  ../Geo/GEdge.h ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h \
+  ../Geo/Pair.h ../Geo/GRegion.h ../Common/VertexArray.h \
+  ../Geo/SVector3.h ../Common/Context.h ../Common/SmoothData.h \
   ../Common/Message.h
 PViewData.o: PViewData.cpp PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h
@@ -89,13 +86,9 @@ PViewDataGModel.o: PViewDataGModel.cpp PViewDataGModel.h PViewData.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h PViewDataList.h \
   AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Common/Message.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Common/Message.h
 PViewOptions.o: PViewOptions.cpp PViewOptions.h ColorTable.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/Message.h
 AdaptiveViews.o: AdaptiveViews.cpp AdaptiveViews.h ../DataStr/List.h \
@@ -103,7 +96,7 @@ AdaptiveViews.o: AdaptiveViews.cpp AdaptiveViews.h ../DataStr/List.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h
+  ../Post/AdaptiveViews.h
 OctreePost.o: OctreePost.cpp ../Common/Octree.h \
   ../Common/OctreeInternals.h OctreePost.h ../DataStr/List.h PView.h \
   PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h PViewOptions.h \
diff --git a/contrib/Netgen/Makefile b/contrib/Netgen/Makefile
index 4dd18e39d5f0a4179563f5780b4bc95cec1bd8fa..29870093745a1c5324aed8bd9fdaf36cd27b5dac 100644
--- a/contrib/Netgen/Makefile
+++ b/contrib/Netgen/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.30 2008-02-17 08:48:10 geuzaine Exp $
+# $Id: Makefile,v 1.31 2008-02-23 15:30:11 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -344,10 +344,9 @@ meshtool.o: libsrc/meshing/meshtool.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp libsrc/include/csg.hpp \
-  libsrc/include/../csg/csg.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/meshing.hpp libsrc/include/../meshing/meshing.hpp \
-  libsrc/include/../csg/surface.hpp libsrc/include/../csg/solid.hpp \
-  libsrc/include/../csg/identify.hpp \
+  libsrc/include/../csg/csg.hpp libsrc/include/meshing.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../csg/surface.hpp \
+  libsrc/include/../csg/solid.hpp libsrc/include/../csg/identify.hpp \
   libsrc/include/../csg/singularref.hpp libsrc/include/../csg/csgeom.hpp \
   libsrc/include/../csg/triapprox.hpp libsrc/include/../csg/algprim.hpp \
   libsrc/include/../csg/brick.hpp libsrc/include/../csg/spline3d.hpp \
@@ -358,7 +357,7 @@ meshtool.o: libsrc/meshing/meshtool.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp \
   libsrc/include/geometry2d.hpp libsrc/include/../geom2d/geometry2d.hpp \
-  libsrc/include/../gprim/gprim.hpp libsrc/include/../geom2d/spline2d.hpp \
+  libsrc/include/../geom2d/spline2d.hpp \
   libsrc/include/../geom2d/splinegeometry2.hpp \
   libsrc/include/../geom2d/geom2dmesh.hpp
 refine.o: libsrc/meshing/refine.cpp libsrc/include/mystdlib.h \
@@ -486,7 +485,7 @@ improve3.o: libsrc/meshing/improve3.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/curvedelems.hpp libsrc/meshing/bisect.hpp \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
-  libsrc/meshing/specials.hpp libsrc/include/../opti/opti.hpp
+  libsrc/meshing/specials.hpp
 smoothing3.o: libsrc/meshing/smoothing3.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -528,7 +527,7 @@ smoothing3.o: libsrc/meshing/smoothing3.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/curvedelems.hpp libsrc/meshing/bisect.hpp \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
-  libsrc/meshing/specials.hpp libsrc/include/../opti/opti.hpp
+  libsrc/meshing/specials.hpp
 adfront3.o: libsrc/meshing/adfront3.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -742,7 +741,7 @@ improve2.o: libsrc/meshing/improve2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/curvedelems.hpp libsrc/meshing/bisect.hpp \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
-  libsrc/meshing/specials.hpp libsrc/include/../opti/opti.hpp
+  libsrc/meshing/specials.hpp
 smoothing2.o: libsrc/meshing/smoothing2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -784,7 +783,7 @@ smoothing2.o: libsrc/meshing/smoothing2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/curvedelems.hpp libsrc/meshing/bisect.hpp \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
-  libsrc/meshing/specials.hpp libsrc/include/../opti/opti.hpp
+  libsrc/meshing/specials.hpp
 adfront2.o: libsrc/meshing/adfront2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -1332,7 +1331,7 @@ improve2gen.o: libsrc/meshing/improve2gen.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/curvedelems.hpp libsrc/meshing/bisect.hpp \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
-  libsrc/meshing/specials.hpp libsrc/include/../opti/opti.hpp
+  libsrc/meshing/specials.hpp
 delaunay.o: libsrc/meshing/delaunay.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -1754,8 +1753,7 @@ nglib.o: libsrc/interface/nglib.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -1793,13 +1791,12 @@ nglib.o: libsrc/interface/nglib.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp \
   libsrc/include/stlgeom.hpp libsrc/include/../stlgeom/stlgeom.hpp \
-  libsrc/include/../gprim/gprim.hpp \
   libsrc/include/../stlgeom/stltopology.hpp \
   libsrc/include/../stlgeom/stltool.hpp \
   libsrc/include/../stlgeom/stlline.hpp \
   libsrc/include/../stlgeom/meshstlsurface.hpp \
   libsrc/include/geometry2d.hpp libsrc/include/../geom2d/geometry2d.hpp \
-  libsrc/include/../gprim/gprim.hpp libsrc/include/../geom2d/spline2d.hpp \
+  libsrc/include/../geom2d/spline2d.hpp \
   libsrc/include/../geom2d/splinegeometry2.hpp \
   libsrc/include/../geom2d/geom2dmesh.hpp libsrc/interface/nglib.h
 geomtest3d.o: libsrc/gprim/geomtest3d.cpp libsrc/include/mystdlib.h \
@@ -2031,8 +2028,7 @@ algprim.o: libsrc/csg/algprim.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -2099,8 +2095,7 @@ brick.o: libsrc/csg/brick.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -2163,9 +2158,8 @@ manifold.o: libsrc/csg/manifold.cpp libsrc/include/csg.hpp \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
-  libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -2230,9 +2224,8 @@ bspline2d.o: libsrc/csg/bspline2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
-  libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -2297,9 +2290,8 @@ meshsurf.o: libsrc/csg/meshsurf.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
-  libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -2367,8 +2359,7 @@ csgeom.o: libsrc/csg/csgeom.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -2435,8 +2426,7 @@ polyhedra.o: libsrc/csg/polyhedra.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -2499,9 +2489,8 @@ curve2d.o: libsrc/csg/curve2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
-  libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -2569,8 +2558,7 @@ singularref.o: libsrc/csg/singularref.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -2661,9 +2649,8 @@ edgeflw.o: libsrc/csg/edgeflw.cpp libsrc/include/mystdlib.h \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/include/csg.hpp \
-  libsrc/include/../csg/csg.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../csg/surface.hpp libsrc/include/../csg/solid.hpp \
-  libsrc/include/../csg/identify.hpp \
+  libsrc/include/../csg/csg.hpp libsrc/include/../csg/surface.hpp \
+  libsrc/include/../csg/solid.hpp libsrc/include/../csg/identify.hpp \
   libsrc/include/../csg/singularref.hpp libsrc/include/../csg/csgeom.hpp \
   libsrc/include/../csg/triapprox.hpp libsrc/include/../csg/algprim.hpp \
   libsrc/include/../csg/brick.hpp libsrc/include/../csg/spline3d.hpp \
@@ -2703,8 +2690,7 @@ solid.o: libsrc/csg/solid.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -2768,9 +2754,8 @@ explicitcurve2d.o: libsrc/csg/explicitcurve2d.cpp \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
-  libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -2863,9 +2848,8 @@ specpoin.o: libsrc/csg/specpoin.cpp libsrc/include/mystdlib.h \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/include/csg.hpp \
-  libsrc/include/../csg/csg.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../csg/surface.hpp libsrc/include/../csg/solid.hpp \
-  libsrc/include/../csg/identify.hpp \
+  libsrc/include/../csg/csg.hpp libsrc/include/../csg/surface.hpp \
+  libsrc/include/../csg/solid.hpp libsrc/include/../csg/identify.hpp \
   libsrc/include/../csg/singularref.hpp libsrc/include/../csg/csgeom.hpp \
   libsrc/include/../csg/triapprox.hpp libsrc/include/../csg/algprim.hpp \
   libsrc/include/../csg/brick.hpp libsrc/include/../csg/spline3d.hpp \
@@ -2905,8 +2889,7 @@ gencyl.o: libsrc/csg/gencyl.cpp libsrc/include/linalg.hpp \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -2973,8 +2956,7 @@ revolution.o: libsrc/csg/revolution.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3040,8 +3022,7 @@ genmesh.o: libsrc/csg/genmesh.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3107,8 +3088,7 @@ spline3d.o: libsrc/csg/spline3d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3171,9 +3151,8 @@ surface.o: libsrc/csg/surface.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
-  libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -3211,8 +3190,7 @@ surface.o: libsrc/csg/surface.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/gencyl.hpp libsrc/include/../csg/polyhedra.hpp \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
-  libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp \
-  libsrc/include/../linalg/linalg.hpp
+  libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp
 identify.o: libsrc/csg/identify.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -3242,8 +3220,7 @@ identify.o: libsrc/csg/identify.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3309,8 +3286,7 @@ triapprox.o: libsrc/csg/triapprox.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3373,9 +3349,8 @@ geom2dmesh.o: libsrc/geom2d/geom2dmesh.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
-  libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -3415,7 +3390,7 @@ geom2dmesh.o: libsrc/geom2d/geom2dmesh.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp \
   libsrc/include/geometry2d.hpp libsrc/include/../geom2d/geometry2d.hpp \
-  libsrc/include/../gprim/gprim.hpp libsrc/include/../geom2d/spline2d.hpp \
+  libsrc/include/../geom2d/spline2d.hpp \
   libsrc/include/../geom2d/splinegeometry2.hpp \
   libsrc/include/../geom2d/geom2dmesh.hpp
 spline2d.o: libsrc/geom2d/spline2d.cpp libsrc/include/mystdlib.h \
@@ -3444,9 +3419,8 @@ spline2d.o: libsrc/geom2d/spline2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
-  libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -3485,7 +3459,7 @@ spline2d.o: libsrc/geom2d/spline2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/geom2d/spline2d.hpp
+  libsrc/geom2d/spline2d.hpp
 splinegeometry2.o: libsrc/geom2d/splinegeometry2.cpp \
   libsrc/include/mystdlib.h libsrc/include/csg.hpp \
   libsrc/include/../csg/csg.hpp libsrc/include/myadt.hpp \
@@ -3513,9 +3487,8 @@ splinegeometry2.o: libsrc/geom2d/splinegeometry2.cpp \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
-  libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -3554,8 +3527,7 @@ splinegeometry2.o: libsrc/geom2d/splinegeometry2.cpp \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/geom2d/spline2d.hpp \
-  libsrc/geom2d/splinegeometry2.hpp
+  libsrc/geom2d/spline2d.hpp libsrc/geom2d/splinegeometry2.hpp
 genmesh2d.o: libsrc/geom2d/genmesh2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/csg.hpp libsrc/include/../csg/csg.hpp \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
@@ -3582,9 +3554,8 @@ genmesh2d.o: libsrc/geom2d/genmesh2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
-  libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -3624,7 +3595,7 @@ genmesh2d.o: libsrc/geom2d/genmesh2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp \
   libsrc/include/geometry2d.hpp libsrc/include/../geom2d/geometry2d.hpp \
-  libsrc/include/../gprim/gprim.hpp libsrc/include/../geom2d/spline2d.hpp \
+  libsrc/include/../geom2d/spline2d.hpp \
   libsrc/include/../geom2d/splinegeometry2.hpp \
   libsrc/include/../geom2d/geom2dmesh.hpp
 meshstlsurface.o: libsrc/stlgeom/meshstlsurface.cpp \
@@ -3656,8 +3627,7 @@ meshstlsurface.o: libsrc/stlgeom/meshstlsurface.cpp \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3683,9 +3653,8 @@ meshstlsurface.o: libsrc/stlgeom/meshstlsurface.cpp \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/stlgeom/stlgeom.hpp \
-  libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
-  libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
-  libsrc/stlgeom/meshstlsurface.hpp
+  libsrc/stlgeom/stltopology.hpp libsrc/stlgeom/stltool.hpp \
+  libsrc/stlgeom/stlline.hpp libsrc/stlgeom/meshstlsurface.hpp
 stlline.o: libsrc/stlgeom/stlline.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -3714,8 +3683,7 @@ stlline.o: libsrc/stlgeom/stlline.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3741,9 +3709,8 @@ stlline.o: libsrc/stlgeom/stlline.cpp libsrc/include/mystdlib.h \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/stlgeom/stlgeom.hpp \
-  libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
-  libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
-  libsrc/stlgeom/meshstlsurface.hpp
+  libsrc/stlgeom/stltopology.hpp libsrc/stlgeom/stltool.hpp \
+  libsrc/stlgeom/stlline.hpp libsrc/stlgeom/meshstlsurface.hpp
 stltopology.o: libsrc/stlgeom/stltopology.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -3772,8 +3739,7 @@ stltopology.o: libsrc/stlgeom/stltopology.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3799,9 +3765,8 @@ stltopology.o: libsrc/stlgeom/stltopology.cpp libsrc/include/mystdlib.h \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/stlgeom/stlgeom.hpp \
-  libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
-  libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
-  libsrc/stlgeom/meshstlsurface.hpp
+  libsrc/stlgeom/stltopology.hpp libsrc/stlgeom/stltool.hpp \
+  libsrc/stlgeom/stlline.hpp libsrc/stlgeom/meshstlsurface.hpp
 stltool.o: libsrc/stlgeom/stltool.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -3830,8 +3795,7 @@ stltool.o: libsrc/stlgeom/stltool.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3857,9 +3821,8 @@ stltool.o: libsrc/stlgeom/stltool.cpp libsrc/include/mystdlib.h \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/stlgeom/stlgeom.hpp \
-  libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
-  libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
-  libsrc/stlgeom/meshstlsurface.hpp
+  libsrc/stlgeom/stltopology.hpp libsrc/stlgeom/stltool.hpp \
+  libsrc/stlgeom/stlline.hpp libsrc/stlgeom/meshstlsurface.hpp
 stlgeom.o: libsrc/stlgeom/stlgeom.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -3888,8 +3851,7 @@ stlgeom.o: libsrc/stlgeom/stlgeom.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3915,9 +3877,8 @@ stlgeom.o: libsrc/stlgeom/stlgeom.cpp libsrc/include/mystdlib.h \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/stlgeom/stlgeom.hpp \
-  libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
-  libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
-  libsrc/stlgeom/meshstlsurface.hpp
+  libsrc/stlgeom/stltopology.hpp libsrc/stlgeom/stltool.hpp \
+  libsrc/stlgeom/stlline.hpp libsrc/stlgeom/meshstlsurface.hpp
 stlgeomchart.o: libsrc/stlgeom/stlgeomchart.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -3946,8 +3907,7 @@ stlgeomchart.o: libsrc/stlgeom/stlgeomchart.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3973,9 +3933,8 @@ stlgeomchart.o: libsrc/stlgeom/stlgeomchart.cpp libsrc/include/mystdlib.h \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/stlgeom/stlgeom.hpp \
-  libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
-  libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
-  libsrc/stlgeom/meshstlsurface.hpp
+  libsrc/stlgeom/stltopology.hpp libsrc/stlgeom/stltool.hpp \
+  libsrc/stlgeom/stlline.hpp libsrc/stlgeom/meshstlsurface.hpp
 stlgeommesh.o: libsrc/stlgeom/stlgeommesh.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -4004,8 +3963,7 @@ stlgeommesh.o: libsrc/stlgeom/stlgeommesh.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -4031,9 +3989,8 @@ stlgeommesh.o: libsrc/stlgeom/stlgeommesh.cpp libsrc/include/mystdlib.h \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/stlgeom/stlgeom.hpp \
-  libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
-  libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
-  libsrc/stlgeom/meshstlsurface.hpp
+  libsrc/stlgeom/stltopology.hpp libsrc/stlgeom/stltool.hpp \
+  libsrc/stlgeom/stlline.hpp libsrc/stlgeom/meshstlsurface.hpp
 moveablemem.o: libsrc/general/moveablemem.cpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mystdlib.h \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \