// This file is generated by omniidl (C++ backend)- omniORB_4_1. Do not edit.
#ifndef __OCSCorbaDrama_hh__
#define __OCSCorbaDrama_hh__

#ifndef __CORBA_H_EXTERNAL_GUARD__
#include <omniORB4/CORBA.h>
#endif

#ifndef  USE_stub_in_nt_dll
# define USE_stub_in_nt_dll_NOT_DEFINED_OCSCorbaDrama
#endif
#ifndef  USE_core_stub_in_nt_dll
# define USE_core_stub_in_nt_dll_NOT_DEFINED_OCSCorbaDrama
#endif
#ifndef  USE_dyn_stub_in_nt_dll
# define USE_dyn_stub_in_nt_dll_NOT_DEFINED_OCSCorbaDrama
#endif






#ifdef USE_stub_in_nt_dll
# ifndef USE_core_stub_in_nt_dll
#  define USE_core_stub_in_nt_dll
# endif
# ifndef USE_dyn_stub_in_nt_dll
#  define USE_dyn_stub_in_nt_dll
# endif
#endif

#ifdef _core_attr
# error "A local CPP macro _core_attr has already been defined."
#else
# ifdef  USE_core_stub_in_nt_dll
#  define _core_attr _OMNIORB_NTDLL_IMPORT
# else
#  define _core_attr
# endif
#endif

#ifdef _dyn_attr
# error "A local CPP macro _dyn_attr has already been defined."
#else
# ifdef  USE_dyn_stub_in_nt_dll
#  define _dyn_attr _OMNIORB_NTDLL_IMPORT
# else
#  define _dyn_attr
# endif
#endif





_CORBA_MODULE OCSCorbaDrama

_CORBA_MODULE_BEG

#ifndef __OCSCorbaDrama_mTCSInterface__
#define __OCSCorbaDrama_mTCSInterface__

  class TCSInterface;
  class _objref_TCSInterface;
  class _impl_TCSInterface;
  
  typedef _objref_TCSInterface* TCSInterface_ptr;
  typedef TCSInterface_ptr TCSInterfaceRef;

  class TCSInterface_Helper {
  public:
    typedef TCSInterface_ptr _ptr_type;

    static _ptr_type _nil();
    static _CORBA_Boolean is_nil(_ptr_type);
    static void release(_ptr_type);
    static void duplicate(_ptr_type);
    static void marshalObjRef(_ptr_type, cdrStream&);
    static _ptr_type unmarshalObjRef(cdrStream&);
  };

  typedef _CORBA_ObjRef_Var<_objref_TCSInterface, TCSInterface_Helper> TCSInterface_var;
  typedef _CORBA_ObjRef_OUT_arg<_objref_TCSInterface,TCSInterface_Helper > TCSInterface_out;

