#ifndef ace_impl_h
#define ace_impl_h

#include <OB/CORBA.h>
extern"C"{
#include <acelib.h>
}
#include "ace_skel.h"

class Ace_Impl : public AceView_AceDB_skel {
public:
  CORBA_Boolean aceInit(const char* path);
  CORBA_Boolean aceGetWriteAccess( CORBA_Boolean get );
  CORBA_Boolean aceForbidWriteAccess();
  CORBA_Boolean aceOpen(const char* client_signature );
  CORBA_Boolean aceClose( CORBA_Boolean autoCommit );
  //CORBA_Boolean aceWriteLock();
  CORBA_Boolean aceCommit(CORBA_Boolean releaseLock);
  AceView_AceHandle aceHandleCreate( AceView_AceHandle h );
  CORBA_Boolean aceFree(void* p);
  AceView_AceStringList* aceClasses( AceView_AceHandle h );
  CORBA_Long aceClassSize(const char* classname);
  AceView_AceInstance* aceModel( const char* classname, AceView_AceHandle h );
//  CORBA_Boolean aceReadModels();
  char* aceName(AceView_AceKeyxxx anyKey, AceView_AceHandle h );
  char* aceClassName(AceView_AceKeyxxx anyKey, AceView_AceHandle h );
  char* aceComposeName(const char* classname,
			const char* instance, AceView_AceHandle h );
  AceView_AceTag aceTag(const char* anyString,
			  CORBA_Boolean create);
  AceView_AceKeyxxx aceKey(const char* instanceName,
			  CORBA_Boolean create);
  AceView_AceKeySet* aceQuery( const char* query, AceView_AceHandle h );
//  AceView_AceKeySet* aceFilterKeys( AceView_AceKeySet* src, const char* predicate, AceView_AceHandle h );
  AceView_AceKeyxxx aceKeyOfInstance(const char* anyInstance);
  //AceView_AceKeyset* aceClassExtent(const char* classname);
private:
  Ace* theAceContext;
};

#endif

