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

#ifndef __CORBA_mPollableSet__
#define __CORBA_mPollableSet__

class PollableSet;
typedef PollableSet* PollableSet_ptr;
typedef PollableSet_ptr PollableSetRef;

class PollableSet_Helper {
public:
  typedef PollableSet_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<PollableSet, PollableSet_Helper> PollableSet_var;
typedef _CORBA_ObjRef_OUT_arg<PollableSet,PollableSet_Helper > PollableSet_out;

#endif

#ifndef __CORBA_mPollable__
#define __CORBA_mPollable__

class Pollable;

class Pollable_Helper {
public:
  static void add_ref(Pollable*);
  static void remove_ref(Pollable*);
  static void marshal(Pollable*, cdrStream&);
  static Pollable* unmarshal(cdrStream&);
};

typedef _CORBA_Value_Var    <Pollable,Pollable_Helper> Pollable_var;
typedef _CORBA_Value_Member <Pollable,Pollable_Helper> Pollable_member;
typedef _CORBA_Value_OUT_arg<Pollable,Pollable_Helper> Pollable_out;

#endif // __CORBA_mPollable__

class Pollable : 
  public virtual ::CORBA::ValueBase
{
public:  
  // Standard mapping
  typedef Pollable*    _ptr_type;
  typedef Pollable_var _var_type;

  static _ptr_type _downcast(::CORBA::ValueBase*);
  

#ifdef OMNI_HAVE_COVARIANT_RETURNS
  virtual Pollable* _copy_value();
#else
  virtual ::CORBA::ValueBase* _copy_value();
#endif

  // Definitions in this scope
  

  // Operations and attributes
  virtual ::CORBA::Boolean is_ready(::CORBA::ULong timeout) = 0;
  virtual PollableSet_ptr create_pollable_set() = 0;

  // Accessors for public members
  

protected:
  // Accessors for private members
  

public:
  // omniORB internal
  virtual const char* _NP_repositoryId() const;
  virtual const char* _NP_repositoryId(::CORBA::ULong& _hashval) const;

  virtual const _omni_ValueIds* _NP_truncatableIds() const;

  virtual ::CORBA::Boolean _NP_custom() const;

  virtual void* _ptrToValue(const char* id);

  static void _NP_marshal(Pollable*, cdrStream&);
  static Pollable* _NP_unmarshal(cdrStream&);
  

  virtual void _PR_marshal_state(cdrStream&) const;
  virtual void _PR_unmarshal_state(cdrStream&);
  virtual void _PR_copy_state(Pollable*);

  static _core_attr const char* _PD_repoId;

protected:
  Pollable();
  virtual ~Pollable();

private:
  // Not implemented
  Pollable(const Pollable&);
  Pollable& operator=(const Pollable&);
};

_CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_Pollable;

#ifndef __CORBA_mDIIPollable__
#define __CORBA_mDIIPollable__

class DIIPollable;

class DIIPollable_Helper {
public:
  static void add_ref(DIIPollable*);
  static void remove_ref(DIIPollable*);
  static void marshal(DIIPollable*, cdrStream&);
  static DIIPollable* unmarshal(cdrStream&);
};

typedef _CORBA_Value_Var    <DIIPollable,DIIPollable_Helper> DIIPollable_var;
typedef _CORBA_Value_Member <DIIPollable,DIIPollable_Helper> DIIPollable_member;
typedef _CORBA_Value_OUT_arg<DIIPollable,DIIPollable_Helper> DIIPollable_out;

#endif // __CORBA_mDIIPollable__

class DIIPollable : 
  public virtual Pollable
{
public:  
  // Standard mapping
  typedef DIIPollable*    _ptr_type;
  typedef DIIPollable_var _var_type;

  static _ptr_type _downcast(::CORBA::ValueBase*);
  

#ifdef OMNI_HAVE_COVARIANT_RETURNS
  virtual DIIPollable* _copy_value();
#else
  virtual ::CORBA::ValueBase* _copy_value();
#endif

  // Definitions in this scope
  

  // Operations and attributes
  

  // Accessors for public members
  

protected:
  // Accessors for private members
  

public:
  // omniORB internal
  virtual const char* _NP_repositoryId() const;
  virtual const char* _NP_repositoryId(::CORBA::ULong& _hashval) const;

  virtual const _omni_ValueIds* _NP_truncatableIds() const;

  virtual ::CORBA::Boolean _NP_custom() const;

  virtual void* _ptrToValue(const char* id);

  static void _NP_marshal(DIIPollable*, cdrStream&);
  static DIIPollable* _NP_unmarshal(cdrStream&);
  

  virtual void _PR_marshal_state(cdrStream&) const;
  virtual void _PR_unmarshal_state(cdrStream&);
  virtual void _PR_copy_state(DIIPollable*);

  static _core_attr const char* _PD_repoId;

protected:
  DIIPollable();
  virtual ~DIIPollable();

private:
  // Not implemented
  DIIPollable(const DIIPollable&);
  DIIPollable& operator=(const DIIPollable&);
};

_CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_DIIPollable;

#ifndef __CORBA_mPollableSet__
#define __CORBA_mPollableSet__

class PollableSet;
typedef PollableSet* PollableSet_ptr;
typedef PollableSet_ptr PollableSetRef;

class PollableSet_Helper {
public:
  typedef PollableSet_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<PollableSet, PollableSet_Helper> PollableSet_var;
typedef _CORBA_ObjRef_OUT_arg<PollableSet,PollableSet_Helper > PollableSet_out;

#endif

// local interface PollableSet
class PollableSet :
  public virtual ::CORBA::LocalObject
{
public:
  // Declarations for this interface type.
  typedef PollableSet_ptr _ptr_type;
  typedef PollableSet_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& s);
  static inline _ptr_type _unmarshalObjRef(cdrStream& s);