#endif

  // interface TCSInterface
  class TCSInterface {
  public:
    // Declarations for this interface type.
    typedef TCSInterface_ptr _ptr_type;
    typedef TCSInterface_var _var_type;

    static _ptr_type _duplicate(_ptr_type);
    static _ptr_type _narrow(::CORBA::Object_ptr);
    static _ptr_type _unchecked_narrow(::CORBA::Object_ptr);
    
    static _ptr_type _nil();

    static inline void _marshalObjRef(_ptr_type, cdrStream&);

    static inline _ptr_type _unmarshalObjRef(cdrStream& s) {
      omniObjRef* o = omniObjRef::_unMarshal(_PD_repoId,s);
      if (o)
        return (_ptr_type) o->_ptrToObjRef(_PD_repoId);
      else
        return _nil();
    }

    static _core_attr const char* _PD_repoId;

    // Other IDL defined within this scope.
    enum AutoguiderState { ON, OFF, SUSPEND, RESUME, CENTRE /*, __max_AutoguiderState=0xffffffff */ };
    typedef AutoguiderState& AutoguiderState_out;

    static _dyn_attr const ::CORBA::TypeCode_ptr _tc_AutoguiderState;

    enum OffsetMode { ARC, TIME /*, __max_OffsetMode=0xffffffff */ };
    typedef OffsetMode& OffsetMode_out;

    static _dyn_attr const ::CORBA::TypeCode_ptr _tc_OffsetMode;

    enum RotatorMode { SKY, MOUNT, FLOATING, VERTICAL, VFLOAT /*, __max_RotatorMode=0xffffffff */ };
    typedef RotatorMode& RotatorMode_out;

    static _dyn_attr const ::CORBA::TypeCode_ptr _tc_RotatorMode;

    enum SlowoffsetModes { ABS, ADD /*, __max_SlowoffsetModes=0xffffffff */ };
    typedef SlowoffsetModes& SlowoffsetModes_out;

    static _dyn_attr const ::CORBA::TypeCode_ptr _tc_SlowoffsetModes;

    class UnableToPerformTCSAction : public ::CORBA::UserException {
    public:
      
      ::CORBA::String_member Reason;

    

      inline UnableToPerformTCSAction() {
        pd_insertToAnyFn    = insertToAnyFn;
        pd_insertToAnyFnNCP = insertToAnyFnNCP;
      }
      UnableToPerformTCSAction(const UnableToPerformTCSAction&);
      UnableToPerformTCSAction(const char* i_Reason);
      UnableToPerformTCSAction& operator=(const UnableToPerformTCSAction&);
      virtual ~UnableToPerformTCSAction();
      virtual void _raise() const;
      static UnableToPerformTCSAction* _downcast(::CORBA::Exception*);
      static const UnableToPerformTCSAction* _downcast(const ::CORBA::Exception*);
      static inline UnableToPerformTCSAction* _narrow(::CORBA::Exception* _e) {
        return _downcast(_e);
      }
      
      void operator>>=(cdrStream&) const ;
      void operator<<=(cdrStream&) ;

      static _core_attr insertExceptionToAny    insertToAnyFn;
      static _core_attr insertExceptionToAnyNCP insertToAnyFnNCP;

      virtual ::CORBA::Exception* _NP_duplicate() const;

      static _core_attr const char* _PD_repoId;
      static _core_attr const char* _PD_typeId;

    private:
      virtual const char* _NP_typeId() const;
      virtual const char* _NP_repoId(int*) const;
      virtual void _NP_marshal(cdrStream&) const;
    };

    static _dyn_attr const ::CORBA::TypeCode_ptr _tc_UnableToPerformTCSAction;

    class UnableToCancelTCSAction : public ::CORBA::UserException {
    public:
      
      ::CORBA::String_member Reason;

    

      inline UnableToCancelTCSAction() {
        pd_insertToAnyFn    = insertToAnyFn;
        pd_insertToAnyFnNCP = insertToAnyFnNCP;
      }
      UnableToCancelTCSAction(const UnableToCancelTCSAction&);
      UnableToCancelTCSAction(const char* i_Reason);
      UnableToCancelTCSAction& operator=(const UnableToCancelTCSAction&);
      virtual ~UnableToCancelTCSAction();
      virtual void _raise() const;
      static UnableToCancelTCSAction* _downcast(::CORBA::Exception*);
      static const UnableToCancelTCSAction* _downcast(const ::CORBA::Exception*);
      static inline UnableToCancelTCSAction* _narrow(::CORBA::Exception* _e) {
        return _downcast(_e);
      }
      
      void operator>>=(cdrStream&) const ;
      void operator<<=(cdrStream&) ;

      static _core_attr insertExceptionToAny    insertToAnyFn;
      static _core_attr insertExceptionToAnyNCP insertToAnyFnNCP;

      virtual ::CORBA::Exception* _NP_duplicate() const;

      static _core_attr const char* _PD_repoId;
      static _core_attr const char* _PD_typeId;

    private:
      virtual const char* _NP_typeId() const;
      virtual const char* _NP_repoId(int*) const;
      virtual void _NP_marshal(cdrStream&) const;
    };

    static _dyn_attr const ::CORBA::TypeCode_ptr _tc_UnableToCancelTCSAction;

    class UnableToGetTCSData : public ::CORBA::UserException {
    public:
      
      ::CORBA::String_member Reason;

    

      inline UnableToGetTCSData() {
        pd_insertToAnyFn    = insertToAnyFn;
        pd_insertToAnyFnNCP = insertToAnyFnNCP;
      }
      UnableToGetTCSData(const UnableToGetTCSData&);
      UnableToGetTCSData(const char* i_Reason);
      UnableToGetTCSData& operator=(const UnableToGetTCSData&);
      virtual ~UnableToGetTCSData();
      virtual void _raise() const;
      static UnableToGetTCSData* _downcast(::CORBA::Exception*);
      static const UnableToGetTCSData* _downcast(const ::CORBA::Exception*);
      static inline UnableToGetTCSData* _narrow(::CORBA::Exception* _e) {
        return _downcast(_e);
      }
      
      void operator>>=(cdrStream&) const ;
      void operator<<=(cdrStream&) ;

      static _core_attr insertExceptionToAny    insertToAnyFn;
      static _core_attr insertExceptionToAnyNCP insertToAnyFnNCP;

      virtual ::CORBA::Exception* _NP_duplicate() const;

      static _core_attr const char* _PD_repoId;
      static _core_attr const char* _PD_typeId;

    private:
      virtual const char* _NP_typeId() const;
      virtual const char* _NP_repoId(int*) const;
      virtual void _NP_marshal(cdrStream&) const;
    };

    static _dyn_attr const ::CORBA::TypeCode_ptr _tc_UnableToGetTCSData;

    class UnableToSetTelescopeFocus : public ::CORBA::UserException {
    public:
      
      ::CORBA::String_member Reason;

    

      inline UnableToSetTelescopeFocus() {
        pd_insertToAnyFn    = insertToAnyFn;
        pd_insertToAnyFnNCP = insertToAnyFnNCP;
      }
      UnableToSetTelescopeFocus(const UnableToSetTelescopeFocus&);
      UnableToSetTelescopeFocus(const char* i_Reason);
      UnableToSetTelescopeFocus& operator=(const UnableToSetTelescopeFocus&);
      virtual ~UnableToSetTelescopeFocus();
      virtual void _raise() const;
      static UnableToSetTelescopeFocus* _downcast(::CORBA::Exception*);
      static const UnableToSetTelescopeFocus* _downcast(const ::CORBA::Exception*);
      static inline UnableToSetTelescopeFocus* _narrow(::CORBA::Exception* _e) {
        return _downcast(_e);
      }
      
      void operator>>=(cdrStream&) const ;
      void operator<<=(cdrStream&) ;

      static _core_attr insertExceptionToAny    insertToAnyFn;
      static _core_attr insertExceptionToAnyNCP insertToAnyFnNCP;

      virtual ::CORBA::Exception* _NP_duplicate() const;

      static _core_attr const char* _PD_repoId;
      static _core_attr const char* _PD_typeId;

    private:
      virtual const char* _NP_typeId() const;
      virtual const char* _NP_repoId(int*) const;
      virtual void _NP_marshal(cdrStream&) const;
    };

    static _dyn_attr const ::CORBA::TypeCode_ptr _tc_UnableToSetTelescopeFocus;

    struct TCSData {
      typedef _CORBA_ConstrType_Variable_Var<TCSData> _var_type;

      
      ::CORBA::Double mjd;

      ::CORBA::Double ra;

      ::CORBA::Double dec;

      ::CORBA::Double equinox;

      ::CORBA::String_member coordType;

      ::CORBA::Double alt;

      ::CORBA::Double altErr;

      ::CORBA::Double az;

      ::CORBA::Double azErr;

      ::CORBA::Double rot;

      ::CORBA::Double roterr;

      ::CORBA::Double parallactic;

      ::CORBA::Double focus;

      ::CORBA::Double azDome;

      ::CORBA::Double airMass;

      ::CORBA::Double xApNom;

      ::CORBA::Double yApNom;

      ::CORBA::Double xApOff;

      ::CORBA::Double yApOff;

      ::CORBA::Double raOff;

      ::CORBA::Double decOff;

      ::CORBA::Double skyPa;

      ::CORBA::String_member rotMode;

      ::CORBA::Double guideX;

      ::CORBA::Double guideY;

      ::CORBA::String_member guiMode;

      ::CORBA::Double telTemp;

      ::CORBA::Long vignette;

      ::CORBA::String_member last;

      ::CORBA::String_member telstat;

      ::CORBA::String_member RAHHMMSS;

      ::CORBA::String_member DECDDMMSS;

      ::CORBA::String_member RotModeDecoded;

      ::CORBA::String_member SourceName;

      ::CORBA::String_member SourceRA;

      ::CORBA::String_member SourceDEC;

      ::CORBA::Double SourceDiffRA;

      ::CORBA::Double SourceDiffDec;

      ::CORBA::String_member SourceEquinox;

      ::CORBA::String_member SourceProperRa;

      ::CORBA::String_member SourceProperDec;

      ::CORBA::String_member SourceEpoch;

      ::CORBA::String_member SourceParallax;

      ::CORBA::String_member SourceRadVel;

      ::CORBA::String_member SourceCoordType;

      ::CORBA::String_member SourceRAHHMMSS;

      ::CORBA::String_member SourceDECDDMMSS;

      ::CORBA::String_member FocalStation;

    

      void operator>>= (cdrStream &) const;
      void operator<<= (cdrStream &);
    };

    typedef TCSData::_var_type TCSData_var;

    typedef _CORBA_ConstrType_Variable_OUT_arg< TCSData,TCSData_var > TCSData_out;

    static _dyn_attr const ::CORBA::TypeCode_ptr _tc_TCSData;

    struct TCSTarget {
      typedef _CORBA_ConstrType_Variable_Var<TCSTarget> _var_type;

      
      ::CORBA::String_member name;

      ::CORBA::Double ra;

      ::CORBA::Double dec;

      ::CORBA::Char coordType;

      ::CORBA::Double equinox;

    

      void operator>>= (cdrStream &) const;
      void operator<<= (cdrStream &);
    };

    typedef TCSTarget::_var_type TCSTarget_var;

    typedef _CORBA_ConstrType_Variable_OUT_arg< TCSTarget,TCSTarget_var > TCSTarget_out;

    static _dyn_attr const ::CORBA::TypeCode_ptr _tc_TCSTarget;

  
  };

  class _objref_TCSInterface :
    public virtual ::CORBA::Object,
    public virtual omniObjRef
  {
  public:
    TCSInterface::TCSData* getTCSStatusData();
    ::CORBA::Boolean setTelescopeFocus(::CORBA::Double DemandedFocusPositionMM);
    ::CORBA::Boolean setTelescopeFocusAbsolute(::CORBA::Double DemandedFocusPositionMM);
    ::CORBA::Boolean setGuidingStatus(::OCSCorbaDrama::TCSInterface::AutoguiderState GuideState, ::CORBA::Double X, ::CORBA::Double Y, ::CORBA::Double EWGain, ::CORBA::Double NSGain);
    ::CORBA::Boolean setGuidingSkips(::CORBA::ULong Skips);
    ::CORBA::Boolean slowOffset(::CORBA::Double X, ::CORBA::Double Y, ::CORBA::Double SlewRate, ::OCSCorbaDrama::TCSInterface::SlowoffsetModes SlowOffsetMode);
    ::CORBA::Boolean rotator(::OCSCorbaDrama::TCSInterface::RotatorMode RotationType, ::CORBA::Double MountAngleDegrees);
    ::CORBA::Boolean gocat(const char* Source);
    ::CORBA::Boolean gotoTarget(const ::OCSCorbaDrama::TCSInterface::TCSTarget& Target);
    ::CORBA::Boolean offset(::OCSCorbaDrama::TCSInterface::OffsetMode Mode, ::CORBA::Double DeltaRARadians, ::CORBA::Double DeltaDecRadians);
    ::CORBA::Boolean laserLimitState(::CORBA::Boolean Enabled);
    ::CORBA::Boolean tweak(::CORBA::Double xOffset, ::CORBA::Double yOffset, ::CORBA::Double rotation);
    ::CORBA::Boolean addSource();
    ::CORBA::Boolean cancelGotoTarget();
    ::CORBA::Boolean dither(::CORBA::Double raOffset, ::CORBA::Double decOffset);
    ::CORBA::Boolean probe(::CORBA::Double radial_x, ::CORBA::Double radial_y);

    inline _objref_TCSInterface()  { _PR_setobj(0); }  // nil
    _objref_TCSInterface(omniIOR*, omniIdentity*);

  protected:
    virtual ~_objref_TCSInterface();

    
  private:
    virtual void* _ptrToObjRef(const char*);

    _objref_TCSInterface(const _objref_TCSInterface&);
    _objref_TCSInterface& operator = (const _objref_TCSInterface&);
    // not implemented

    friend class TCSInterface;
  };

  class _pof_TCSInterface : public _OMNI_NS(proxyObjectFactory) {
  public:
    inline _pof_TCSInterface() : _OMNI_NS(proxyObjectFactory)(TCSInterface::_PD_repoId) {}
    virtual ~_pof_TCSInterface();

    virtual omniObjRef* newObjRef(omniIOR*,omniIdentity*);
    virtual _CORBA_Boolean is_a(const char*) const;
  };

  class _impl_TCSInterface :
    public virtual omniServant
  {
  public:
    virtual ~_impl_TCSInterface();

    virtual TCSInterface::TCSData* getTCSStatusData() = 0;
    virtual ::CORBA::Boolean setTelescopeFocus(::CORBA::Double DemandedFocusPositionMM) = 0;
    virtual ::CORBA::Boolean setTelescopeFocusAbsolute(::CORBA::Double DemandedFocusPositionMM) = 0;
    virtual ::CORBA::Boolean setGuidingStatus(::OCSCorbaDrama::TCSInterface::AutoguiderState GuideState, ::CORBA::Double X, ::CORBA::Double Y, ::CORBA::Double EWGain, ::CORBA::Double NSGain) = 0;
    virtual ::CORBA::Boolean setGuidingSkips(::CORBA::ULong Skips) = 0;
    virtual ::CORBA::Boolean slowOffset(::CORBA::Double X, ::CORBA::Double Y, ::CORBA::Double SlewRate, ::OCSCorbaDrama::TCSInterface::SlowoffsetModes SlowOffsetMode) = 0;
    virtual ::CORBA::Boolean rotator(::OCSCorbaDrama::TCSInterface::RotatorMode RotationType, ::CORBA::Double MountAngleDegrees) = 0;
    virtual ::CORBA::Boolean gocat(const char* Source) = 0;
    virtual ::CORBA::Boolean gotoTarget(const ::OCSCorbaDrama::TCSInterface::TCSTarget& Target) = 0;
    virtual ::CORBA::Boolean offset(::OCSCorbaDrama::TCSInterface::OffsetMode Mode, ::CORBA::Double DeltaRARadians, ::CORBA::Double DeltaDecRadians) = 0;
    virtual ::CORBA::Boolean laserLimitState(::CORBA::Boolean Enabled) = 0;
    virtual ::CORBA::Boolean tweak(::CORBA::Double xOffset, ::CORBA::Double yOffset, ::CORBA::Double rotation) = 0;
    virtual ::CORBA::Boolean addSource() = 0;
    virtual ::CORBA::Boolean cancelGotoTarget() = 0;
    virtual ::CORBA::Boolean dither(::CORBA::Double raOffset, ::CORBA::Double decOffset) = 0;
    virtual ::CORBA::Boolean probe(::CORBA::Double radial_x, ::CORBA::Double radial_y) = 0;
    
  public:  // Really protected, workaround for xlC
    virtual _CORBA_Boolean _dispatch(omniCallHandle&);

  private:
    virtual void* _ptrToInterface(const char*);
    virtual const char* _mostDerivedRepoId();
    
  };


  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_TCSInterface;

