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

//## 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%3BE3675F01F7.cm preserve=no
//	  %X% %Q% %Z% %W%
//## end module%3BE3675F01F7.cm

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

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

#ifndef CCoreferentSet_h
#define CCoreferentSet_h 1

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

//## begin module%3BE3675F01F7.includes preserve=yes
//## end module%3BE3675F01F7.includes

// ACConstruct
#include "CGEngine\ACConstruct.h"
//## begin module%3BE3675F01F7.additionalDeclarations preserve=yes
#include <string>
#include <vector>
//## end module%3BE3675F01F7.additionalDeclarations


//## begin CCoreferentSet%3BE3675F01F7.preface preserve=yes
class Concept;
//## end CCoreferentSet%3BE3675F01F7.preface

//## Class: CCoreferentSet%3BE3675F01F7
//	The CCoreferentSet class maintains the mapping between
//	the multiple Concept instances that are in a coreferent
//	set.
//## Category: CGEngine%3BD772CB008A
//## Persistence: Transient
//## Cardinality/Multiplicity: n



class CCoreferentSet : public ACConstruct  //## Inherits: <unnamed>%3BE3677300B5
{
  //## begin CCoreferentSet%3BE3675F01F7.initialDeclarations preserve=yes
  //## end CCoreferentSet%3BE3675F01F7.initialDeclarations

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

      CCoreferentSet(const CCoreferentSet &right);

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

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

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

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


    //## Other Operations (specified)
      //## Operation: Add_Concept%3BE367D100D9
      //	The Add_Concept method adds a Concept to the Coreferent_
      //	Set.
      void Add_Concept (ACConstruct* Concept);

    // Additional Public Declarations
      //## begin CCoreferentSet%3BE3675F01F7.public preserve=yes
      //## end CCoreferentSet%3BE3675F01F7.public

  protected:
    // Additional Protected Declarations
      //## begin CCoreferentSet%3BE3675F01F7.protected preserve=yes
      //## end CCoreferentSet%3BE3675F01F7.protected

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

      //## Attribute: m_label%3BE36790019D
      const std::string get_label () const;
      void set_label (std::string value);

      //## Attribute: m_concept_vector%3BE367A103DD
      const std::vector<Concept*> get_concept_vector () const;
      void set_concept_vector (std::vector<Concept*> value);

    // Additional Private Declarations
      //## begin CCoreferentSet%3BE3675F01F7.private preserve=yes
      //## end CCoreferentSet%3BE3675F01F7.private

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

      //## begin CCoreferentSet::m_label%3BE36790019D.attr preserve=no  private: std::string {U} 
      std::string m_label;
      //## end CCoreferentSet::m_label%3BE36790019D.attr

      //## begin CCoreferentSet::m_concept_vector%3BE367A103DD.attr preserve=no  private: std::vector<Concept*> {U} 
      std::vector<Concept*> m_concept_vector;
      //## end CCoreferentSet::m_concept_vector%3BE367A103DD.attr

    // Additional Implementation Declarations
      //## begin CCoreferentSet%3BE3675F01F7.implementation preserve=yes
      //## end CCoreferentSet%3BE3675F01F7.implementation

};

//## begin CCoreferentSet%3BE3675F01F7.postscript preserve=yes
//## end CCoreferentSet%3BE3675F01F7.postscript

// Class CCoreferentSet 

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

inline const std::string CCoreferentSet::get_label () const
{
  //## begin CCoreferentSet::get_label%3BE36790019D.get preserve=no
  return m_label;
  //## end CCoreferentSet::get_label%3BE36790019D.get
}

inline void CCoreferentSet::set_label (std::string value)
{
  //## begin CCoreferentSet::set_label%3BE36790019D.set preserve=no
  m_label = value;
  //## end CCoreferentSet::set_label%3BE36790019D.set
}

inline const std::vector<Concept*> CCoreferentSet::get_concept_vector () const
{
  //## begin CCoreferentSet::get_concept_vector%3BE367A103DD.get preserve=no
  return m_concept_vector;
  //## end CCoreferentSet::get_concept_vector%3BE367A103DD.get
}

inline void CCoreferentSet::set_concept_vector (std::vector<Concept*> value)
{
  //## begin CCoreferentSet::set_concept_vector%3BE367A103DD.set preserve=no
  m_concept_vector = value;
  //## end CCoreferentSet::set_concept_vector%3BE367A103DD.set
}

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


#endif
