home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / som30tk.zip / som30os2.zip / include / gen_emit.efx < prev    next >
Text File  |  1996-12-24  |  3KB  |  93 lines

  1. :template
  2. /* # @(#) /44 1.9 6/7/96 16:14:31 [12/24/96 07:52:28] */
  3.  
  4. /*
  5.  *   COMPONENT_NAME: some
  6.  *
  7.  *   ORIGINS: 27
  8.  *
  9.  *
  10.  *   10H9767, 25H7912  (C) COPYRIGHT International Business Machines Corp. 1992,1996 
  11.  *   All Rights Reserved
  12.  *   Licensed Materials - Property of IBM
  13.  *   US Government Users Restricted Rights - Use, duplication or
  14.  *   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  15.  */
  16.  
  17. /*
  18.  *         File:    emit<classSourceFileStem>.<cppext>
  19.  *       Author:    SOMObjects Emitter Framework
  20.  *     Contents:    Generic framework emitter for <className>.
  21.  *         Date:    <timeStamp>.
  22.  */
  23.  
  24. #include \<scentry.xh\>
  25. #include \<scmodule.xh\>
  26. #include \<emitlib.h\>
  27. #include "<classSourceFileStem>.xh"
  28.  
  29. #define SYMBOLS_FILE   "<classSourceFileStem>.efw"
  30.  
  31. SOMEXTERN FILE * SOMLINK emitSL(char *file, Entry * cls, Stab * stab)
  32. {
  33.     FILE *fp;
  34.     FILE *deffile;
  35.     SOMTClassEntryC *oCls;
  36.     SOMTModuleEntryC *mod;
  37.     <className> *emitter;
  38.     SOMTTemplateOutputC *t;
  39.  
  40.     /* if this is a class, rather than a module: */
  41.     if (cls->type == SOMTClassE) {
  42.  
  43.         fp = somtopenEmitFileSL(file, "<classSourceFileStem>");
  44.         oCls = (SOMTClassEntryC *) somtGetObjectWrapper(cls);
  45.         emitter = new <className>();
  46.         emitter->_set_somtTargetFile(fp);
  47.         emitter->_set_somtTargetClass(oCls);
  48.     emitter->_set_somtEmitterName("<classSourceFileStem>");
  49.         t = emitter->_get_somtTemplate();
  50.         t->_set_somtCommentStyle(somtCPPE);
  51.         if (deffile = emitter->somtOpenSymbolsFile(SYMBOLS_FILE, "r")) {
  52.             t->somtReadSectionDefinitions(deffile);
  53.             somtfcloseSL(deffile);
  54.         }
  55.         else {
  56.             fprintf(stderr, "Cannot open Symbols file \\" %s \\".\\n", 
  57.                  SYMBOLS_FILE);
  58.             exit(-1);
  59.         }
  60.         emitter->somtGenerateSections();
  61.     delete emitter;
  62.     delete oCls;
  63.  
  64.         return (fp);
  65.     }
  66.     else if (cls->type == SOMTModuleE) {
  67.  
  68.         fp = somtopenEmitFileSL(file, "<classSourceFileStem>");
  69.     mod = (SOMTModuleEntryC *) somtGetObjectWrapper(cls);
  70.         emitter = new <className>();
  71.         emitter->_set_somtTargetFile(fp);
  72.         emitter->_set_somtTargetModule(mod);
  73.         t = emitter->_get_somtTemplate();
  74.         t->_set_somtCommentStyle(somtCPPE);
  75.         if (deffile = emitter->somtOpenSymbolsFile(SYMBOLS_FILE, "r")) {
  76.             t->somtReadSectionDefinitions(deffile);
  77.             somtfcloseSL(deffile);
  78.         }
  79.         else {
  80.             fprintf(stderr, "Cannot open Symbols file \\" %s \\".\\n", 
  81.                  SYMBOLS_FILE);
  82.             exit(-1);
  83.         }
  84.         emitter->somtGenerateSections();
  85.         delete emitter;
  86.     delete mod;
  87.  
  88.         return (fp);
  89.     }
  90.  
  91.     else return ((FILE *) NULL);
  92. }
  93.