#ifndef __OCSCorbaDrama_mUDASInterface__
#define __OCSCorbaDrama_mUDASInterface__

  class UDASInterface;
  class _objref_UDASInterface;
  class _impl_UDASInterface;
  
  typedef _objref_UDASInterface* UDASInterface_ptr;
  typedef UDASInterface_ptr UDASInterfaceRef;

  class UDASInterface_Helper {
  public:
    typedef UDASInterface_ptr _ptr_type;

    static _ptr_type _nil();
    static _CORBA_Boolean is_nil(_ptr_type);
    static void release(_ptr_type);
    static void duplicate(_ptr_type);
    static void marshalObjRef(_ptr_type, cdrStream&);
    static _ptr_type unmarshalObjRef(cdrStream&);
  };

  typedef _CORBA_ObjRef_Var<_objref_UDASInterface, UDASInterface_Helper> UDASInterface_var;
  typedef _CORBA_ObjRef_OUT_arg<_objref_UDASInterface,UDASInterface_Helper > UDASInterface_out;

#endif

  // interface UDASInterface
  class UDASInterface {
  public:
    // Declarations for this interface type.
    typedef UDASInterface_ptr _ptr_type;
    typedef UDASInterface_var _var_type;

    static _ptr_type _duplicate(_ptr_type);
    static _ptr_type _narrow(::CORBA::Object_ptr);
    static _ptr_type _unchecked_narrow(::CORBA::Object_ptr);
    
    static _ptr_type _nil();

    static inline void _marshalObjRef(_ptr_type, cdrStream&);

    static inline _ptr_type _unmarshalObjRef(cdrStream& s) {
      omniObjRef* o = omniObjRef::_unMarshal(_PD_repoId,s);
      if (o)
        return (_ptr_type) o->_ptrToObjRef(_PD_repoId);
      else
        return _nil();
    }

    static _core_attr const char* _PD_repoId;

    // Other IDL defined within this scope.
    class UnableToPerformMerit : public ::CORBA::UserException {
    public:
      
      ::CORBA::String_member Reason;

    

      inline UnableToPerformMerit() {
        pd_insertToAnyFn    = insertToAnyFn;
        pd_insertToAnyFnNCP = insertToAnyFnNCP;
      }
      UnableToPerformMerit(const UnableToPerformMerit&);
      UnableToPerformMerit(const char* i_Reason);
      UnableToPerformMerit& operator=(const UnableToPerformMerit&);
      virtual ~UnableToPerformMerit();
      virtual void _raise() const;
      static UnableToPerformMerit* _downcast(::CORBA::Exception*);
      static const UnableToPerformMerit* _downcast(const ::CORBA::Exception*);
      static inline UnableToPerformMerit* _narrow(::CORBA::Exception* _e) {
        return _downcast(_e);
      }
      
      void operator>>=(cdrStream&) const ;
      void operator<<=(cdrStream&) ;

      static _core_attr insertExceptionToAny    insertToAnyFn;
      static _core_attr insertExceptionToAnyNCP insertToAnyFnNCP;

      virtual ::CORBA::Exception* _NP_duplicate() const;

      static _core_attr const char* _PD_repoId;
      static _core_attr const char* _PD_typeId;

    private:
      virtual const char* _NP_typeId() const;
      virtual const char* _NP_repoId(int*) const;
      virtual void _NP_marshal(cdrStream&) const;
    };

    static _dyn_attr const ::CORBA::TypeCode_ptr _tc_UnableToPerformMerit;

    class UnableToMoveShutter : public ::CORBA::UserException {
    public:
      
      ::CORBA::String_member Reason;

    

      inline UnableToMoveShutter() {
        pd_insertToAnyFn    = insertToAnyFn;
        pd_insertToAnyFnNCP = insertToAnyFnNCP;
      }
      UnableToMoveShutter(const UnableToMoveShutter&);
      UnableToMoveShutter(const char* i_Reason);
      UnableToMoveShutter& operator=(const UnableToMoveShutter&);
      virtual ~UnableToMoveShutter();
      virtual void _raise() const;
      static UnableToMoveShutter* _downcast(::CORBA::Exception*);
      static const UnableToMoveShutter* _downcast(const ::CORBA::Exception*);
      static inline UnableToMoveShutter* _narrow(::CORBA::Exception* _e) {
        return _downcast(_e);
      }
      
      void operator>>=(cdrStream&) const ;
      void operator<<=(cdrStream&) ;

      static _core_attr insertExceptionToAny    insertToAnyFn;
      static _core_attr insertExceptionToAnyNCP insertToAnyFnNCP;

      virtual ::CORBA::Exception* _NP_duplicate() const;

      static _core_attr const char* _PD_repoId;
      static _core_attr const char* _PD_typeId;

    private:
      virtual const char* _NP_typeId() const;
      virtual const char* _NP_repoId(int*) const;
      virtual void _NP_marshal(cdrStream&) const;
    };

    static _dyn_attr const ::CORBA::TypeCode_ptr _tc_UnableToMoveShutter;

    class UnableToPerformIntegration : public ::CORBA::UserException {
    public:
      
      ::CORBA::String_member Reason;

    

      inline UnableToPerformIntegration() {
        pd_insertToAnyFn    = insertToAnyFn;
        pd_insertToAnyFnNCP = insertToAnyFnNCP;
      }
      UnableToPerformIntegration(const UnableToPerformIntegration&);
      UnableToPerformIntegration(const char* i_Reason);
      UnableToPerformIntegration& operator=(const UnableToPerformIntegration&);
      virtual ~UnableToPerformIntegration();
      virtual void _raise() const;
      static UnableToPerformIntegration* _downcast(::CORBA::Exception*);
      static const UnableToPerformIntegration* _downcast(const ::CORBA::Exception*);
      static inline UnableToPerformIntegration* _narrow(::CORBA::Exception* _e) {
        return _downcast(_e);
      }
      
      void operator>>=(cdrStream&) const ;
      void operator<<=(cdrStream&) ;

      static _core_attr insertExceptionToAny    insertToAnyFn;
      static _core_attr insertExceptionToAnyNCP insertToAnyFnNCP;

      virtual ::CORBA::Exception* _NP_duplicate() const;

      static _core_attr const char* _PD_repoId;
      static _core_attr const char* _PD_typeId;

    private:
      virtual const char* _NP_typeId() const;
      virtual const char* _NP_repoId(int*) const;
      virtual void _NP_marshal(cdrStream&) const;
    };

    static _dyn_attr const ::CORBA::TypeCode_ptr _tc_UnableToPerformIntegration;

    enum IntegrationType { SCRATCH, RUN, FLASH, ARC, GLANCE, BIAS, DARK /*, __max_IntegrationType=0xffffffff */ };
    typedef IntegrationType& IntegrationType_out;

    static _dyn_attr const ::CORBA::TypeCode_ptr _tc_IntegrationType;

    static _dyn_attr const ::CORBA::TypeCode_ptr _tc_MeritResult;

    typedef ::CORBA::Double MeritResult[4];
    typedef ::CORBA::Double MeritResult_slice;

    static inline MeritResult_slice* MeritResult_alloc() {
      return new MeritResult_slice[4];
    }

    static inline MeritResult_slice* MeritResult_dup(const MeritResult_slice* _s) {
      if (!_s) return 0;
      MeritResult_slice* _data = MeritResult_alloc();
      if (_data) {
        for (_CORBA_ULong _0i0 = 0; _0i0 < 4; _0i0++){
          
          _data[_0i0] = _s[_0i0];

        }
    
      }
      return _data;
    }

    static inline void MeritResult_copy(MeritResult_slice* _to, const MeritResult_slice* _from){
      for (_CORBA_ULong _0i0 = 0; _0i0 < 4; _0i0++){
        
        _to[_0i0] = _from[_0i0];

      }
    
    }

    static inline void MeritResult_free(MeritResult_slice* _s) {
      delete [] _s;
    }

    class MeritResult_copyHelper {
    public:
      static inline MeritResult_slice* alloc() { return ::OCSCorbaDrama::UDASInterface::MeritResult_alloc(); }
      static inline MeritResult_slice* dup(const MeritResult_slice* p) { return ::OCSCorbaDrama::UDASInterface::MeritResult_dup(p); }
      static inline void free(MeritResult_slice* p) { ::OCSCorbaDrama::UDASInterface::MeritResult_free(p); }
    };

    typedef _CORBA_Array_Fix_Var<MeritResult_copyHelper,MeritResult_slice> MeritResult_var;
    typedef _CORBA_Array_Fix_Forany<MeritResult_copyHelper,MeritResult_slice> MeritResult_forany;

    typedef MeritResult_slice* MeritResult_out;

  
  };

  class _objref_UDASInterface :
    public virtual ::CORBA::Object,
    public virtual omniObjRef
  {
  public:
    UDASInterface::MeritResult_slice* merit(const char* DramaServer, const char* Node, ::CORBA::Double IntTime, ::CORBA::Long x1, ::CORBA::Long y1, ::CORBA::Long x2, ::CORBA::Long y2, ::CORBA::Long Offset, ::CORBA::Long ColumnsToIgnore, ::CORBA::Long RowsToIgnore);
    UDASInterface::MeritResult_slice* test(const char* DramaServer);
    void openShutter(const char* DramaServer, const char* Node);
    void closeShutter(const char* DramaServer, const char* Node);
    void performIntegration(::OCSCorbaDrama::UDASInterface::IntegrationType Type, ::CORBA::Double Duration, const char* Camera, const char* Title, const char* FileName);

    inline _objref_UDASInterface()  { _PR_setobj(0); }  // nil
    _objref_UDASInterface(omniIOR*, omniIdentity*);

  protected:
    virtual ~_objref_UDASInterface();

    
  private:
    virtual void* _ptrToObjRef(const char*);

    _objref_UDASInterface(const _objref_UDASInterface&);
    _objref_UDASInterface& operator = (const _objref_UDASInterface&);
    // not implemented

    friend class UDASInterface;
  };

  class _pof_UDASInterface : public _OMNI_NS(proxyObjectFactory) {
  public:
    inline _pof_UDASInterface() : _OMNI_NS(proxyObjectFactory)(UDASInterface::_PD_repoId) {}
    virtual ~_pof_UDASInterface();

    virtual omniObjRef* newObjRef(omniIOR*,omniIdentity*);
    virtual _CORBA_Boolean is_a(const char*) const;
  };

  class _impl_UDASInterface :
    public virtual omniServant
  {
  public:
    virtual ~_impl_UDASInterface();

    virtual UDASInterface::MeritResult_slice* merit(const char* DramaServer, const char* Node, ::CORBA::Double IntTime, ::CORBA::Long x1, ::CORBA::Long y1, ::CORBA::Long x2, ::CORBA::Long y2, ::CORBA::Long Offset, ::CORBA::Long ColumnsToIgnore, ::CORBA::Long RowsToIgnore) = 0;
    virtual UDASInterface::MeritResult_slice* test(const char* DramaServer) = 0;
    virtual void openShutter(const char* DramaServer, const char* Node) = 0;
    virtual void closeShutter(const char* DramaServer, const char* Node) = 0;
    virtual void performIntegration(::OCSCorbaDrama::UDASInterface::IntegrationType Type, ::CORBA::Double Duration, const char* Camera, const char* Title, const char* FileName) = 0;
    
  public:  // Really protected, workaround for xlC
    virtual _CORBA_Boolean _dispatch(omniCallHandle&);

  private:
    virtual void* _ptrToInterface(const char*);
    virtual const char* _mostDerivedRepoId();
    
  };


  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_UDASInterface;

