/******************************************************************
** Copyright (C) 2001, University of Alabama in Huntsville. 
** All rights reserved.
**
** File   : CTypeHierarchy.h
**
** Author : David Phillips
**
** Description:
**    This file provides definition for the CTypeHierarchy
**    class.
**
** History:
**    24-Nov-2001 : David Phillips
**        Created file.
**    02-Dec-2001 : Satish Hota
**        Added GetTypes method.
******************************************************************/

#ifndef CTypeHierarchy_h
#define CTypeHierarchy_h 1

#pragma warning(disable: 4786)  // Disable debug information warning

#include "CGEngine\ACConstruct.h"
#include <map>
#include <string>

class CTypeDefinition;

class CTypeHierarchy : public ACConstruct
{

  public:
	  typedef std::map< std::string, CTypeDefinition* > TypeDefMap;
    //## Constructors (generated)
      CTypeHierarchy();

      CTypeHierarchy(const CTypeHierarchy &right);

    //## Destructor (generated)
      ~CTypeHierarchy();

    //## Assignment Operation (generated)
      CTypeHierarchy & operator=(const CTypeHierarchy &right);

    //## Equality Operations (generated)
      int operator==(const CTypeHierarchy &right) const;

      int operator!=(const CTypeHierarchy &right) const;

    // Additional Public Declarations

      void Insert (ACConstruct* pConstruct);
      CTypeDefinition* FindByName(std::string name) const;

	  void Commit();
	  const TypeDefMap* GetTypes();

  protected:
      TypeDefMap m_mapType;

  private:

};

#endif