This is a very simple example to show how a user can create
a special enumerated data type. SystemC SCV uses a special
C++ methodology called partial rtemplate specialization to
support arbitrary data types with randomization, transaction
recording, callbacks, and other features that deconstruct
the elements of an object.

The extension of an enumerated type creates a mapping
between the enumeration value and the string name associated
with the enumeration.

This example is identical to ex_02_enumdata, except that the
enumerated type occurs inside of the user-defined structure.

The following source files arg part of this example:

  state.h      The definition of a user-defined structure that
               contains an enumerated data type
  state_ext.h  Extensions for the user-defined data types.
  test.cc      A test that uses the introspection interface into
               the user-defined data structure
  Makefile     Targets for sun-gnu, hppa-native and linux

In order for a structure to have introspection capability, a user 
must define a scv_extensions<> specialization for the particular
struct and enums. 

A makefile for use with SystemC is provided with targets for
three different platforms:

  make sun-gnu        # Gnu C++ compiler on Sun
  make hppa-native    # HP C++ compiler on HP
  make linux          # Gnu C++ compiler on Linux


%%CATEGORIES            notebook examples introspection
%%TBARGS        ncsc    --stop hdl_elab --sconly sctop
%%LinePrefix    all
%%Files         none    %%REGSRC/test.cc %%REGSRC/test_reg.cc
%%Files         osci    %%REGSRC/test.cc
%%Files         schdl   %%REGSRC/test.cc
%%Files         ncsc    %%REGSRC/test_reg.cc
%%CheckTest     all     %%REGSRC/checktest.sh %%TBLOG %%REGSRC/tb_log.au
%%REALCLEAN             %%REGBLD/logfile.diff