_CORBA_MODULE_END



_CORBA_MODULE POA_OCSCorbaDrama
_CORBA_MODULE_BEG

  class TCSInterface :
    public virtual OCSCorbaDrama::_impl_TCSInterface,
    public virtual ::PortableServer::ServantBase
  {
  public:
    virtual ~TCSInterface();

    inline ::OCSCorbaDrama::TCSInterface_ptr _this() {
      return (::OCSCorbaDrama::TCSInterface_ptr) _do_this(::OCSCorbaDrama::TCSInterface::_PD_repoId);
    }
  };

  class UDASInterface :
    public virtual OCSCorbaDrama::_impl_UDASInterface,
    public virtual ::PortableServer::ServantBase
  {
  public:
    virtual ~UDASInterface();

    inline ::OCSCorbaDrama::UDASInterface_ptr _this() {
      return (::OCSCorbaDrama::UDASInterface_ptr) _do_this(::OCSCorbaDrama::UDASInterface::_PD_repoId);
    }
  };

_CORBA_MODULE_END



_CORBA_MODULE OBV_OCSCorbaDrama
_CORBA_MODULE_BEG

_CORBA_MODULE_END





#undef _core_attr
#undef _dyn_attr

inline void operator >>=(OCSCorbaDrama::TCSInterface::AutoguiderState _e, cdrStream& s) {
  ::operator>>=((::CORBA::ULong)_e, s);
}

