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

#ifndef ACCGFACTORY_H
#define ACCGFACTORY_H

#include "CGEngine/CKnowledgeBase.h"
#include "CGEngine/CTypeHierarchy.h"
#include "CGEngine/CTypeDefinition.h"
#include "CGEngine/CRelationHierarchy.h"
#include "CGEngine/CRelationDefinition.h"
#include "CGEngine/CCatalogOfIndividuals.h"
#include "CGEngine/CSheetOfAssertion.h"
#include "CGEngine/CConcept.h"
#include "CGEngine/CRelation.h"

class ACCGFactory
{
public:
	virtual CKnowledgeBase* NewKnowledgeBase () = 0;
	virtual CTypeHierarchy* NewTypeHierarchy () = 0;
	virtual CTypeDefinition* NewTypeDefinition (std::string name) = 0;
	virtual CRelationHierarchy* NewRelationHierarchy () = 0;
	virtual CRelationDefinition* NewRelationDefinition (std::string name) = 0;
	virtual CCatalogOfIndividuals* NewCatalogOfIndividuals () = 0;
	virtual CSheetOfAssertion* NewSheetOfAssertion () = 0;
	virtual CConcept* NewConcept () = 0;
	virtual CRelation* NewRelation () = 0;
};

#endif // ACCGFACTORY_H