/******************************************************************************
** Copyright (C) 2001, University of Alabama in Huntsville. 
** All rights reserved.
**
** File   : CKnowledgeBase.h
**
** Author : David Phillips
**
** Description:
**    This file provides definition for the CKnowledgeBase
**    class.
**
** History:
** 24-Nov-2001 : David Phillips
**     Created file.
** 02-Dec-2001 : Satish Hota
**     Setting this KnowledgeBase as the parent of the RelationHierarchy,
**     TypeHierarchy, CatalogOfIndividuals, SheetOfAssertion in their
**     respective "Set" methods.
******************************************************************************/

//## begin module%1.4%.codegen_version preserve=yes
//   Read the documentation to learn more about C++ code generator
//   versioning.
//## end module%1.4%.codegen_version

//## begin module%3BD773CE0141.cm preserve=no
//	  %X% %Q% %Z% %W%
//## end module%3BD773CE0141.cm

//## begin module%3BD773CE0141.cp preserve=no
//## end module%3BD773CE0141.cp

//## Module: CKnowledgeBase%3BD773CE0141; Pseudo Package specification
//## Source file: C:\Documents and Settings\dphillips.PORTABLE\Desktop\CS650\ConGraT\CGEngine\CKnowledgeBase.h

#ifndef CKnowledgeBase_h
#define CKnowledgeBase_h 1

//## begin module%3BD773CE0141.additionalIncludes preserve=no
//## end module%3BD773CE0141.additionalIncludes

//## begin module%3BD773CE0141.includes preserve=yes
//## end module%3BD773CE0141.includes
#pragma warning(disable: 4786)  // Disable debug information warning

// ACConstruct
#include "CGEngine\ACConstruct.h"
//## begin module%3BD773CE0141.additionalDeclarations preserve=yes
#include "CGEngine\CTypeHierarchy.h"
#include "CGEngine\CRelationHierarchy.h"
#include "CGEngine\CCatalogOfIndividuals.h"
#include "CGEngine\CSheetOfAssertion.h"
//## end module%3BD773CE0141.additionalDeclarations


//## begin CKnowledgeBase%3BD773CE0141.preface preserve=yes
//## end CKnowledgeBase%3BD773CE0141.preface

//## Class: CKnowledgeBase%3BD773CE0141
//	The CKnowledgeBase class contains the four top-level
//	constructs that compose a Conceptual Graph KnowledgeBase.
//## Category: CGEngine%3BD772CB008A
//## Persistence: Transient
//## Cardinality/Multiplicity: n

class CKnowledgeBase : public ACConstruct  //## Inherits: <unnamed>%3BD774130281
{
  //## begin CKnowledgeBase%3BD773CE0141.initialDeclarations preserve=yes
  //## end CKnowledgeBase%3BD773CE0141.initialDeclarations

  public:
    //## Constructors (generated)
      CKnowledgeBase();

      CKnowledgeBase(const CKnowledgeBase &right);

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

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

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

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


    //## Other Operations (specified)
      //## Operation: Get_Construct%3BE5C0380323
      //	The Get_Construct is a notional method used for
      //	simplification of ConGraT diagrams.  It will not be
      //	implemented in code.
      void GetConstruct ();

    //## Get and Set Operations for Class Attributes (generated)

      //## Attribute: m_types%3BE219D4000B
      CTypeHierarchy* GetTypes ();
      void SetTypes (CTypeHierarchy* value);

      //## Attribute: m_relations%3BE21AF1010F
      CRelationHierarchy* GetRelations ();
      void SetRelations (CRelationHierarchy* value);

      //## Attribute: m_coi%3BE21B00016B
      CCatalogOfIndividuals* GetCOI ();
      void SetCOI (CCatalogOfIndividuals* value);

      //## Attribute: m_soa%3BE21B130317
      CSheetOfAssertion* GetSOA ();
      void SetSOA (CSheetOfAssertion* value);

    // Additional Public Declarations
      //## begin CKnowledgeBase%3BD773CE0141.public preserve=yes
      //## end CKnowledgeBase%3BD773CE0141.public

  protected:
    // Additional Protected Declarations
      //## begin CKnowledgeBase%3BD773CE0141.protected preserve=yes
      //## end CKnowledgeBase%3BD773CE0141.protected

  private:
    // Additional Private Declarations
      //## begin CKnowledgeBase%3BD773CE0141.private preserve=yes
      //## end CKnowledgeBase%3BD773CE0141.private

  private: //## implementation
    // Data Members for Class Attributes