inline void operator <<= (OCSCorbaDrama::TCSInterface::AutoguiderState& _e, cdrStream& s) {
  ::CORBA::ULong _0RL_e;
  ::operator<<=(_0RL_e,s);
  if (_0RL_e <= OCSCorbaDrama::TCSInterface::CENTRE) {
    _e = (OCSCorbaDrama::TCSInterface::AutoguiderState) _0RL_e;
  }
  else {
    OMNIORB_THROW(MARSHAL,_OMNI_NS(MARSHAL_InvalidEnumValue),
                  (::CORBA::CompletionStatus)s.completion());
  }
}

void operator<<=(::CORBA::Any& _a, OCSCorbaDrama::TCSInterface::AutoguiderState _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, OCSCorbaDrama::TCSInterface::AutoguiderState& _s);

inline void operator >>=(OCSCorbaDrama::TCSInterface::OffsetMode _e, cdrStream& s) {
  ::operator>>=((::CORBA::ULong)_e, s);
}

inline void operator <<= (OCSCorbaDrama::TCSInterface::OffsetMode& _e, cdrStream& s) {
  ::CORBA::ULong _0RL_e;
  ::operator<<=(_0RL_e,s);
  if (_0RL_e <= OCSCorbaDrama::TCSInterface::TIME) {
    _e = (OCSCorbaDrama::TCSInterface::OffsetMode) _0RL_e;
  }
  else {
    OMNIORB_THROW(MARSHAL,_OMNI_NS(MARSHAL_InvalidEnumValue),
                  (::CORBA::CompletionStatus)s.completion());
  }
}

