home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / languages / tcl / tclX6.5c / src / main++.C < prev    next >
Encoding:
C/C++ Source or Header  |  1992-12-19  |  2.6 KB  |  85 lines

  1. /*
  2.  * main++.C --
  3.  *
  4.  *   C++ based main.  It is an alternative to the existing main.c to set up
  5.  * the Tcl shell and may be used as a example on how to use tcl++.h
  6.  *      
  7.  *---------------------------------------------------------------------------
  8.  * Copyright 1992 Karl Lehenbauer and Mark Diekhans.
  9.  *
  10.  * Permission to use, copy, modify, and distribute this software and its
  11.  * documentation for any purpose and without fee is hereby granted, provided
  12.  * that the above copyright notice appear in all copies.  Karl Lehenbauer,
  13.  * Mark Diekhans, and Peter da Silva make no representations about the
  14.  * suitability of this software for any purpose.  It is provided "as is"
  15.  * without express or implied warranty.
  16.  *---------------------------------------------------------------------------
  17.  * Based on Tcl C++ classes developed by Parag Patel.
  18.  *-----------------------------------------------------------------------------
  19.  * $Id: main++.C,v 2.0 1992/10/16 04:51:31 markd Rel $
  20.  *-----------------------------------------------------------------------------
  21.  */
  22. #include <stdlib.h>
  23.  
  24. #include "tcl++.h"
  25. /*
  26.  * This file is optional.
  27.  */
  28. #include "patchlevel.h"
  29.  
  30. int
  31. main (int     argc,
  32.       char  **argv)
  33. {
  34.     TclInterp_cl *interpPtr;
  35.  
  36.     /*
  37.      * If history is to be used, then set the eval procedure pointer that
  38.      * Tcl_CommandLoop so that history will be recorded.  This reference
  39.      * also brings in history from Tcl.a.
  40.      */
  41. #ifndef TCL_NOHISTORY
  42.      tclShellCmdEvalProc = (int (*)())Tcl_RecordAndEval;
  43. #endif
  44.  
  45.     /* 
  46.      * Create a Tcl interpreter for the session, with all extended commands
  47.      * initialized.  This can be replaced with Tcl_CreateInterp followed
  48.      * by a subset of the extended command initializaton procedures if 
  49.      * desired.
  50.      */
  51.     interpPtr = new TclInterp_cl;
  52.  
  53.     /*
  54.      *   >>>>>> INITIALIZE APPLICATION SPECIFIC COMMANDS HERE <<<<<<
  55.      */
  56.  
  57.     /*
  58.      * Load the tcl startup code, this should pull in all of the tcl
  59.      * procs, paths, command line processing, autoloads, packages, etc.
  60.      * If Tcl was invoked interactively, Tcl_Startup will give it
  61.      * a command loop.
  62.      */
  63.  
  64.     interpPtr->Startup (argc, argv, NULL, 0);
  65.  
  66.     /* 
  67.      * Delete the interpreter (not neccessary under Unix, but we do
  68.      * it if TCL_MEM_DEBUG is set to better enable us to catch memory
  69.      * corruption problems)
  70.      */
  71.  
  72. #ifdef TCL_MEM_DEBUG
  73.     delete interpPtr;
  74. #endif
  75.  
  76. #ifdef TCL_SHELL_MEM_LEAK
  77.     printf (" >>> Dumping active memory list to mem.lst <<<\n");
  78.     if (Tcl_DumpActiveMemory ("mem.lst") != TCL_OK)
  79.         panic ("error accessing `mem.lst': %s", strerror (errno));
  80. #endif
  81.  
  82.     exit(0);
  83. }
  84.  
  85.