      //## begin CKnowledgeBase::m_types%3BE219D4000B.attr preserve=no  public: CTypeHierarchy* {V} 
      CTypeHierarchy* m_pTypes;
      //## end CKnowledgeBase::m_types%3BE219D4000B.attr

      //## begin CKnowledgeBase::m_relations%3BE21AF1010F.attr preserve=no  public: CRelationHierarchy* {V} 
      CRelationHierarchy* m_pRelations;
      //## end CKnowledgeBase::m_relations%3BE21AF1010F.attr

      //## begin CKnowledgeBase::m_coi%3BE21B00016B.attr preserve=no  public: CCatalogOfIndividuals* {V} 
      CCatalogOfIndividuals* m_pCOI;
      //## end CKnowledgeBase::m_coi%3BE21B00016B.attr

      //## begin CKnowledgeBase::m_soa%3BE21B130317.attr preserve=no  public: CSheetOfAssertion* {V} 
      CSheetOfAssertion* m_pSOA;
      //## end CKnowledgeBase::m_soa%3BE21B130317.attr

    // Additional Implementation Declarations
      //## begin CKnowledgeBase%3BD773CE0141.implementation preserve=yes
      //## end CKnowledgeBase%3BD773CE0141.implementation

};

//## begin CKnowledgeBase%3BD773CE0141.postscript preserve=yes
//## end CKnowledgeBase%3BD773CE0141.postscript

// Class CKnowledgeBase 

//## Get and Set Operations for Class Attributes (inline)

inline CTypeHierarchy* CKnowledgeBase::GetTypes ()
{
  //## begin CKnowledgeBase::GetTypes%3BE219D4000B.get preserve=no
  return m_pTypes;
  //## end CKnowledgeBase::GetTypes%3BE219D4000B.get
}

inline void CKnowledgeBase::SetTypes (CTypeHierarchy* value)
{
  //## begin CKnowledgeBase::SetTypes%3BE219D4000B.set preserve=no
  m_pTypes = value;

  ACConstruct *pConstruct = dynamic_cast<ACConstruct*> (value);

  if(pConstruct)
  {
	  pConstruct->SetParent(this);
  }
  //## end CKnowledgeBase::SetTypes%3BE219D4000B.set
}

inline CRelationHierarchy* CKnowledgeBase::GetRelations ()
{
  //## begin CKnowledgeBase::GetRelations%3BE21AF1010F.get preserve=no
  return m_pRelations;
  //## end CKnowledgeBase::GetRelations%3BE21AF1010F.get
}

inline void CKnowledgeBase::SetRelations (CRelationHierarchy* value)
{
  //## begin CKnowledgeBase::SetRelations%3BE21AF1010F.set preserve=no
  m_pRelations = value;

  ACConstruct *pConstruct = dynamic_cast<ACConstruct*> (value);

  if(pConstruct)
  {
	  pConstruct->SetParent(this);
  }
  //## end CKnowledgeBase::SetRelations%3BE21AF1010F.set
}

inline CCatalogOfIndividuals* CKnowledgeBase::GetCOI ()
{
  //## begin CKnowledgeBase::GetCOI%3BE21B00016B.get preserve=no
  return m_pCOI;
  //## end CKnowledgeBase::GetCOI%3BE21B00016B.get
}

inline void CKnowledgeBase::SetCOI (CCatalogOfIndividuals* value)
{
  //## begin CKnowledgeBase::SetCOI%3BE21B00016B.set preserve=no
  m_pCOI = value;

  ACConstruct *pConstruct = dynamic_cast<ACConstruct*> (value);

  if(pConstruct)
  {
	  pConstruct->SetParent(this);
  }
  //## end CKnowledgeBase::SetCOI%3BE21B00016B.set
}

inline CSheetOfAssertion* CKnowledgeBase::GetSOA ()
{
  //## begin CKnowledgeBase::GetSOA%3BE21B130317.get preserve=no
  return m_pSOA;
  //## end CKnowledgeBase::GetSOA%3BE21B130317.get
}

inline void CKnowledgeBase::SetSOA (CSheetOfAssertion* value)
{
  //## begin CKnowledgeBase::SetSOA%3BE21B130317.set preserve=no
  m_pSOA = value;

  ACConstruct *pConstruct = dynamic_cast<ACConstruct*> (value);

  if(pConstruct)
  {
	  pConstruct->SetParent(this);
  }
  //## end CKnowledgeBase::SetSOA%3BE21B130317.set
}

//## begin module%3BD773CE0141.epilog preserve=yes
//## end module%3BD773CE0141.epilog


#endif