void operator<<=(::CORBA::Any& _a, OCSCorbaDrama::TCSInterface::OffsetMode _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, OCSCorbaDrama::TCSInterface::OffsetMode& _s);

inline void operator >>=(OCSCorbaDrama::TCSInterface::RotatorMode _e, cdrStream& s) {
  ::operator>>=((::CORBA::ULong)_e, s);
}

inline void operator <<= (OCSCorbaDrama::TCSInterface::RotatorMode& _e, cdrStream& s) {
  ::CORBA::ULong _0RL_e;
  ::operator<<=(_0RL_e,s);
  if (_0RL_e <= OCSCorbaDrama::TCSInterface::VFLOAT) {
    _e = (OCSCorbaDrama::TCSInterface::RotatorMode) _0RL_e;
  }
  else {
    OMNIORB_THROW(MARSHAL,_OMNI_NS(MARSHAL_InvalidEnumValue),
                  (::CORBA::CompletionStatus)s.completion());
  }
}

void operator<<=(::CORBA::Any& _a, OCSCorbaDrama::TCSInterface::RotatorMode _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, OCSCorbaDrama::TCSInterface::RotatorMode& _s);

inline void operator >>=(OCSCorbaDrama::TCSInterface::SlowoffsetModes _e, cdrStream& s) {
  ::operator>>=((::CORBA::ULong)_e, s);
}

