We need ANSI C prototypes of certain Motif
functions that are not published in the official
header files.

<Xm/XmPrivate.h> header file contains
the prototypes extracted from the Motif source.

To re-create <Xm/XmPrivate.h>:

1) Make sure you have sources of libXm
(lib/Xm directory of the Motif distribution)
accessible via imports/motif/lib/Xm

2) rm include/Xm/XmPrivate.h

3) make includes
---
 cde/include/Imakefile               |    4 ++
 cde/include/Xm/Imakefile            |   23 +++++++
 cde/include/Xm/XmPrivate.h          |  129 +++++++++++++++++++++++++++++++++++
 cde/include/Xm/extractprototype.awk |   57 ++++++++++++++++
 4 files changed, 213 insertions(+)
 create mode 100644 cde/include/Xm/Imakefile
 create mode 100644 cde/include/Xm/XmPrivate.h
 create mode 100644 cde/include/Xm/extractprototype.awk

diff --git a/cde/include/Imakefile b/cde/include/Imakefile
index 174309c..d6fe5b9 100644
--- a/cde/include/Imakefile
+++ b/cde/include/Imakefile
@@ -1,7 +1,11 @@
 XCOMM $TOG: Imakefile /main/4 1997/07/09 10:03:24 samborn $
 #define PassCDebugFlags /**/
+#define IHaveSubdirs
 
 HEADERS = hpversion.h EUSCompat.h
+SUBDIRS = Xm
+
+MakeSubdirs($(SUBDIRS))
 
 all::
 
