home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / trialva / ibmcppw / include / emitlib.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-01-24  |  8.0 KB  |  188 lines

  1. /*
  2.  *   COMPONENT_NAME: somc
  3.  *
  4.  *   ORIGINS: 27
  5.  *
  6.  *
  7.  *   10H9767, 10H9769  (C) COPYRIGHT International Business Machines Corp. 1992,1994
  8.  *   All Rights Reserved
  9.  *   Licensed Materials - Property of IBM
  10.  *   US Government Users Restricted Rights - Use, duplication or
  11.  *   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  12.  */
  13. /* %Z% %I% %W% %G% %U% [%H% %T%] */
  14.  
  15. /*
  16.  */
  17.  
  18. /*
  19.  *         File:    emitlib.h.
  20.  *     Contents:    Header file for General routines that are primarily
  21.  *                  used by the base emitters and framework.
  22.  */
  23.  
  24. #ifndef emitlib_h
  25. #define emitlib_h
  26.  
  27. #include <smstd.h>
  28. #include <sm.h>
  29. #include <symtab.h>
  30. #include <smlib.h>
  31.  
  32. #ifndef SOMObject
  33.   #define SOMObject void *
  34.   #include <somcorba.h>
  35.   #undef SOMObject
  36. #else
  37.   #include <somcorba.h>
  38. #endif /* !SOMObject */
  39.  
  40. #ifndef _IDL_SEQUENCE_string_defined
  41. #define _IDL_SEQUENCE_string_defined
  42. SOM_SEQUENCE_TYPEDEF (string);
  43. #endif /* _IDL_SEQUENCE_string_defined */
  44.  
  45. #define MAX_COMMENT_ARG_LIST_LENGTH (MAX_ARG_LIST_LENGTH * 2)
  46. #define MAX_DESCRIPTOR_LENGTH       512
  47. #define PASSTHRU_STRIP              0x2
  48. #define SMMETA_PREFIX               "M_"
  49.  
  50. #if defined(_OS2) || defined(_WDOS)
  51.     #define SMDELIMITER   ';'
  52. #else
  53.     #define SMDELIMITER   ':'
  54. #endif /* _OS2 || _WDOS */
  55.  
  56. /*
  57.  * Macro version of single line functions
  58.  */
  59. #define somtattExists(ep,s)          (somtgetatt(ep,s) ? TRUE : FALSE)
  60. #define somtlookupComment(n)         (n ? n : "")
  61.  
  62. /* typedef needed by somtGetReintroducedMethods: */
  63. typedef SOM_SEQUENCE(Entry *) _IDL_SEQUENCE_EntryPtr;
  64.  
  65. /* #9211 */
  66. /* a False value is an error */
  67. /* pick values so one can test for abistyle_2 or abistyle_2_3 by bitwise and.
  68.    e.g. (cur_abi & abistyle_2) == True indicates cur_abi is _2 or _2_3 */
  69. enum SOMTABIStyle { SOMTABIStyle_unknown = 0,
  70.                     SOMTABIStyle_2 = 0x01,   /* 001 */
  71.                     SOMTABIStyle_3 = 0x02,   /* 010 */
  72.                     SOMTABIStyle_2_3 = 0x03, /* 011 */
  73.                     SOMTABIStyle_4 = 0x04,   /* 100 */
  74.                     SOMTABIStyle_3_4 = 0x06, /* 110 */
  75.                     SOMTABIStyle_2_3_4 = 0x07/* 111 */
  76.             };
  77.  
  78. /*
  79.  * External function prototypes from: emitlib.c, meta.c, createtc.c
  80.  */
  81. SOMEXTERN Entry *somtnthArg(Entry * method, int n);
  82. SOMEXTERN FILE *somtemitModule(char *file, Entry *cls, char *ext);
  83. SOMEXTERN Mlist *somtallocDataList(Entry *cls);
  84. SOMEXTERN Mlist *somtallocMethodList(Entry *cls, bool all);
  85. SOMEXTERN char *somtclsfilename(Entry * cls);
  86. SOMEXTERN char *somtclsname(Entry * cls);
  87. SOMEXTERN char *somtfindMethodName(const char *bp, char *name);
  88. SOMEXTERN char *somtfullPrototype(char *buf, Entry * method, char *sep, int varargs);
  89. SOMEXTERN char *somtfullTypedef(char *buf, Entry * cls, Entry * method);
  90. SOMEXTERN char *somtgetNonRepeatedParent(Entry *cls, int i);
  91. SOMEXTERN char *somtgetatt(Entry * ep, char *s);
  92. SOMEXTERN char *somtgetdatt(Entry * ep, char *s);
  93. SOMEXTERN enum SOMTABIStyle somtgetAbistyle( Entry * ep );
  94. SOMEXTERN char *somtimplicit(Entry *ep, bool shortform, char *buf);
  95. SOMEXTERN char *somtimplicitArgs(Entry *ep);
  96. SOMEXTERN char *somtincludeOnce(Entry *cls, char *ext, char *buf);
  97. SOMEXTERN char *somtpclsfilename(Entry *parent);
  98. SOMEXTERN char *somtpclsname(Entry *parent);
  99. SOMEXTERN char *somtprefixedPrototype(char *buf, Entry * method, char *sep, int varargs, char *prefix);
  100. SOMEXTERN char *somtreplaceDataName(char *buf, Entry * data, char *replace);
  101. SOMEXTERN char *somtrmSelf(char *str);
  102. SOMEXTERN char *somtshortArgList(char *buf, Entry * method, char *sep, bool varargs, bool addself);
  103. SOMEXTERN int somtimplicitMeta(Entry *cls);
  104. SOMEXTERN int somtlistAttribute(FILE * fp, int n, AttList * ap, char *s, bool value, bool breakLine, bool firstComma);
  105. SOMEXTERN int somtnewMethodsCount(Entry * cls, int meta, bool procflg);
  106. SOMEXTERN int somtprivateMethodsCount(Entry * cls, int meta);
  107. SOMEXTERN void somtaddHeader(char *file, FILE *fp, char *ext);
  108. SOMEXTERN void somtcleanFiles(int status);
  109. SOMEXTERN void somtdeclareIdlVarargs(FILE *fp, Entry *ep);
  110. SOMEXTERN void somtdymain(char *file, Entry *cls, EmitFn emitfn, char *emitter, int first, char *version, Stab *stab);
  111. SOMEXTERN void somtemitModuleTypes(FILE *fp, Entry *ep, Stab *stab);
  112. SOMEXTERN long somtemitPassthru(FILE * fp, Entry * cls, char *name, int mode, char *att);
  113. SOMEXTERN void somtfreeDataList(Mlist *mlist);
  114. SOMEXTERN void somtfreeMethodList(Mlist *mlist);
  115. SOMEXTERN void somtfullComment(FILE * fp, char *fmt,...);
  116. SOMEXTERN void somthandleDiskFull(FILE *fp);
  117. SOMEXTERN void somtinitialiseMeta(Entry * cls, Stab * stab, bool meta, int imp);
  118. SOMEXTERN void somtoidlComment(FILE * fp, int min, int max, char style, char *comment);
  119. SOMEXTERN void somtscmsg(Entry *cls, Entry *ep, char *fmt, ...);
  120. SOMEXTERN void somtshortDefine(FILE *fp, Entry *ep, char *fmt, ...);
  121. SOMEXTERN void somtuninitialiseMeta(Entry * cls);
  122. SOMEXTERN FILE *somtobseleteHeaderFile(char *file, Entry *cls, char *ext, char *newext);
  123. SOMEXTERN char *somtwidenType(Entry *ep, char *args, char *type);
  124. SOMEXTERN void somtgenAttStubs(FILE *fp, Entry *cls, char *prefix, char *classprefix);
  125. SOMEXTERN void somtstrictidl(FILE *fp);
  126. SOMEXTERN void somtcreateTypeCodes (Stab *stab);
  127. SOMEXTERN TypeCode *somtemitTcConstant (TypeCode t, FILE *f, char *name, TypeCode *alreadyDone);
  128. SOMEXTERN void somtemitPredefinedTcConstants (FILE *f);
  129. SOMEXTERN Entry *somtAncestorClass(Entry *cls, char *name);
  130. SOMEXTERN short somttcAlignment (TypeCode t, Environment *ev);
  131. SOMEXTERN long somttcSize (TypeCode t, Environment *ev);
  132. SOMEXTERN TCKind somttcKind (TypeCode t, Environment *ev);
  133. SOMEXTERN sequence(string) somttcSeqFromListString (string s);
  134. SOMEXTERN _IDL_SEQUENCE_EntryPtr somtGetReintroducedMethods(Entry *cls);
  135.  
  136. /*
  137.  * Global variables
  138.  */
  139. #if (!defined(_WIN32) || defined(_WIN32_SOMC))
  140. SOMEXTERN global WIN32_DLLIMPORT int somtCPP;          /* C++ bindings */
  141.  
  142. SOMEXTERN global WIN32_DLLIMPORT bool somtclassIdlCall;/* IDL Calling convention */
  143.  
  144. SOMEXTERN global WIN32_DLLIMPORT char *somtclassName;  /* Current Class Name */
  145.  
  146. SOMEXTERN global WIN32_DLLIMPORT char *somtclassPrefix;/* Current Class Prefix */
  147.  
  148. SOMEXTERN global WIN32_DLLIMPORT char *somtg_somlink;  /* Set to "SOMLINK" when required - csc,
  149.                                         * psc emitters turn this off. */
  150.  
  151. SOMEXTERN global WIN32_DLLIMPORT char *somtmajorVersion; /* Major version number for class */
  152.  
  153. SOMEXTERN global WIN32_DLLIMPORT char *somtminorVersion; /* Minor version number for class */
  154.  
  155. SOMEXTERN global WIN32_DLLIMPORT int somtmeta;         /* TRUE when in implicit meta mode */
  156.  
  157. SOMEXTERN global WIN32_DLLIMPORT char *somtmp;         /* Set to SMMETA_PREFIX when somtmeta is
  158.                                         * TRUE */
  159.  
  160. SOMEXTERN global WIN32_DLLIMPORT Entry *somtsomcls;    /* Pointer to SOMClass Entry in Symbol
  161.                                         * Table */
  162. #else
  163. SOMEXTERN global WIN32_DLLIMPORT int somtCPP;          /* C++ bindings */
  164.  
  165. SOMEXTERN global WIN32_DLLIMPORT bool somtclassIdlCall;/* IDL Calling convention */
  166.  
  167. SOMEXTERN global WIN32_DLLIMPORT char *somtclassName;  /* Current Class Name */
  168.  
  169. SOMEXTERN global WIN32_DLLIMPORT char *somtclassPrefix;/* Current Class Prefix */
  170.  
  171. SOMEXTERN global WIN32_DLLIMPORT char *somtg_somlink;  /* Set to "SOMLINK" when required - csc,
  172.                                         * psc emitters turn this off. */
  173.  
  174. SOMEXTERN global WIN32_DLLIMPORT char *somtmajorVersion; /* Major version number for class */
  175.  
  176. SOMEXTERN global WIN32_DLLIMPORT char *somtminorVersion; /* Minor version number for class */
  177.  
  178. SOMEXTERN global WIN32_DLLIMPORT int somtmeta;         /* TRUE when in implicit meta mode */
  179.  
  180. SOMEXTERN global WIN32_DLLIMPORT char *somtmp;         /* Set to SMMETA_PREFIX when somtmeta is
  181.                                         * TRUE */
  182.  
  183. SOMEXTERN global WIN32_DLLIMPORT Entry *somtsomcls;    /* Pointer to SOMClass Entry in Symbol
  184.                                         * Table */
  185. #endif /* WIN32 DLLIMPORT versions */
  186.  
  187. #endif
  188.