  static _core_attr const char* _PD_repoId;

  // Other IDL defined within this scope.
  class NoPossiblePollable : public ::CORBA::UserException {
  public:
    
    

    inline NoPossiblePollable() {
      pd_insertToAnyFn    = insertToAnyFn;
      pd_insertToAnyFnNCP = insertToAnyFnNCP;
    }
    NoPossiblePollable(const NoPossiblePollable&);
    
    NoPossiblePollable& operator=(const NoPossiblePollable&);
    virtual ~NoPossiblePollable();
    virtual void _raise() const;
    static NoPossiblePollable* _downcast(::CORBA::Exception*);
    static const NoPossiblePollable* _downcast(const ::CORBA::Exception*);
    static inline NoPossiblePollable* _narrow(::CORBA::Exception* _e) {
      return _downcast(_e);
    }
    
    inline void operator>>=(cdrStream&) const { }
    inline 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_NoPossiblePollable;

  class UnknownPollable : public ::CORBA::UserException {
  public:
    
    

    inline UnknownPollable() {
      pd_insertToAnyFn    = insertToAnyFn;
      pd_insertToAnyFnNCP = insertToAnyFnNCP;
    }
    UnknownPollable(const UnknownPollable&);
    
    UnknownPollable& operator=(const UnknownPollable&);
    virtual ~UnknownPollable();
    virtual void _raise() const;
    static UnknownPollable* _downcast(::CORBA::Exception*);
    static const UnknownPollable* _downcast(const ::CORBA::Exception*);
    static inline UnknownPollable* _narrow(::CORBA::Exception* _e) {
      return _downcast(_e);
    }
    
    inline void operator>>=(cdrStream&) const { }
    inline 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_UnknownPollable;



  // Operations declared in this local interface
  virtual DIIPollable* create_dii_pollable() = 0;
  virtual void add_pollable(::CORBA::Pollable* potential) = 0;
  virtual Pollable* get_ready_pollable(::CORBA::ULong timeout) = 0;
  virtual void remove(::CORBA::Pollable* potential) = 0;
  virtual ::CORBA::UShort number_left() = 0;  

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

protected:
  PollableSet();
  virtual ~PollableSet();
};

class _nil_PollableSet :
  
  public virtual PollableSet
{
  public:
    virtual DIIPollable* create_dii_pollable();
    virtual void add_pollable(::CORBA::Pollable* potential);
    virtual Pollable* get_ready_pollable(::CORBA::ULong timeout);
    virtual void remove(::CORBA::Pollable* potential);
    virtual ::CORBA::UShort number_left();

    inline _nil_PollableSet() { _PR_setobj(0); }

  protected:
    virtual ~_nil_PollableSet();
};

_CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_PollableSet;

#endif