diff --git a/cde/include/Xm/Imakefile b/cde/include/Xm/Imakefile
new file mode 100644
index 0000000..b1b15ce
--- /dev/null
+++ b/cde/include/Xm/Imakefile
@@ -0,0 +1,23 @@
+XCOMM
+XCOMM  Generate XmPrivate.h containing ANSI C 
+XCOMM  function prototypes extracted from the private
+XCOMM  include headers files 
+XCOMM  
+XCOMM  libXm source from Motif (lib/Xm subdirectory)
+XCOMM  needs to be available in ../../imports/motif/lib/Xm
+XCOMM
+
+HEADERS = XmPrivate.h
+ALLHEADERS = *.h
+
+includes:: $(HEADERS)
+
+BuildIncludes($(HEADERS),Xm,..)
+
+XmPrivate.h: extractprototype.awk
+       awk -f extractprototype.awk $(MLIBSRC)/Xm/$(ALLHEADERS) > $@
+
+depend::
+
+clean::
+
diff --git a/cde/include/Xm/XmPrivate.h b/cde/include/Xm/XmPrivate.h
new file mode 100644
index 0000000..65cb9a5
--- /dev/null
+++ b/cde/include/Xm/XmPrivate.h
@@ -0,0 +1,129 @@
+/*
+ *
+ * PRIVATE MOTIF FUNCTIONS
+ * Declarations extracted from Open Motif header files
+ *
+ */
+
+#include <Xm/TextStrSoP.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+/* Extracted from BaseClassI.h */
+extern void _XmPushWidgetExtData( 
+                        Widget widget,
+                        XmWidgetExtData data,
+#if NeedWidePrototypes
+                        unsigned int extType) ;
+#else
+                        unsigned char extType) ;
+#endif /* NeedWidePrototypes */
+extern void _XmPopWidgetExtData( 
+                        Widget widget,
+                        XmWidgetExtData *dataRtn,
+#if NeedWidePrototypes
+                        unsigned int extType) ;
+#else
+                        unsigned char extType) ;
+#endif /* NeedWidePrototypes */
+/* Extracted from MenuStateI.h */
+extern void _XmSetInDragMode( 
+                        Widget widget,
+#if NeedWidePrototypes
+                        int mode) ;
+#else
+                        Boolean mode) ;
+#endif /* NeedWidePrototypes */
+/* Extracted from MenuUtilI.h */
+extern int _XmGrabPointer( 
+                        Widget widget,
+                        int owner_events,
+                        unsigned int event_mask,
+                        int pointer_mode,
+                        int keyboard_mode,
+                        Window confine_to,
+                        Cursor cursor,
+                        Time time) ;
+/* Extracted from SyntheticI.h */
+extern void _XmExtGetValuesHook( 
+                        Widget w,
+                        ArgList args,
+                        Cardinal *num_args) ;
+extern void _XmGadgetImportSecondaryArgs( 
+                        Widget w,
+                        ArgList args,
+                        Cardinal *num_args) ;
+/* Extracted from TextStrSoI.h */
+extern char  * _XmStringSourceGetString(XmTextWidget tw,
+                                       XmTextPosition from,
+                                       XmTextPosition to,
+#if NeedWidePrototypes
+                                       int want_wchar);
+#else
+                                        Boolean want_wchar);
+#endif /* NeedWidePrototypes */
+/* Extracted from TravActI.h */
+extern void _XmEnterGadget( 
+                        Widget wid,
+                        XEvent *event,
+                        String *params,
+                        Cardinal *num_params) ;
+extern void _XmLeaveGadget( 
+                        Widget wid,
+                        XEvent *event,
+                        String *params,
+                        Cardinal *num_params) ;
+extern void _XmFocusInGadget( 
+                        Widget wid,
+                        XEvent *event,
+                        String *params,
+                        Cardinal *num_params) ;
+extern void _XmFocusOutGadget( 
+                        Widget wid,
+                        XEvent *event,
+                        String *params,
+                        Cardinal *num_params) ;
+/* Extracted from TraversalI.h */
+extern Boolean _XmFocusIsHere( 
+                        Widget w) ;
+extern Boolean _XmShellIsExclusive( 
+                        Widget wid) ;
+/* Extracted from UniqueEvnI.h */
+extern Boolean _XmIsEventUnique(XEvent *event) ;
+/* Extracted from VendorSI.h */
+extern void _XmAddGrab( 
+                        Widget wid,
+#if NeedWidePrototypes
+                        int exclusive,
+                        int spring_loaded) ;
+#else
+                        Boolean exclusive,
+                        Boolean spring_loaded) ;
+#endif /* NeedWidePrototypes */
+extern void _XmRemoveGrab( 
+                        Widget wid) ;
+/* Extracted from XmI.h */
+extern void _XmSocorro( 
+                        Widget w,
+                        XEvent *event,
+                        String *params,
+                        Cardinal *num_params) ;
+extern void _XmClearShadowType( 
+                        Widget w,
+#if NeedWidePrototypes
+                        int old_width,
+                        int old_height,
+                        int old_shadow_thickness,
+                        int old_highlight_thickness) ;
+#else
+                        Dimension old_width,
+                        Dimension old_height,
+                        Dimension old_shadow_thickness,
+                        Dimension old_highlight_thickness) ;
+#endif /* NeedWidePrototypes */
+#ifdef __cplusplus
+}
+#endif
+/*************************************************************
+ * END OF EXTRACTED DATA
+ *************************************************************/
diff --git a/cde/include/Xm/extractprototype.awk 
b/cde/include/Xm/extractprototype.awk
new file mode 100644
index 0000000..b3b23ca
--- /dev/null
+++ b/cde/include/Xm/extractprototype.awk
@@ -0,0 +1,57 @@
+BEGIN { 
+       curfile = FILENAME;
+       s = ""; for (i = 0; i < 60; i++) s = s "*";
+       printf("/*\n *\n * PRIVATE MOTIF FUNCTIONS\n");
+       printf(" * Declarations extracted from Open Motif header files\n *\n 
*/\n\n", s); 
+       printf("#include <Xm/TextStrSoP.h>\n");
+       printf("#ifdef __cplusplus\nextern \"C\" {\n#endif\n");
+}
+END {
+       printf("#ifdef __cplusplus\n}\n#endif\n");
+       printf("/*%s\n * END OF EXTRACTED DATA\n *%s/\n", s, s);
+}
+function proto() {
+        if ($0 ~ /extern/) {
+               pattern = 0;
+               do { 
+                       line = $0;
+                       if (line ~ /#if/) {
+                               pattern = 1;
+                       }       
+                       if (curfile != FILENAME) {
+                               n = FILENAME;
+                               sub(/.*\//, "", n);
+                               printf("/* Extracted from %s */\n", n);
+                               curfile = FILENAME;
+                       }
+                       print line;
+                       getline;
+                       if ( pattern == 0) {
+                               terminate = (line ~ /;/);
+                       } else {
+                               terminate = (line ~ /^#.*endif/);
+                       }
+               } while (!terminate);
+       }
+}
+/_XmClearShadowType/ { proto(); }
+/_XmShellIsExclusive/ { proto(); }
+/_XmGrabKeyboard/ { proto(); }
+/_XmFocusIsHere/ { proto(); }
+/_XmAddGrab/ { proto(); }
+/_XmGrabPointer/ { proto(); }
+/_XmRemoveGrab/ { proto(); }
+/_XmEnterGadget/ { proto(); }
+/_XmLeaveGadget/ { proto(); }
+/_XmPushWidgetExtData/ { proto(); }
+/_XmPopWidgetExtData/ { proto(); }
+/_XmGadgetImportSecondaryArgs/ { proto(); }
+/_XmExtImportArgs/ { proto(); }
+/_XmExtGetValuesHook/ { proto(); }
+/_XmSocorro/ { proto(); }
+/_XmFocusInGadget/ { proto(); }
+/_XmFocusOutGadget/ { proto(); }
+/_XmIsEventUnique/ { proto(); }
+/_XmSetInDragMode/ { proto(); }
+/_XmStringSourceGetString/ { proto(); }
+/_XmShellIsExclusive/ { proto(); }
-- 
1.7.9.2


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
cdesktopenv-devel mailing list
cdesktopenv-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/cdesktopenv-devel

Reply via email to