Просмотр исходного кода

COMP: Attempt to fix problem with building on SGI

Andy Cedilnik 21 лет назад
Родитель
Сommit
1e04844de9
2 измененных файлов с 193 добавлено и 154 удалено
  1. 174 154
      Source/CursesDialog/form/form.h
  2. 19 0
      Source/kwsys/SystemTools.hxx.in

+ 174 - 154
Source/CursesDialog/form/form.h

@@ -39,7 +39,27 @@
 
 #include <curses.h>
 #include <eti.h>
+
 #include <stdarg.h>
+#ifdef __cplusplus
+#ifndef va_list
+/*
+ Some compilers move va_list into the std:: namespace and there is no way to
+ tell that this has been done. Playing with things being included before or
+ after stdarg.h does not solve things because we do not have control over what
+ the user does.
+ This hack solves this problem by moving va_list to our own namespace that is
+ local for forms.
+*/
+namespace std {} /* Required for platforms that do not have std:: */
+namespace cmakeForms_VA_LIST
+{
+  using namespace std;
+  typedef va_list hack_va_list;
+}
+#define va_list cmakeForms_VA_LIST::hack_va_list
+#endif /* va_list */
+#endif /* __cplusplus */
 
 #ifdef __cplusplus
   extern "C" {
@@ -48,94 +68,94 @@
 typedef int Form_Options;
 typedef int Field_Options;
 
-	/**********
-	*  _PAGE  *
-	**********/
+        /**********
+        *  _PAGE  *
+        **********/
 
 typedef struct {
-  short	pmin;	  /* index of first field on page            */
-  short	pmax;	  /* index of last field on page             */
-  short	smin;	  /* index of top leftmost field on page     */
-  short	smax;	  /* index of bottom rightmost field on page */
+  short pmin;     /* index of first field on page            */
+  short pmax;     /* index of last field on page             */
+  short smin;     /* index of top leftmost field on page     */
+  short smax;     /* index of bottom rightmost field on page */
 } _PAGE;
 
-	/**********
-	*  FIELD  *
-	**********/
+        /**********
+        *  FIELD  *
+        **********/
 
 typedef struct fieldnode {
-  unsigned short       	status;	  /* flags		        */
-  short			rows;	  /* size in rows		*/
-  short			cols;	  /* size in cols		*/
-  short			frow;	  /* first row		        */
-  short			fcol;	  /* first col		        */
+  unsigned short        status;   /* flags                      */
+  short                 rows;     /* size in rows               */
+  short                 cols;     /* size in cols               */
+  short                 frow;     /* first row                  */
+  short                 fcol;     /* first col                  */
   int                   drows;    /* dynamic rows               */
   int                   dcols;    /* dynamic cols               */
   int                   maxgrow;  /* maximum field growth       */
-  int			nrow;	  /* offscreen rows	        */
-  short			nbuf;	  /* additional buffers	        */
-  short			just;	  /* justification	        */
-  short			page;	  /* page on form		*/
-  short			index;	  /* into form -> field	        */
-  int			pad;	  /* pad character	        */
-  chtype		fore;	  /* foreground attribute	*/
-  chtype		back;	  /* background attribute	*/
-  Field_Options		opts;	  /* options		        */
-  struct fieldnode *	snext;	  /* sorted order pointer	*/
-  struct fieldnode *	sprev;	  /* sorted order pointer	*/
-  struct fieldnode *	link;	  /* linked field chain	        */
-  struct formnode *	form;	  /* containing form	        */
-  struct typenode *	type;	  /* field type		        */
-  void *		arg;	  /* argument for type	        */
-  char *		buf;	  /* field buffers	        */
-  void *		usrptr;	  /* user pointer		*/
+  int                   nrow;     /* offscreen rows             */
+  short                 nbuf;     /* additional buffers         */
+  short                 just;     /* justification              */
+  short                 page;     /* page on form               */
+  short                 index;    /* into form -> field         */
+  int                   pad;      /* pad character              */
+  chtype                fore;     /* foreground attribute       */
+  chtype                back;     /* background attribute       */
+  Field_Options         opts;     /* options                    */
+  struct fieldnode *    snext;    /* sorted order pointer       */
+  struct fieldnode *    sprev;    /* sorted order pointer       */
+  struct fieldnode *    link;     /* linked field chain         */
+  struct formnode *     form;     /* containing form            */
+  struct typenode *     type;     /* field type                 */
+  void *                arg;      /* argument for type          */
+  char *                buf;      /* field buffers              */
+  void *                usrptr;   /* user pointer               */
 } FIELD;
 
-	/**************
-	*  FIELDTYPE  *
-	**************/
+        /**************
+        *  FIELDTYPE  *
+        **************/
 
 typedef struct typenode {
-  unsigned short	status;	               /* flags		       */
-  long			ref;	               /* reference count      */
-  struct typenode *	left;	               /* ptr to operand for | */
-  struct typenode *	right;	               /* ptr to operand for | */
+  unsigned short        status;                /* flags                */
+  long                  ref;                   /* reference count      */
+  struct typenode *     left;                  /* ptr to operand for | */
+  struct typenode *     right;                 /* ptr to operand for | */
 
   void* (*makearg)(va_list *);                 /* make fieldtype arg   */
   void* (*copyarg)(const void *);              /* copy fieldtype arg   */
   void  (*freearg)(void *);                    /* free fieldtype arg   */
 
-  bool	(*fcheck)(FIELD *,const void *);       /* field validation     */
-  bool	(*ccheck)(int,const void *);           /* character validation */
+  bool  (*fcheck)(FIELD *,const void *);       /* field validation     */
+  bool  (*ccheck)(int,const void *);           /* character validation */
 
-  bool	(*next)(FIELD *,const void *);         /* enumerate next value */
-  bool	(*prev)(FIELD *,const void *);         /* enumerate prev value */
+  bool  (*next)(FIELD *,const void *);         /* enumerate next value */
+  bool  (*prev)(FIELD *,const void *);         /* enumerate prev value */
 
 } FIELDTYPE;
 
-	/*********
-	*  FORM  *
-	*********/
+        /*********
+        *  FORM  *
+        *********/
 
 typedef struct formnode {
-  unsigned short	status;	  /* flags		        */
-  short			rows;	  /* size in rows		*/
-  short			cols;	  /* size in cols		*/
-  int			currow;	  /* current row in field window*/
-  int			curcol;	  /* current col in field window*/
-  int			toprow;	  /* in scrollable field window	*/
+  unsigned short        status;   /* flags                      */
+  short                 rows;     /* size in rows               */
+  short                 cols;     /* size in cols               */
+  int                   currow;   /* current row in field window*/
+  int                   curcol;   /* current col in field window*/
+  int                   toprow;   /* in scrollable field window */
   int                   begincol; /* in horiz. scrollable field */
-  short			maxfield; /* number of fields	        */
-  short			maxpage;  /* number of pages	        */
-  short			curpage;  /* index into page	        */
-  Form_Options		opts;	  /* options		        */
-  WINDOW *		win;	  /* window		        */
-  WINDOW *		sub;	  /* subwindow		        */
-  WINDOW *		w;	  /* window for current field	*/
-  FIELD **		field;	  /* field [maxfield]	        */
-  FIELD *		current;  /* current field	        */
-  _PAGE *		page;	  /* page [maxpage]	        */
-  void *		usrptr;	  /* user pointer		*/
+  short                 maxfield; /* number of fields           */
+  short                 maxpage;  /* number of pages            */
+  short                 curpage;  /* index into page            */
+  Form_Options          opts;     /* options                    */
+  WINDOW *              win;      /* window                     */
+  WINDOW *              sub;      /* subwindow                  */
+  WINDOW *              w;        /* window for current field   */
+  FIELD **              field;    /* field [maxfield]           */
+  FIELD *               current;  /* current field              */
+  _PAGE *               page;     /* page [maxpage]             */
+  void *                usrptr;   /* user pointer               */
 
   void                  (*forminit)(struct formnode *);
   void                  (*formterm)(struct formnode *);
@@ -146,82 +166,82 @@ typedef struct formnode {
 
 typedef void (*Form_Hook)(FORM *);
 
-	/***************************
-	*  miscellaneous #defines  *
-	***************************/
+        /***************************
+        *  miscellaneous #defines  *
+        ***************************/
 
 /* field justification */
-#define NO_JUSTIFICATION	(0)
-#define JUSTIFY_LEFT		(1)
-#define JUSTIFY_CENTER		(2)
-#define JUSTIFY_RIGHT		(3)
+#define NO_JUSTIFICATION        (0)
+#define JUSTIFY_LEFT            (1)
+#define JUSTIFY_CENTER          (2)
+#define JUSTIFY_RIGHT           (3)
 
 /* field options */
-#define O_VISIBLE		(0x0001)
-#define O_ACTIVE		(0x0002)
-#define O_PUBLIC		(0x0004)
-#define O_EDIT			(0x0008)
-#define O_WRAP			(0x0010)
-#define O_BLANK			(0x0020)
-#define O_AUTOSKIP		(0x0040)
-#define O_NULLOK		(0x0080)
-#define O_PASSOK		(0x0100)
+#define O_VISIBLE               (0x0001)
+#define O_ACTIVE                (0x0002)
+#define O_PUBLIC                (0x0004)
+#define O_EDIT                  (0x0008)
+#define O_WRAP                  (0x0010)
+#define O_BLANK                 (0x0020)
+#define O_AUTOSKIP              (0x0040)
+#define O_NULLOK                (0x0080)
+#define O_PASSOK                (0x0100)
 #define O_STATIC                (0x0200)
 
 /* form options */
-#define O_NL_OVERLOAD		(0x0001)
-#define O_BS_OVERLOAD		(0x0002)
+#define O_NL_OVERLOAD           (0x0001)
+#define O_BS_OVERLOAD           (0x0002)
 
 /* form driver commands */
-#define REQ_NEXT_PAGE	 (KEY_MAX + 1)	/* move to next page		*/
-#define REQ_PREV_PAGE	 (KEY_MAX + 2)	/* move to previous page	*/
-#define REQ_FIRST_PAGE	 (KEY_MAX + 3)	/* move to first page		*/
-#define REQ_LAST_PAGE	 (KEY_MAX + 4)	/* move to last page		*/
-
-#define REQ_NEXT_FIELD	 (KEY_MAX + 5)	/* move to next field		*/
-#define REQ_PREV_FIELD	 (KEY_MAX + 6)	/* move to previous field	*/
-#define REQ_FIRST_FIELD	 (KEY_MAX + 7)	/* move to first field		*/
-#define REQ_LAST_FIELD	 (KEY_MAX + 8)	/* move to last field		*/
-#define REQ_SNEXT_FIELD	 (KEY_MAX + 9)	/* move to sorted next field	*/
-#define REQ_SPREV_FIELD	 (KEY_MAX + 10)	/* move to sorted prev field	*/
-#define REQ_SFIRST_FIELD (KEY_MAX + 11)	/* move to sorted first field	*/
-#define REQ_SLAST_FIELD	 (KEY_MAX + 12)	/* move to sorted last field	*/
-#define REQ_LEFT_FIELD	 (KEY_MAX + 13)	/* move to left to field	*/
-#define REQ_RIGHT_FIELD	 (KEY_MAX + 14)	/* move to right to field	*/
-#define REQ_UP_FIELD	 (KEY_MAX + 15)	/* move to up to field		*/
-#define REQ_DOWN_FIELD	 (KEY_MAX + 16)	/* move to down to field	*/
-
-#define REQ_NEXT_CHAR	 (KEY_MAX + 17)	/* move to next char in field	*/
-#define REQ_PREV_CHAR	 (KEY_MAX + 18)	/* move to prev char in field	*/
-#define REQ_NEXT_LINE	 (KEY_MAX + 19)	/* move to next line in field	*/
-#define REQ_PREV_LINE	 (KEY_MAX + 20)	/* move to prev line in field	*/
-#define REQ_NEXT_WORD	 (KEY_MAX + 21)	/* move to next word in field	*/
-#define REQ_PREV_WORD	 (KEY_MAX + 22)	/* move to prev word in field	*/
-#define REQ_BEG_FIELD	 (KEY_MAX + 23)	/* move to first char in field	*/
-#define REQ_END_FIELD	 (KEY_MAX + 24)	/* move after last char in fld	*/
-#define REQ_BEG_LINE	 (KEY_MAX + 25)	/* move to beginning of line	*/
-#define REQ_END_LINE	 (KEY_MAX + 26)	/* move after last char in line	*/
-#define REQ_LEFT_CHAR	 (KEY_MAX + 27)	/* move left in field		*/
-#define REQ_RIGHT_CHAR	 (KEY_MAX + 28)	/* move right in field		*/
-#define REQ_UP_CHAR	 (KEY_MAX + 29)	/* move up in field		*/
-#define REQ_DOWN_CHAR	 (KEY_MAX + 30)	/* move down in field		*/
-
-#define REQ_NEW_LINE	 (KEY_MAX + 31)	/* insert/overlay new line	*/
-#define REQ_INS_CHAR	 (KEY_MAX + 32)	/* insert blank char at cursor	*/
-#define REQ_INS_LINE	 (KEY_MAX + 33)	/* insert blank line at cursor	*/
-#define REQ_DEL_CHAR	 (KEY_MAX + 34)	/* delete char at cursor	*/
-#define REQ_DEL_PREV	 (KEY_MAX + 35)	/* delete char before cursor	*/
-#define REQ_DEL_LINE	 (KEY_MAX + 36)	/* delete line at cursor	*/
-#define REQ_DEL_WORD	 (KEY_MAX + 37)	/* delete line at cursor	*/
-#define REQ_CLR_EOL	 (KEY_MAX + 38)	/* clear to end of line		*/
-#define REQ_CLR_EOF	 (KEY_MAX + 39)	/* clear to end of field	*/
-#define REQ_CLR_FIELD	 (KEY_MAX + 40)	/* clear entire field		*/
-#define REQ_OVL_MODE	 (KEY_MAX + 41)	/* begin overlay mode		*/
-#define REQ_INS_MODE	 (KEY_MAX + 42)	/* begin insert mode		*/
-#define REQ_SCR_FLINE	 (KEY_MAX + 43)	/* scroll field forward a line	*/
-#define REQ_SCR_BLINE	 (KEY_MAX + 44)	/* scroll field backward a line	*/
-#define REQ_SCR_FPAGE	 (KEY_MAX + 45)	/* scroll field forward a page	*/
-#define REQ_SCR_BPAGE	 (KEY_MAX + 46)	/* scroll field backward a page	*/
+#define REQ_NEXT_PAGE    (KEY_MAX + 1)  /* move to next page            */
+#define REQ_PREV_PAGE    (KEY_MAX + 2)  /* move to previous page        */
+#define REQ_FIRST_PAGE   (KEY_MAX + 3)  /* move to first page           */
+#define REQ_LAST_PAGE    (KEY_MAX + 4)  /* move to last page            */
+
+#define REQ_NEXT_FIELD   (KEY_MAX + 5)  /* move to next field           */
+#define REQ_PREV_FIELD   (KEY_MAX + 6)  /* move to previous field       */
+#define REQ_FIRST_FIELD  (KEY_MAX + 7)  /* move to first field          */
+#define REQ_LAST_FIELD   (KEY_MAX + 8)  /* move to last field           */
+#define REQ_SNEXT_FIELD  (KEY_MAX + 9)  /* move to sorted next field    */
+#define REQ_SPREV_FIELD  (KEY_MAX + 10) /* move to sorted prev field    */
+#define REQ_SFIRST_FIELD (KEY_MAX + 11) /* move to sorted first field   */
+#define REQ_SLAST_FIELD  (KEY_MAX + 12) /* move to sorted last field    */
+#define REQ_LEFT_FIELD   (KEY_MAX + 13) /* move to left to field        */
+#define REQ_RIGHT_FIELD  (KEY_MAX + 14) /* move to right to field       */
+#define REQ_UP_FIELD     (KEY_MAX + 15) /* move to up to field          */
+#define REQ_DOWN_FIELD   (KEY_MAX + 16) /* move to down to field        */
+
+#define REQ_NEXT_CHAR    (KEY_MAX + 17) /* move to next char in field   */
+#define REQ_PREV_CHAR    (KEY_MAX + 18) /* move to prev char in field   */
+#define REQ_NEXT_LINE    (KEY_MAX + 19) /* move to next line in field   */
+#define REQ_PREV_LINE    (KEY_MAX + 20) /* move to prev line in field   */
+#define REQ_NEXT_WORD    (KEY_MAX + 21) /* move to next word in field   */
+#define REQ_PREV_WORD    (KEY_MAX + 22) /* move to prev word in field   */
+#define REQ_BEG_FIELD    (KEY_MAX + 23) /* move to first char in field  */
+#define REQ_END_FIELD    (KEY_MAX + 24) /* move after last char in fld  */
+#define REQ_BEG_LINE     (KEY_MAX + 25) /* move to beginning of line    */
+#define REQ_END_LINE     (KEY_MAX + 26) /* move after last char in line */
+#define REQ_LEFT_CHAR    (KEY_MAX + 27) /* move left in field           */
+#define REQ_RIGHT_CHAR   (KEY_MAX + 28) /* move right in field          */
+#define REQ_UP_CHAR      (KEY_MAX + 29) /* move up in field             */
+#define REQ_DOWN_CHAR    (KEY_MAX + 30) /* move down in field           */
+
+#define REQ_NEW_LINE     (KEY_MAX + 31) /* insert/overlay new line      */
+#define REQ_INS_CHAR     (KEY_MAX + 32) /* insert blank char at cursor  */
+#define REQ_INS_LINE     (KEY_MAX + 33) /* insert blank line at cursor  */
+#define REQ_DEL_CHAR     (KEY_MAX + 34) /* delete char at cursor        */
+#define REQ_DEL_PREV     (KEY_MAX + 35) /* delete char before cursor    */
+#define REQ_DEL_LINE     (KEY_MAX + 36) /* delete line at cursor        */
+#define REQ_DEL_WORD     (KEY_MAX + 37) /* delete line at cursor        */
+#define REQ_CLR_EOL      (KEY_MAX + 38) /* clear to end of line         */
+#define REQ_CLR_EOF      (KEY_MAX + 39) /* clear to end of field        */
+#define REQ_CLR_FIELD    (KEY_MAX + 40) /* clear entire field           */
+#define REQ_OVL_MODE     (KEY_MAX + 41) /* begin overlay mode           */
+#define REQ_INS_MODE     (KEY_MAX + 42) /* begin insert mode            */
+#define REQ_SCR_FLINE    (KEY_MAX + 43) /* scroll field forward a line  */
+#define REQ_SCR_BLINE    (KEY_MAX + 44) /* scroll field backward a line */
+#define REQ_SCR_FPAGE    (KEY_MAX + 45) /* scroll field forward a page  */
+#define REQ_SCR_BPAGE    (KEY_MAX + 46) /* scroll field backward a page */
 #define REQ_SCR_FHPAGE   (KEY_MAX + 47) /* scroll field forward  half page */
 #define REQ_SCR_BHPAGE   (KEY_MAX + 48) /* scroll field backward half page */
 #define REQ_SCR_FCHAR    (KEY_MAX + 49) /* horizontal scroll char          */
@@ -231,12 +251,12 @@ typedef void (*Form_Hook)(FORM *);
 #define REQ_SCR_HFHALF   (KEY_MAX + 53) /* horizontal scroll half line     */
 #define REQ_SCR_HBHALF   (KEY_MAX + 54) /* horizontal scroll half line     */
 
-#define REQ_VALIDATION	 (KEY_MAX + 55)	/* validate field		*/
-#define REQ_NEXT_CHOICE	 (KEY_MAX + 56)	/* display next field choice	*/
-#define REQ_PREV_CHOICE	 (KEY_MAX + 57)	/* display prev field choice	*/
+#define REQ_VALIDATION   (KEY_MAX + 55) /* validate field               */
+#define REQ_NEXT_CHOICE  (KEY_MAX + 56) /* display next field choice    */
+#define REQ_PREV_CHOICE  (KEY_MAX + 57) /* display prev field choice    */
 
-#define MIN_FORM_COMMAND (KEY_MAX + 1)	/* used by form_driver		*/
-#define MAX_FORM_COMMAND (KEY_MAX + 57)	/* used by form_driver		*/
+#define MIN_FORM_COMMAND (KEY_MAX + 1)  /* used by form_driver          */
+#define MAX_FORM_COMMAND (KEY_MAX + 57) /* used by form_driver          */
 
 #if defined(MAX_COMMAND)
 #  if (MAX_FORM_COMMAND > MAX_COMMAND)
@@ -248,9 +268,9 @@ typedef void (*Form_Hook)(FORM *);
 #  define MAX_COMMAND (KEY_MAX + 128)
 #endif
 
-	/*************************
-	*  standard field types  *
-	*************************/
+        /*************************
+        *  standard field types  *
+        *************************/
 extern FIELDTYPE *TYPE_ALPHA,
                  *TYPE_ALNUM,
                  *TYPE_ENUM,
@@ -259,9 +279,9 @@ extern FIELDTYPE *TYPE_ALPHA,
                  *TYPE_REGEXP;
 
         /************************************
-	*  built-in additional field types  *
+        *  built-in additional field types  *
         *  They are not defined in SVr4     *
-	************************************/
+        ************************************/
 extern FIELDTYPE *TYPE_IPV4;      /* Internet IP Version 4 address */
 
         /*********************** 
@@ -271,23 +291,23 @@ extern FORM  *_nc_Default_Form;
 extern FIELD *_nc_Default_Field;
 
 
-	/***********************
-	*  FIELDTYPE routines  *
-	***********************/
+        /***********************
+        *  FIELDTYPE routines  *
+        ***********************/
 extern FIELDTYPE 
                 *new_fieldtype(
-		    bool (* const field_check)(FIELD *,const void *),
-		    bool (* const char_check)(int,const void *)),
+                    bool (* const field_check)(FIELD *,const void *),
+                    bool (* const char_check)(int,const void *)),
                 *link_fieldtype(FIELDTYPE *,FIELDTYPE *);
 
 extern int      free_fieldtype(FIELDTYPE *),
                 set_fieldtype_choice (FIELDTYPE *,
-		    bool (* const next_choice)(FIELD *,const void *),
-	      	    bool (* const prev_choice)(FIELD *,const void *));
+                    bool (* const next_choice)(FIELD *,const void *),
+                    bool (* const prev_choice)(FIELD *,const void *));
 
-	/*******************
-	*  FIELD routines  *
-	*******************/
+        /*******************
+        *  FIELD routines  *
+        *******************/
 extern FIELD    *new_field(int,int,int,int,int,int),
                 *dup_field(FIELD *,int,int),
                 *link_field(FIELD *,int,int);
@@ -330,9 +350,9 @@ extern char*    field_buffer(const FIELD *,int);
 extern Field_Options  
                 field_opts(const FIELD *);
 
-	/******************
-	*  FORM routines  *
-	******************/
+        /******************
+        *  FORM routines  *
+        ******************/
 extern FORM     *new_form(FIELD **);
 
 extern FIELD    **form_fields(const FORM *),
@@ -386,4 +406,4 @@ extern bool     data_ahead(const FORM *),
   }
 #endif
 
-#endif	/* FORM_H */
+#endif  /* FORM_H */

+ 19 - 0
Source/kwsys/SystemTools.hxx.in

@@ -22,7 +22,26 @@
 #include <@KWSYS_NAMESPACE@/Configure.h>
 
 #include <sys/types.h>
+
+// Required for va_list
 #include <stdarg.h>
+#ifndef va_list
+// Some compilers move va_list into the std:: namespace and there is no way to
+// tell that this has been done. Playing with things being included before or
+// after stdarg.h does not solve things because we do not have control over
+// what the user does. This hack solves this problem by moving va_list to our
+// own namespace that is local for kwsys.
+namespace std {} // Required for platforms that do not have std:: 
+namespace @KWSYS_NAMESPACE@_VA_LIST
+{
+  using namespace std;
+  typedef va_list hack_va_list;
+}
+namespace @KWSYS_NAMESPACE@
+{
+  typedef @KWSYS_NAMESPACE@_VA_LIST::hack_va_list va_list;
+}
+#endif // va_list
 
 #if defined( _MSC_VER )
 typedef unsigned short mode_t;