/*****************************************************************************
FILE:               Oracle7Context.h
LANGUAGE:           Objective-C
SYSTEM:             GNUstep
USER-INTERFACE:     None
DESCRIPTION

    This class is the GNUstep/db context to the Oracle7 databases.
    Its implementation is based on the OCI v8, and should be compatible
    with, both Oracle7, Oracle8 and future Oracle9 databases.

AUTHORS
    <PJB> Pascal J. Bourguignon <pjb@imaginet.fr>
MODIFICATIONS
    1999/07/24 Creation.
BUGS
    - ...
LEGAL
    Written by:  Pascal J. Bourguignon <pjb@imaginet.fr>
    Funds from:  Orange Concept (http://www.orange-concept.com/)
    Date:        August 1999 - February 2000

    This file is part of the Oracle7 Adaptor, GNUstep Database Library.
    The Oracle7 Adaptor allows access to Oracle[678] databases from GDL.

    Copyright (C) 2000 Free Software Foundation, Inc.

    This  library is  free software;  you can  redistribute  it and/or
    modify it under the terms of the GNU Lesser General Public License
    as published by the Free  Software Foundation; either version 2 of
    the License, or (at your option) any later version.

    This library  is distributed in the  hope that it  will be useful,
    but  WITHOUT ANY WARRANTY;  without even  the implied  warranty of
    MERCHANTABILITY or FITNESS FOR  A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have  received a copy of the  GNU Lesser General Public
    License  along  with this  library;  if  not,  write to  the  Free
    Software  Foundation, Inc.,  59 Temple  Place, Suite  330, Boston,
    MA 02111-1307 USA
*****************************************************************************/
#ifndef __Oracle7Context_h__
#define __Oracle7Context_h__

#include <eoaccess/eoaccess.h>  // Let's leave  the  compiler  handle 
                                // intelligently pre-compiled headers!
#include <Oracle7Adaptor.h>
@class O2CI7Context; // is a private class.

// exceptions:
extern NSString* Oracle7Context_eInvalidAdaptor;


@interface Oracle7Context:EOAdaptorContext
{
    O2CI7Context*       ociContext;
    int                 numOpenChannels;
}

// NSObject methods:

    -(id)init;
        /*
            RAISE:      Oracle7Adaptor_eBadInitializer.
            SEE-ALSO:   -[Oracle7Adaptor createAdaptorContext].
            SEE-ALSO:   -[Oracle7Context initWithAdaptor:].
            NOTE:       The designated initializer is initWithAdaptor:.
        */

    -(void)dealloc;


// EOAdaptorContext methods:

    -(id)initWithAdaptor:(EOAdaptor*)adaptor;
        /*
            PRE:        [adaptor isKindOfClass:[Oracle7Adaptor class]].
            RAISE:      Oracle7Context_eInvalidAdaptor.
        */


    -(EOAdaptorChannel*)createAdaptorChannel;
    -(BOOL)canNestTransactions;
    -(BOOL)primaryBeginTransaction;
    -(BOOL)primaryCommitTransaction;
    -(BOOL)primaryRollbackTransaction;


// Oracle7Context methods:

    // None. What would be the purpose of an EO adaptor layer if each and every
    // one EOAdaptorContext subclass would add it's own specific methods?
    // Let the client use only the EOAdaptorContext API to access "portably" 
    // our database.



@end // Oracle7Context;


#endif /* __Oracle7Context_h__ */
/*** Oracle7Context.h                 -- 2000-02-21 07:11:23 -- PJB ***/
