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

  1. :template
  2. /* @(#) somc/gen_emit.efs 2.9 6/7/96 16:14:29 [12/24/96 07:39:06] */
  3.  
  4. /*
  5.  *   COMPONENT_NAME: some
  6.  *
  7.  *   ORIGINS: 27
  8.  *
  9.  *
  10.  *   10H9767, 10H9769  (C) COPYRIGHT International Business Machines Corp. 1992,1994
  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>.c
  19.  *       Author:    SOMObjects Emitter Framework
  20.  *     Contents:    Generic framework emitter for <className>.
  21.  *         Date:    <timeStamp>.
  22.  */
  23.  
  24. #include \<scentry.h\>
  25. #include \<emitlib.h\>
  26. #include "<classSourceFileStem>.h"
  27.  
  28. #define SYMBOLS_FILE   "<classSourceFileStem>.efw"
  29.  
  30. SOMEXTERN FILE * SOMLINK emitSL(char *file, Entry * cls, Stab * stab)
  31. {
  32.     FILE *fp;
  33.     FILE *deffile;
  34.     SOMTClassEntryC *oCls;
  35.     SOMTModuleEntryC *mod;
  36.     <className> *emitter;
  37.     SOMTTemplateOutputC *t;
  38.  
  39.     /* if this is a class, rather than a module: */
  40.     if (cls->type == SOMTClassE) {
  41.  
  42.         fp = somtopenEmitFileSL(file, "<classSourceFileStem>");
  43.         oCls = (SOMTClassEntryC *) somtGetObjectWrapper(cls);
  44.         emitter = <className>New();
  45.         __set_somtTargetFile(emitter, fp);
  46.         __set_somtTargetClass(emitter, oCls);
  47.     __set_somtEmitterName(emitter, "<classSourceFileStem>");
  48.         t = __get_somtTemplate(emitter);
  49.         __set_somtCommentStyle(t, somtCPPE);
  50.         if (deffile = _somtOpenSymbolsFile(emitter, SYMBOLS_FILE, "r")) {
  51.             _somtReadSectionDefinitions(t, deffile);
  52.             somtfcloseSL(deffile);
  53.         }
  54.         else {
  55.             fprintf(stderr, "Cannot open Symbols file \\" %s \\".\\n", 
  56.                  SYMBOLS_FILE);
  57.             exit(-1);
  58.         }
  59.         _somtGenerateSections(emitter);
  60.         _somFree(emitter);
  61.     _somFree(oCls);
  62.  
  63.         return (fp);
  64.     }
  65.     else if (cls->type == SOMTModuleE) {
  66.  
  67.         fp = somtopenEmitFileSL(file, "<classSourceFileStem>");
  68.     mod = (SOMTModuleEntryC *) somtGetObjectWrapper(cls);
  69.         emitter = <className>New();
  70.         __set_somtTargetFile(emitter, fp);
  71.         __set_somtTargetModule(emitter, mod);
  72.         t = __get_somtTemplate(emitter);
  73.         __set_somtCommentStyle(t, somtCPPE);
  74.         if (deffile = _somtOpenSymbolsFile(emitter, SYMBOLS_FILE, "r")) {
  75.             _somtReadSectionDefinitions(t, deffile);
  76.             somtfcloseSL(deffile);
  77.         }
  78.         else {
  79.             fprintf(stderr, "Cannot open Symbols file \\" %s \\".\\n", 
  80.                  SYMBOLS_FILE);
  81.             exit(-1);
  82.         }
  83.         _somtGenerateSections(emitter);
  84.         _somFree(emitter);
  85.         _somFree(mod);
  86.  
  87.         return (fp);
  88.     }
  89.  
  90.     else return ((FILE *) NULL);
  91. }
  92.