inline void operator <<= (OCSCorbaDrama::TCSInterface::SlowoffsetModes& _e, cdrStream& s) {
  ::CORBA::ULong _0RL_e;
  ::operator<<=(_0RL_e,s);
  if (_0RL_e <= OCSCorbaDrama::TCSInterface::ADD) {
    _e = (OCSCorbaDrama::TCSInterface::SlowoffsetModes) _0RL_e;
  }
  else {
    OMNIORB_THROW(MARSHAL,_OMNI_NS(MARSHAL_InvalidEnumValue),
                  (::CORBA::CompletionStatus)s.completion());
  }
}

void operator<<=(::CORBA::Any& _a, OCSCorbaDrama::TCSInterface::SlowoffsetModes _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, OCSCorbaDrama::TCSInterface::SlowoffsetModes& _s);

void operator<<=(::CORBA::Any& _a, const OCSCorbaDrama::TCSInterface::UnableToPerformTCSAction& _s);
void operator<<=(::CORBA::Any& _a, const OCSCorbaDrama::TCSInterface::UnableToPerformTCSAction* _sp);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, const OCSCorbaDrama::TCSInterface::UnableToPerformTCSAction*& _sp);

void operator<<=(::CORBA::Any& _a, const OCSCorbaDrama::TCSInterface::UnableToCancelTCSAction& _s);
void operator<<=(::CORBA::Any& _a, const OCSCorbaDrama::TCSInterface::UnableToCancelTCSAction* _sp);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, const OCSCorbaDrama::TCSInterface::UnableToCancelTCSAction*& _sp);

void operator<<=(::CORBA::Any& _a, const OCSCorbaDrama::TCSInterface::UnableToGetTCSData& _s);
void operator<<=(::CORBA::Any& _a, const OCSCorbaDrama::TCSInterface::UnableToGetTCSData* _sp);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, const OCSCorbaDrama::TCSInterface::UnableToGetTCSData*& _sp);

void operator<<=(::CORBA::Any& _a, const OCSCorbaDrama::TCSInterface::UnableToSetTelescopeFocus& _s);
void operator<<=(::CORBA::Any& _a, const OCSCorbaDrama::TCSInterface::UnableToSetTelescopeFocus* _sp);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, const OCSCorbaDrama::TCSInterface::UnableToSetTelescopeFocus*& _sp);

