#   10H9767, 10H9769  (C) COPYRIGHT International Business Machines Corp. 1992,1994,1996
#   All Rights Reserved
#   Licensed Materials - Property of IBM
#   US Government Users Restricted Rights - Use, duplication or
#   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.

 **********************************************************************
 * DISCLAIMER OF WARRANTIES.
 * The following [enclosed] code is sample code created by IBM
 * Corporation. This sample code is not part of any standard or IBM
 * product and is provided to you solely for the purpose of assisting
 * you in the development of your applications.  The code is provided
 * "AS IS". IBM MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
 * NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 * FOR A PARTICULAR PURPOSE, REGARDING THE FUNCTION OR PERFORMANCE OF
 * THIS CODE.  IBM shall not be liable for any damages arising out of
 * your use of the sample code, even if they have been advised of the
 * possibility of such damages.
 *
 * DISTRIBUTION.
 * This sample code can be freely distributed, copied, altered, and
 * incorporated into other software, provided that it bears the above
 * Copyright notice and DISCLAIMER intact.
 *
 *
 * %Z% %I% %W% %G% %U% [%H% %T%] 
 **********************************************************************

IBM SOMobjects Win32 Toolkit Samples Overview:

   DESCRIPTION:
      The samples contained in the subdirectories of this directory are:

      somk  - the SOM Run-time Kernel
      somd  - Workstation DSOM
      somem - Event manager
      somi  - the SOM Interface Repository Framework

      Please refer to the readme.txt files contained in the subdirectories for
      more information on the sample programs.


   HOW TO RUN THE PROJECT FROM THE COMMAND LINE:
      To build and run the samples, follow the instructions in the readme.txt 
      for each sample.  In general, the correct bindings must be established 
      for each sample.  This is done for you automatically by the makefiles 
      "vac.mak" supplied with the samples.  The following table outlines 
      which samples use which set of bindings. 
          

      Samples                  Supported Bindings            
      --------------------------------------------------------
      somk                      
          \c\tp                SOMSTARS                      
          \c\animals           SOMSTARS                      
          \cpp\simple          (SOMSTARS or SOMCORBA) + SOMXH
          \cpp\derived         (SOMSTARS or SOMCORBA) + SOMXH
                              
      somi                      
          \c\irdump            SOMSTARS
                              
      somd                      
          \cpp\stack           SOMXH              
          \cpp\animal          SOMXH              
          \cpp\dii             SOMXH              
          \cpp\event           SOMXH              
      somem                      
          \c\emdemo            SOMSTARS
                              


      To build the samples, cd to the sample leaf subdirectory, and make
      the samples as follows:
          - nmake -f vac.mak all

      To clean up after the samples:
          - nmake -f vac.mak clean
          
      Make sure that you run "nmake -f vac.mak clean" before you re-build any 
      samples to avoid using old files such as som.ir.  (You may encounter
      messages about files not found when cleaning files. This is normal.)
      You also want to clean up before you switch to a compilers, in
      case you want to test SOM with different compilers.
      Also, make sure that you read the readme.txt files contained in the 
      subdirectories for more information and prerequisites for the sample 
      programs.


      If you have NOT installed the SOM toolkit as part of VisualAge for C++,
      you must first set up your environment for SOM, or you may run the 
      somenv.bat command file to set up your environment.  Do this before
      you attempt to build the samples.

      If you are a Microsoft Visual C++ 2.1 user, sample makefiles 
      are provided as well: 
        -Refer to somenv.bat as a guide to set up your environment for SOM.  
        -Follow the instructions to make the samples, except that
         "msc.mak" should be substituted for "vac.mak".

      Alternatively, you may build the samples from the Microsoft Visual 
      C++ Integrated Development Environment (IDE):

      1. Bring up Microsoft Visual C++ IDE. Select the "Options"
         choice from the Tools Menu.  Click on the "Directories"
         notebook tab and add the SOM Toolkit directories for the
         options Lib, Executables, and Include.
  
         For example if your toolkit is installed on c:\som
         then Add a directory for Lib by adding the directory
         c:\som\lib. Executables c:\som\bin. Include c:\som\include.
  
         You only have to do this step once as Microsoft Visual C++ will
         remember these settings from session to session.
  
      2. Optional: Rename "msc.mak" to "makefile.mak" 
         in the samples directory. (MSVC already looks for "*.mak"
         files in the "Open" dialog box thus saving you a little
         typing.)
  
      3. Open the "msc.mak" or "makefile.mak" from step 2 from File Menu 
         of Microsoft Visual C++ IDE. Click on the "Project" menu and 
         select the "Build" option.  You can modify the build command 
         that MSCV issues by editing "Settings" under the Project menu.
  
      4. Build and execute samples from the IDE. After the sample
         is built you can debug by opening the appropriate .exe from the
         "Open" choice on the File Menu. Refer to the readme.txt for each
         sample for information about how to run the sample.


   HOW TO RUN THE PROJECT FROM WITHIN THE WORKFRAME ENVIRONMENT:
     Follow the instructions in the readme.txt for each sample.

   SPECIAL NOTE:
     The following applies to all C and CPP bindings.

     VisualAge for C++ does not transparently handle
     exported DLL data that is also statically linked by other 
     components within the same DLL. An examination of the makefiles
     will show that SOM_DONT_IMPORT_CLASS_<classname>
     is defined for many classes.  If you are using VisualAge for
     C++, you must declare which classes you want to statically
     link to by using these defines.

     They are not required if you are using Microsoft Visual C++.
     You will generally get warnings stating that you have
     'inconsistent dll linkage - dllexport is assumed'. Your
     code will run, because Microsoft's linker will do a
     special fix-up; however, it will run slower than if you
     had made the defines.  This penalty is payed for every 
     method invocation - so it is best to avoid this fix-up.

     There are other ways to tell if this fix-up is happening.
     The fix was applied if the linker produces a .exp file and
     a .lib without being asked.  It is also present if it says
     it is ignoring your .def file's EXPORTS section. This is
     linker warning LNK4077.  Finally, check the map file for
     'linker-defined' symbols.

   VisualAge for C++ SAMPLES INFORMATION:
     A complete listing of samples shipped with the VisualAge for C++
     product can be found in the online GUIDE TO SAMPLES.  To access
     this notebook, simply:

     -  Open the VisualAge for C++ program group in the Program
        Manager window, then
     -  Open the GUIDE TO SAMPLES notebook in the program group.



    SOMobjects is a Registered Trademark of the IBM Corporation.
    Other brand and product names are trademarks or registered
    trademarks of their respective holders.