extern void operator<<=(::CORBA::Any& _a, const OCSCorbaDrama::TCSInterface::TCSData& _s);
extern void operator<<=(::CORBA::Any& _a, OCSCorbaDrama::TCSInterface::TCSData* _sp);
extern _CORBA_Boolean operator>>=(const ::CORBA::Any& _a, OCSCorbaDrama::TCSInterface::TCSData*& _sp);
extern _CORBA_Boolean operator>>=(const ::CORBA::Any& _a, const OCSCorbaDrama::TCSInterface::TCSData*& _sp);

extern void operator<<=(::CORBA::Any& _a, const OCSCorbaDrama::TCSInterface::TCSTarget& _s);
extern void operator<<=(::CORBA::Any& _a, OCSCorbaDrama::TCSInterface::TCSTarget* _sp);
extern _CORBA_Boolean operator>>=(const ::CORBA::Any& _a, OCSCorbaDrama::TCSInterface::TCSTarget*& _sp);
extern _CORBA_Boolean operator>>=(const ::CORBA::Any& _a, const OCSCorbaDrama::TCSInterface::TCSTarget*& _sp);

void operator<<=(::CORBA::Any& _a, OCSCorbaDrama::TCSInterface_ptr _s);
void operator<<=(::CORBA::Any& _a, OCSCorbaDrama::TCSInterface_ptr* _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, OCSCorbaDrama::TCSInterface_ptr& _s);

void operator<<=(::CORBA::Any& _a, const OCSCorbaDrama::UDASInterface::UnableToPerformMerit& _s);
void operator<<=(::CORBA::Any& _a, const OCSCorbaDrama::UDASInterface::UnableToPerformMerit* _sp);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, const OCSCorbaDrama::UDASInterface::UnableToPerformMerit*& _sp);

void operator<<=(::CORBA::Any& _a, const OCSCorbaDrama::UDASInterface::UnableToMoveShutter& _s);
void operator<<=(::CORBA::Any& _a, const OCSCorbaDrama::UDASInterface::UnableToMoveShutter* _sp);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, const OCSCorbaDrama::UDASInterface::UnableToMoveShutter*& _sp);

void operator<<=(::CORBA::Any& _a, const OCSCorbaDrama::UDASInterface::UnableToPerformIntegration& _s);
void operator<<=(::CORBA::Any& _a, const OCSCorbaDrama::UDASInterface::UnableToPerformIntegration* _sp);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, const OCSCorbaDrama::UDASInterface::UnableToPerformIntegration*& _sp);

inline void operator >>=(OCSCorbaDrama::UDASInterface::IntegrationType _e, cdrStream& s) {
  ::operator>>=((::CORBA::ULong)_e, s);
}

inline void operator <<= (OCSCorbaDrama::UDASInterface::IntegrationType& _e, cdrStream& s) {
  ::CORBA::ULong _0RL_e;
  ::operator<<=(_0RL_e,s);
  if (_0RL_e <= OCSCorbaDrama::UDASInterface::DARK) {
    _e = (OCSCorbaDrama::UDASInterface::IntegrationType) _0RL_e;
  }
  else {
    OMNIORB_THROW(MARSHAL,_OMNI_NS(MARSHAL_InvalidEnumValue),
                  (::CORBA::CompletionStatus)s.completion());
  }
}

void operator<<=(::CORBA::Any& _a, OCSCorbaDrama::UDASInterface::IntegrationType _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, OCSCorbaDrama::UDASInterface::IntegrationType& _s);

void operator<<=(::CORBA::Any& _a, const OCSCorbaDrama::UDASInterface::MeritResult_forany& _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, OCSCorbaDrama::UDASInterface::MeritResult_forany& _s);

void operator<<=(::CORBA::Any& _a, OCSCorbaDrama::UDASInterface_ptr _s);
void operator<<=(::CORBA::Any& _a, OCSCorbaDrama::UDASInterface_ptr* _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, OCSCorbaDrama::UDASInterface_ptr& _s);



inline void
OCSCorbaDrama::TCSInterface::_marshalObjRef(::OCSCorbaDrama::TCSInterface_ptr obj, cdrStream& s) {
  omniObjRef::_marshal(obj->_PR_getobj(),s);
}


inline void
OCSCorbaDrama::UDASInterface::_marshalObjRef(::OCSCorbaDrama::UDASInterface_ptr obj, cdrStream& s) {
  omniObjRef::_marshal(obj->_PR_getobj(),s);
}




#ifdef   USE_stub_in_nt_dll_NOT_DEFINED_OCSCorbaDrama
# undef  USE_stub_in_nt_dll
# undef  USE_stub_in_nt_dll_NOT_DEFINED_OCSCorbaDrama
#endif
#ifdef   USE_core_stub_in_nt_dll_NOT_DEFINED_OCSCorbaDrama
# undef  USE_core_stub_in_nt_dll
# undef  USE_core_stub_in_nt_dll_NOT_DEFINED_OCSCorbaDrama
#endif
#ifdef   USE_dyn_stub_in_nt_dll_NOT_DEFINED_OCSCorbaDrama
# undef  USE_dyn_stub_in_nt_dll
# undef  USE_dyn_stub_in_nt_dll_NOT_DEFINED_OCSCorbaDrama
#endif

#endif  // __OCSCorbaDrama_hh__

