// -*- C++ -*-
//
// $Id$

// ****  Code generated by the The ACE ORB (TAO) IDL Compiler ****
// TAO and the TAO IDL Compiler have been developed by:
//       Center for Distributed Object Computing
//       Washington University
//       St. Louis, MO
//       USA
//       http://www.cs.wustl.edu/~schmidt/doc-center.html
// and
//       Distributed Object Computing Laboratory
//       University of California at Irvine
//       Irvine, CA
//       USA
//       http://doc.ece.uci.edu/
// and
//       Institute for Software Integrated Systems
//       Vanderbilt University
//       Nashville, TN
//       USA
//       http://www.isis.vanderbilt.edu/
//
// Information about TAO is available at:
//     http://www.cs.wustl.edu/~schmidt/TAO.html

// TAO_IDL - Generated from
// be/be_codegen.cpp:153

#ifndef _TAO_IDL_COSLIFECYCLEC_H_
#define _TAO_IDL_COSLIFECYCLEC_H_

#include /**/ "ace/pre.h"


#include "ace/config-all.h"

#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */

#include "LifeCycle/lifecycle_export.h"
#include "tao/ORB.h"
#include "tao/Environment.h"
#include "tao/Object.h"
#include "tao/Any.h"
#include "tao/Sequence_T.h"
#include "tao/Objref_VarOut_T.h"
#include "tao/Seq_Var_T.h"
#include "tao/Seq_Out_T.h"
#include "tao/VarOut_T.h"

#include "CosNamingC.h"

#if defined (TAO_EXPORT_MACRO)
#undef TAO_EXPORT_MACRO
#endif
#define TAO_EXPORT_MACRO TAO_LifeCycle_Export

#if defined (TAO_EXPORT_NESTED_CLASSES)
#  if defined (TAO_EXPORT_NESTED_MACRO)
#    undef TAO_EXPORT_NESTED_MACRO
#  endif /* defined (TAO_EXPORT_NESTED_MACRO) */
#  define TAO_EXPORT_NESTED_MACRO TAO_LifeCycle_Export
#endif /* TAO_EXPORT_NESTED_CLASSES */

#if defined(_MSC_VER)
#if (_MSC_VER >= 1200)
#pragma warning(push)
#endif /* _MSC_VER >= 1200 */
#pragma warning(disable:4250)
#endif /* _MSC_VER */

#if defined (__BORLANDC__)
#pragma option push -w-rvl -w-rch -w-ccc -w-inl
#endif /* __BORLANDC__ */

// TAO_IDL - Generated from 
// be/be_visitor_root/root_ch.cpp:63

namespace TAO
{
  class Collocation_Proxy_Broker;
  
  template<typename T> class Narrow_Utils;
  template<typename T> class AbstractBase_Narrow_Utils;
}

// TAO_IDL - Generated from
// be/be_visitor_module/module_ch.cpp:48

namespace CosLifeCycle
{
  
  // TAO_IDL - Generated from
  // be/be_visitor_typedef/typedef_ch.cpp:435
  
  typedef CosNaming::Name Key;
  typedef CosNaming::Name_var Key_var;
  typedef CosNaming::Name_out Key_out;
  
  // TAO_IDL - Generated from
  // be/be_visitor_typecode/typecode_decl.cpp:44
  
  TAO_NAMESPACE_STORAGE_CLASS ::CORBA::TypeCode_ptr _tc_Key;
  
  // TAO_IDL - Generated from
  // be/be_visitor_typedef/typedef_ch.cpp:342
  
  typedef CORBA::Object Factory;
  typedef CORBA::Object_ptr Factory_ptr;
  typedef CORBA::Object_var Factory_var;
  typedef CORBA::Object_out Factory_out;
  
  // TAO_IDL - Generated from
  // be/be_visitor_typecode/typecode_decl.cpp:44
  
  TAO_NAMESPACE_STORAGE_CLASS ::CORBA::TypeCode_ptr _tc_Factory;
  
  // TAO_IDL - Generated from
  // be/be_visitor_sequence/sequence_ch.cpp:101

#if !defined (_COSLIFECYCLE_FACTORIES_CH_)
#define _COSLIFECYCLE_FACTORIES_CH_
  
  class Factories;
  
  typedef
    TAO_MngSeq_Var_T<
        Factories,
        TAO_Pseudo_Object_Manager<
            Factory
          >
      >
    Factories_var;
  
  typedef
    TAO_MngSeq_Out_T<
        Factories,
        Factories_var,
        TAO_Pseudo_Object_Manager<
            Factory
          >
      >
    Factories_out;
  
  class TAO_LifeCycle_Export Factories
    : public
        TAO_Unbounded_Pseudo_Sequence<
            Factory
          >
  {
  public:
    Factories (void);
    Factories (CORBA::ULong max);
    Factories (
        CORBA::ULong max,
        CORBA::ULong length,
        CORBA::Object_ptr* buffer, 
        CORBA::Boolean release = 0
      );
    Factories (const Factories &);
    ~Factories (void);
    
    static void _tao_any_destructor (void *);
    
    typedef Factories_var _var_type;
  };

#endif /* end #if !defined */
  
  // TAO_IDL - Generated from
  // be/be_visitor_typecode/typecode_decl.cpp:44
  
  TAO_NAMESPACE_STORAGE_CLASS ::CORBA::TypeCode_ptr _tc_Factories;
  
  // TAO_IDL - Generated from
  // be/be_type.cpp:258
  
  struct NameValuePair;
  
  typedef
    TAO_Var_Var_T<
        NameValuePair
      >
    NameValuePair_var;
  
  typedef
    TAO_Out_T<
        NameValuePair,
        NameValuePair_var
      >
    NameValuePair_out;
  
  // TAO_IDL - Generated from
  // be/be_visitor_structure/structure_ch.cpp:52
  
  struct TAO_LifeCycle_Export NameValuePair
  {
    typedef NameValuePair_var _var_type;
    
    static void _tao_any_destructor (void *);
    TAO_String_Manager name;
    CORBA::Any value;
  };
  
  // TAO_IDL - Generated from
  // be/be_visitor_typecode/typecode_decl.cpp:44
  
  TAO_NAMESPACE_STORAGE_CLASS ::CORBA::TypeCode_ptr _tc_NameValuePair;
  
  // TAO_IDL - Generated from
  // be/be_visitor_sequence/sequence_ch.cpp:101

#if !defined (_COSLIFECYCLE_CRITERIA_CH_)
#define _COSLIFECYCLE_CRITERIA_CH_
  
  class Criteria;
  
  typedef
    TAO_VarSeq_Var_T<
        Criteria,
        NameValuePair
      >
    Criteria_var;
  
  typedef
    TAO_Seq_Out_T<
        Criteria,
        Criteria_var,
        NameValuePair
      >
    Criteria_out;
  
  class TAO_LifeCycle_Export Criteria
    : public
        TAO_Unbounded_Sequence<
            NameValuePair
          >
  {
  public:
    Criteria (void);
    Criteria (CORBA::ULong max);
    Criteria (
        CORBA::ULong max,
        CORBA::ULong length,
        NameValuePair* buffer, 
        CORBA::Boolean release = 0
      );
    Criteria (const Criteria &);
    ~Criteria (void);
    
    static void _tao_any_destructor (void *);
    
    typedef Criteria_var _var_type;
  };

#endif /* end #if !defined */
  
  // TAO_IDL - Generated from
  // be/be_visitor_typecode/typecode_decl.cpp:44
  
  TAO_NAMESPACE_STORAGE_CLASS ::CORBA::TypeCode_ptr _tc_Criteria;
  
  // TAO_IDL - Generated from
  // be/be_visitor_exception/exception_ch.cpp:51

#if !defined (_COSLIFECYCLE_NOFACTORY_CH_)
#define _COSLIFECYCLE_NOFACTORY_CH_
  
  class TAO_LifeCycle_Export NoFactory : public CORBA::UserException
  {
  public:
    
    CosLifeCycle::Key search_key;
    NoFactory (void);
    NoFactory (const NoFactory &);
    ~NoFactory (void);

    NoFactory &operator= (const NoFactory &);
    
    static void _tao_any_destructor (void *);
    
    static NoFactory *_downcast (CORBA::Exception *);
    static CORBA::Exception *_alloc (void);

    virtual CORBA::Exception *_tao_duplicate (void) const;

    virtual void _raise (void) const;

    virtual void _tao_encode (
        TAO_OutputCDR &
        ACE_ENV_ARG_DECL
      ) const;
    
    virtual void _tao_decode (
        TAO_InputCDR &
        ACE_ENV_ARG_DECL
      );
    
    // TAO_IDL - Generated from
    // be/be_visitor_exception/exception_ctor.cpp:66
    
    NoFactory (
        const ACE_NESTED_CLASS (CosLifeCycle, Key) & _tao_search_key
      );
    
    // TAO_IDL - Generated from
    // be/be_visitor_exception/exception_ch.cpp:125
    
    virtual CORBA::TypeCode_ptr _type (void) const;
  };
  
  // TAO_IDL - Generated from
  // be/be_visitor_typecode/typecode_decl.cpp:44
  
  TAO_NAMESPACE_STORAGE_CLASS ::CORBA::TypeCode_ptr _tc_NoFactory;

#endif /* end #if !defined */
  
  // TAO_IDL - Generated from
  // be/be_visitor_exception/exception_ch.cpp:51

#if !defined (_COSLIFECYCLE_NOTCOPYABLE_CH_)
#define _COSLIFECYCLE_NOTCOPYABLE_CH_
  
  class TAO_LifeCycle_Export NotCopyable : public CORBA::UserException
  {
  public:
    
    TAO_String_Manager reason;
    NotCopyable (void);
    NotCopyable (const NotCopyable &);
    ~NotCopyable (void);

    NotCopyable &operator= (const NotCopyable &);
    
    static void _tao_any_destructor (void *);
    
    static NotCopyable *_downcast (CORBA::Exception *);
    static CORBA::Exception *_alloc (void);

    virtual CORBA::Exception *_tao_duplicate (void) const;

    virtual void _raise (void) const;

    virtual void _tao_encode (
        TAO_OutputCDR &
        ACE_ENV_ARG_DECL
      ) const;
    
    virtual void _tao_decode (
        TAO_InputCDR &
        ACE_ENV_ARG_DECL
      );
    
    // TAO_IDL - Generated from
    // be/be_visitor_exception/exception_ctor.cpp:66
    
    NotCopyable (
        const char * _tao_reason
      );
    
    // TAO_IDL - Generated from
    // be/be_visitor_exception/exception_ch.cpp:125
    
    virtual CORBA::TypeCode_ptr _type (void) const;
  };
  
  // TAO_IDL - Generated from
  // be/be_visitor_typecode/typecode_decl.cpp:44
  
  TAO_NAMESPACE_STORAGE_CLASS ::CORBA::TypeCode_ptr _tc_NotCopyable;

#endif /* end #if !defined */
  
  // TAO_IDL - Generated from
  // be/be_visitor_exception/exception_ch.cpp:51

#if !defined (_COSLIFECYCLE_NOTMOVABLE_CH_)
#define _COSLIFECYCLE_NOTMOVABLE_CH_
  
  class TAO_LifeCycle_Export NotMovable : public CORBA::UserException
  {
  public:
    
    TAO_String_Manager reason;
    NotMovable (void);
    NotMovable (const NotMovable &);
    ~NotMovable (void);

    NotMovable &operator= (const NotMovable &);
    
    static void _tao_any_destructor (void *);
    
    static NotMovable *_downcast (CORBA::Exception *);
    static CORBA::Exception *_alloc (void);

    virtual CORBA::Exception *_tao_duplicate (void) const;

    virtual void _raise (void) const;

    virtual void _tao_encode (
        TAO_OutputCDR &
        ACE_ENV_ARG_DECL
      ) const;
    
    virtual void _tao_decode (
        TAO_InputCDR &
        ACE_ENV_ARG_DECL
      );
    
    // TAO_IDL - Generated from
    // be/be_visitor_exception/exception_ctor.cpp:66
    
    NotMovable (
        const char * _tao_reason
      );
    
    // TAO_IDL - Generated from
    // be/be_visitor_exception/exception_ch.cpp:125
    
    virtual CORBA::TypeCode_ptr _type (void) const;
  };
  
  // TAO_IDL - Generated from
  // be/be_visitor_typecode/typecode_decl.cpp:44
  
  TAO_NAMESPACE_STORAGE_CLASS ::CORBA::TypeCode_ptr _tc_NotMovable;

#endif /* end #if !defined */
  
  // TAO_IDL - Generated from
  // be/be_visitor_exception/exception_ch.cpp:51

#if !defined (_COSLIFECYCLE_NOTREMOVABLE_CH_)
#define _COSLIFECYCLE_NOTREMOVABLE_CH_
  
  class TAO_LifeCycle_Export NotRemovable : public CORBA::UserException
  {
  public:
    
    TAO_String_Manager reason;
    NotRemovable (void);
    NotRemovable (const NotRemovable &);
    ~NotRemovable (void);

    NotRemovable &operator= (const NotRemovable &);
    
    static void _tao_any_destructor (void *);
    
    static NotRemovable *_downcast (CORBA::Exception *);
    static CORBA::Exception *_alloc (void);

    virtual CORBA::Exception *_tao_duplicate (void) const;

    virtual void _raise (void) const;

    virtual void _tao_encode (
        TAO_OutputCDR &
        ACE_ENV_ARG_DECL
      ) const;
    
    virtual void _tao_decode (
        TAO_InputCDR &
        ACE_ENV_ARG_DECL
      );
    
    // TAO_IDL - Generated from
    // be/be_visitor_exception/exception_ctor.cpp:66
    
    NotRemovable (
        const char * _tao_reason
      );
    
    // TAO_IDL - Generated from
    // be/be_visitor_exception/exception_ch.cpp:125
    
    virtual CORBA::TypeCode_ptr _type (void) const;
  };
  
  // TAO_IDL - Generated from
  // be/be_visitor_typecode/typecode_decl.cpp:44
  
  TAO_NAMESPACE_STORAGE_CLASS ::CORBA::TypeCode_ptr _tc_NotRemovable;

#endif /* end #if !defined */
  
  // TAO_IDL - Generated from
  // be/be_visitor_exception/exception_ch.cpp:51

#if !defined (_COSLIFECYCLE_INVALIDCRITERIA_CH_)
#define _COSLIFECYCLE_INVALIDCRITERIA_CH_
  
  class TAO_LifeCycle_Export InvalidCriteria : public CORBA::UserException
  {
  public:
    
    CosLifeCycle::Criteria invalid_criteria;
    InvalidCriteria (void);
    InvalidCriteria (const InvalidCriteria &);
    ~InvalidCriteria (void);

    InvalidCriteria &operator= (const InvalidCriteria &);
    
    static void _tao_any_destructor (void *);
    
    static InvalidCriteria *_downcast (CORBA::Exception *);
    static CORBA::Exception *_alloc (void);

    virtual CORBA::Exception *_tao_duplicate (void) const;

    virtual void _raise (void) const;

    virtual void _tao_encode (
        TAO_OutputCDR &
        ACE_ENV_ARG_DECL
      ) const;
    
    virtual void _tao_decode (
        TAO_InputCDR &
        ACE_ENV_ARG_DECL
      );
    
    // TAO_IDL - Generated from
    // be/be_visitor_exception/exception_ctor.cpp:66
    
    InvalidCriteria (
        const ACE_NESTED_CLASS (CosLifeCycle, Criteria) & _tao_invalid_criteria
      );
    
    // TAO_IDL - Generated from
    // be/be_visitor_exception/exception_ch.cpp:125
    
    virtual CORBA::TypeCode_ptr _type (void) const;
  };
  
  // TAO_IDL - Generated from
  // be/be_visitor_typecode/typecode_decl.cpp:44
  
  TAO_NAMESPACE_STORAGE_CLASS ::CORBA::TypeCode_ptr _tc_InvalidCriteria;

#endif /* end #if !defined */
  
  // TAO_IDL - Generated from
  // be/be_visitor_exception/exception_ch.cpp:51

#if !defined (_COSLIFECYCLE_CANNOTMEETCRITERIA_CH_)
#define _COSLIFECYCLE_CANNOTMEETCRITERIA_CH_
  
  class TAO_LifeCycle_Export CannotMeetCriteria : public CORBA::UserException
  {
  public:
    
    CosLifeCycle::Criteria unmet_criteria;
    CannotMeetCriteria (void);
    CannotMeetCriteria (const CannotMeetCriteria &);
    ~CannotMeetCriteria (void);

    CannotMeetCriteria &operator= (const CannotMeetCriteria &);
    
    static void _tao_any_destructor (void *);
    
    static CannotMeetCriteria *_downcast (CORBA::Exception *);
    static CORBA::Exception *_alloc (void);

    virtual CORBA::Exception *_tao_duplicate (void) const;

    virtual void _raise (void) const;

    virtual void _tao_encode (
        TAO_OutputCDR &
        ACE_ENV_ARG_DECL
      ) const;
    
    virtual void _tao_decode (
        TAO_InputCDR &
        ACE_ENV_ARG_DECL
      );
    
    // TAO_IDL - Generated from
    // be/be_visitor_exception/exception_ctor.cpp:66
    
    CannotMeetCriteria (
        const ACE_NESTED_CLASS (CosLifeCycle, Criteria) & _tao_unmet_criteria
      );
    
    // TAO_IDL - Generated from
    // be/be_visitor_exception/exception_ch.cpp:125
    
    virtual CORBA::TypeCode_ptr _type (void) const;
  };
  
  // TAO_IDL - Generated from
  // be/be_visitor_typecode/typecode_decl.cpp:44
  
  TAO_NAMESPACE_STORAGE_CLASS ::CORBA::TypeCode_ptr _tc_CannotMeetCriteria;

#endif /* end #if !defined */
  
  // TAO_IDL - Generated from
  // be/be_interface.cpp:613

#if !defined (_COSLIFECYCLE_FACTORYFINDER__VAR_OUT_CH_)
#define _COSLIFECYCLE_FACTORYFINDER__VAR_OUT_CH_
  
  class FactoryFinder;
  typedef FactoryFinder *FactoryFinder_ptr;
  
  typedef
    TAO_Objref_Var_T<
        FactoryFinder
      >
    FactoryFinder_var;
  
  typedef
    TAO_Objref_Out_T<
        FactoryFinder
      >
    FactoryFinder_out;

#endif /* end #if !defined */
  
  // TAO_IDL - Generated from
  // be/be_visitor_interface/interface_ch.cpp:54

#if !defined (_COSLIFECYCLE_FACTORYFINDER_CH_)
#define _COSLIFECYCLE_FACTORYFINDER_CH_
  
  class TAO_LifeCycle_Export FactoryFinder
    : public virtual CORBA::Object
  {
  public:
    friend class TAO::Narrow_Utils<FactoryFinder>;
    typedef FactoryFinder_ptr _ptr_type;
    typedef FactoryFinder_var _var_type;
    
    // The static operations.
    static FactoryFinder_ptr _duplicate (FactoryFinder_ptr obj);
    
    static FactoryFinder_ptr _narrow (
        CORBA::Object_ptr obj
        ACE_ENV_ARG_DECL_WITH_DEFAULTS
      );
    
    static FactoryFinder_ptr _unchecked_narrow (
        CORBA::Object_ptr obj
        ACE_ENV_ARG_DECL_WITH_DEFAULTS
      );
    
    static FactoryFinder_ptr _nil (void)
    {
      return (FactoryFinder_ptr)0;
    }
    
    static void _tao_any_destructor (void *);
    
    // TAO_IDL - Generated from
    // be/be_visitor_operation/operation_ch.cpp:46
    
    virtual ::CosLifeCycle::Factories * find_factories (
        const ::CosLifeCycle::Key & factory_key
        ACE_ENV_ARG_DECL_WITH_DEFAULTS
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException,
        ::CosLifeCycle::NoFactory
      ));
    
    // TAO_IDL - Generated from
    // be/be_visitor_interface/interface_ch.cpp:208
    
    virtual CORBA::Boolean _is_a (
        const char *type_id
        ACE_ENV_ARG_DECL_WITH_DEFAULTS
      );
    
    virtual const char* _interface_repository_id (void) const;
    virtual CORBA::Boolean marshal (TAO_OutputCDR &cdr);
  private:
    TAO::Collocation_Proxy_Broker *the_TAO_FactoryFinder_Proxy_Broker_;
  
  protected:
    // Concrete interface only.
    FactoryFinder (void);
    
    // These methods travese the inheritance tree and set the
    // parents piece of the given class in the right mode.
    virtual void CosLifeCycle_FactoryFinder_setup_collocation (void);
    
    // Concrete non-local interface only.
    FactoryFinder (
        IOP::IOR *ior,
        TAO_ORB_Core *orb_core = 0
      );
    
    // Non-local interface only.
    FactoryFinder (
        TAO_Stub *objref,
        CORBA::Boolean _tao_collocated = 0,
        TAO_Abstract_ServantBase *servant = 0,
        TAO_ORB_Core *orb_core = 0
      );
    
    virtual ~FactoryFinder (void);
  
  private:
    // Private and unimplemented for concrete interfaces.
    FactoryFinder (const FactoryFinder &);
    
    void operator= (const FactoryFinder &);
  };

#endif /* end #if !defined */
  
  // TAO_IDL - Generated from
  // be/be_visitor_typecode/typecode_decl.cpp:44
  
  TAO_NAMESPACE_STORAGE_CLASS ::CORBA::TypeCode_ptr _tc_FactoryFinder;
  
  // TAO_IDL - Generated from
  // be/be_interface.cpp:613

#if !defined (_COSLIFECYCLE_LIFECYCLEOBJECT__VAR_OUT_CH_)
#define _COSLIFECYCLE_LIFECYCLEOBJECT__VAR_OUT_CH_
  
  class LifeCycleObject;
  typedef LifeCycleObject *LifeCycleObject_ptr;
  
  typedef
    TAO_Objref_Var_T<
        LifeCycleObject
      >
    LifeCycleObject_var;
  
  typedef
    TAO_Objref_Out_T<
        LifeCycleObject
      >
    LifeCycleObject_out;

#endif /* end #if !defined */
  
  // TAO_IDL - Generated from
  // be/be_visitor_interface/interface_ch.cpp:54

#if !defined (_COSLIFECYCLE_LIFECYCLEOBJECT_CH_)
#define _COSLIFECYCLE_LIFECYCLEOBJECT_CH_
  
  class TAO_LifeCycle_Export LifeCycleObject
    : public virtual CORBA::Object
  {
  public:
    friend class TAO::Narrow_Utils<LifeCycleObject>;
    typedef LifeCycleObject_ptr _ptr_type;
    typedef LifeCycleObject_var _var_type;
    
    // The static operations.
    static LifeCycleObject_ptr _duplicate (LifeCycleObject_ptr obj);
    
    static LifeCycleObject_ptr _narrow (
        CORBA::Object_ptr obj
        ACE_ENV_ARG_DECL_WITH_DEFAULTS
      );
    
    static LifeCycleObject_ptr _unchecked_narrow (
        CORBA::Object_ptr obj
        ACE_ENV_ARG_DECL_WITH_DEFAULTS
      );
    
    static LifeCycleObject_ptr _nil (void)
    {
      return (LifeCycleObject_ptr)0;
    }
    
    static void _tao_any_destructor (void *);
    
    // TAO_IDL - Generated from
    // be/be_visitor_operation/operation_ch.cpp:46
    
    virtual ::CosLifeCycle::LifeCycleObject_ptr copy (
        ::CosLifeCycle::FactoryFinder_ptr there,
        const ::CosLifeCycle::Criteria & the_criteria
        ACE_ENV_ARG_DECL_WITH_DEFAULTS
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException,
        ::CosLifeCycle::NoFactory,
        ::CosLifeCycle::NotCopyable,
        ::CosLifeCycle::InvalidCriteria,
        ::CosLifeCycle::CannotMeetCriteria
      ));
    
    // TAO_IDL - Generated from
    // be/be_visitor_operation/operation_ch.cpp:46
    
    virtual void move (
        ::CosLifeCycle::FactoryFinder_ptr there,
        const ::CosLifeCycle::Criteria & the_criteria
        ACE_ENV_ARG_DECL_WITH_DEFAULTS
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException,
        ::CosLifeCycle::NoFactory,
        ::CosLifeCycle::NotMovable,
        ::CosLifeCycle::InvalidCriteria,
        ::CosLifeCycle::CannotMeetCriteria
      ));
    
    // TAO_IDL - Generated from
    // be/be_visitor_operation/operation_ch.cpp:46
    
    virtual void remove (
        ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException,
        ::CosLifeCycle::NotRemovable
      ));
    
    // TAO_IDL - Generated from
    // be/be_visitor_interface/interface_ch.cpp:208
    
    virtual CORBA::Boolean _is_a (
        const char *type_id
        ACE_ENV_ARG_DECL_WITH_DEFAULTS
      );
    
    virtual const char* _interface_repository_id (void) const;
    virtual CORBA::Boolean marshal (TAO_OutputCDR &cdr);
  private:
    TAO::Collocation_Proxy_Broker *the_TAO_LifeCycleObject_Proxy_Broker_;
  
  protected:
    // Concrete interface only.
    LifeCycleObject (void);
    
    // These methods travese the inheritance tree and set the
    // parents piece of the given class in the right mode.
    virtual void CosLifeCycle_LifeCycleObject_setup_collocation (void);
    
    // Concrete non-local interface only.
    LifeCycleObject (
        IOP::IOR *ior,
        TAO_ORB_Core *orb_core = 0
      );
    
    // Non-local interface only.
    LifeCycleObject (
        TAO_Stub *objref,
        CORBA::Boolean _tao_collocated = 0,
        TAO_Abstract_ServantBase *servant = 0,
        TAO_ORB_Core *orb_core = 0
      );
    
    virtual ~LifeCycleObject (void);
  
  private:
    // Private and unimplemented for concrete interfaces.
    LifeCycleObject (const LifeCycleObject &);
    
    void operator= (const LifeCycleObject &);
  };

#endif /* end #if !defined */
  
  // TAO_IDL - Generated from
  // be/be_visitor_typecode/typecode_decl.cpp:44
  
  TAO_NAMESPACE_STORAGE_CLASS ::CORBA::TypeCode_ptr _tc_LifeCycleObject;
  
  // TAO_IDL - Generated from
  // be/be_interface.cpp:613

#if !defined (_COSLIFECYCLE_GENERICFACTORY__VAR_OUT_CH_)
#define _COSLIFECYCLE_GENERICFACTORY__VAR_OUT_CH_
  
  class GenericFactory;
  typedef GenericFactory *GenericFactory_ptr;
  
  typedef
    TAO_Objref_Var_T<
        GenericFactory
      >
    GenericFactory_var;
  
  typedef
    TAO_Objref_Out_T<
        GenericFactory
      >
    GenericFactory_out;

#endif /* end #if !defined */
  
  // TAO_IDL - Generated from
  // be/be_visitor_interface/interface_ch.cpp:54

#if !defined (_COSLIFECYCLE_GENERICFACTORY_CH_)
#define _COSLIFECYCLE_GENERICFACTORY_CH_
  
  class TAO_LifeCycle_Export GenericFactory
    : public virtual CORBA::Object
  {
  public:
    friend class TAO::Narrow_Utils<GenericFactory>;
    typedef GenericFactory_ptr _ptr_type;
    typedef GenericFactory_var _var_type;
    
    // The static operations.
    static GenericFactory_ptr _duplicate (GenericFactory_ptr obj);
    
    static GenericFactory_ptr _narrow (
        CORBA::Object_ptr obj
        ACE_ENV_ARG_DECL_WITH_DEFAULTS
      );
    
    static GenericFactory_ptr _unchecked_narrow (
        CORBA::Object_ptr obj
        ACE_ENV_ARG_DECL_WITH_DEFAULTS
      );
    
    static GenericFactory_ptr _nil (void)
    {
      return (GenericFactory_ptr)0;
    }
    
    static void _tao_any_destructor (void *);
    
    // TAO_IDL - Generated from
    // be/be_visitor_operation/operation_ch.cpp:46
    
    virtual CORBA::Boolean supports (
        const ::CosLifeCycle::Key & k
        ACE_ENV_ARG_DECL_WITH_DEFAULTS
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException
      ));
    
    // TAO_IDL - Generated from
    // be/be_visitor_operation/operation_ch.cpp:46
    
    virtual CORBA::Object_ptr create_object (
        const ::CosLifeCycle::Key & k,
        const ::CosLifeCycle::Criteria & the_criteria
        ACE_ENV_ARG_DECL_WITH_DEFAULTS
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException,
        ::CosLifeCycle::NoFactory,
        ::CosLifeCycle::InvalidCriteria,
        ::CosLifeCycle::CannotMeetCriteria
      ));
    
    // TAO_IDL - Generated from
    // be/be_visitor_interface/interface_ch.cpp:208
    
    virtual CORBA::Boolean _is_a (
        const char *type_id
        ACE_ENV_ARG_DECL_WITH_DEFAULTS
      );
    
    virtual const char* _interface_repository_id (void) const;
    virtual CORBA::Boolean marshal (TAO_OutputCDR &cdr);
  private:
    TAO::Collocation_Proxy_Broker *the_TAO_GenericFactory_Proxy_Broker_;
  
  protected:
    // Concrete interface only.
    GenericFactory (void);
    
    // These methods travese the inheritance tree and set the
    // parents piece of the given class in the right mode.
    virtual void CosLifeCycle_GenericFactory_setup_collocation (void);
    
    // Concrete non-local interface only.
    GenericFactory (
        IOP::IOR *ior,
        TAO_ORB_Core *orb_core = 0
      );
    
    // Non-local interface only.
    GenericFactory (
        TAO_Stub *objref,
        CORBA::Boolean _tao_collocated = 0,
        TAO_Abstract_ServantBase *servant = 0,
        TAO_ORB_Core *orb_core = 0
      );
    
    virtual ~GenericFactory (void);
  
  private:
    // Private and unimplemented for concrete interfaces.
    GenericFactory (const GenericFactory &);
    
    void operator= (const GenericFactory &);
  };

#endif /* end #if !defined */
  
  // TAO_IDL - Generated from
  // be/be_visitor_typecode/typecode_decl.cpp:44
  
  TAO_NAMESPACE_STORAGE_CLASS ::CORBA::TypeCode_ptr _tc_GenericFactory;

// TAO_IDL - Generated from
// be/be_visitor_module/module_ch.cpp:66

} // module CosLifeCycle

// Proxy Broker Factory function pointer declarations.

// TAO_IDL - Generated from
// be/be_visitor_root/root.cpp:120

extern TAO_LifeCycle_Export
TAO::Collocation_Proxy_Broker *
(*CosLifeCycle__TAO_FactoryFinder_Proxy_Broker_Factory_function_pointer) (
    CORBA::Object_ptr obj
  );

extern TAO_LifeCycle_Export
TAO::Collocation_Proxy_Broker *
(*CosLifeCycle__TAO_LifeCycleObject_Proxy_Broker_Factory_function_pointer) (
    CORBA::Object_ptr obj
  );

extern TAO_LifeCycle_Export
TAO::Collocation_Proxy_Broker *
(*CosLifeCycle__TAO_GenericFactory_Proxy_Broker_Factory_function_pointer) (
    CORBA::Object_ptr obj
  );

// TAO_IDL - Generated from
// be/be_visitor_traits.cpp:59

// Traits specializations.
namespace TAO
{

#if !defined (_COSLIFECYCLE_FACTORYFINDER__TRAITS_CH_)
#define _COSLIFECYCLE_FACTORYFINDER__TRAITS_CH_
  
  ACE_TEMPLATE_SPECIALIZATION
  struct TAO_LifeCycle_Export Objref_Traits< ::CosLifeCycle::FactoryFinder>
  {
    static ::CosLifeCycle::FactoryFinder_ptr tao_duplicate (
        ::CosLifeCycle::FactoryFinder_ptr
      );
    static void tao_release (
        ::CosLifeCycle::FactoryFinder_ptr
      );
    static ::CosLifeCycle::FactoryFinder_ptr tao_nil (void);
    static CORBA::Boolean tao_marshal (
        ::CosLifeCycle::FactoryFinder_ptr p,
        TAO_OutputCDR & cdr
      );
  };

#endif /* end #if !defined */

#if !defined (_COSLIFECYCLE_LIFECYCLEOBJECT__TRAITS_CH_)
#define _COSLIFECYCLE_LIFECYCLEOBJECT__TRAITS_CH_
  
  ACE_TEMPLATE_SPECIALIZATION
  struct TAO_LifeCycle_Export Objref_Traits< ::CosLifeCycle::LifeCycleObject>
  {
    static ::CosLifeCycle::LifeCycleObject_ptr tao_duplicate (
        ::CosLifeCycle::LifeCycleObject_ptr
      );
    static void tao_release (
        ::CosLifeCycle::LifeCycleObject_ptr
      );
    static ::CosLifeCycle::LifeCycleObject_ptr tao_nil (void);
    static CORBA::Boolean tao_marshal (
        ::CosLifeCycle::LifeCycleObject_ptr p,
        TAO_OutputCDR & cdr
      );
  };

#endif /* end #if !defined */

#if !defined (_COSLIFECYCLE_GENERICFACTORY__TRAITS_CH_)
#define _COSLIFECYCLE_GENERICFACTORY__TRAITS_CH_
  
  ACE_TEMPLATE_SPECIALIZATION
  struct TAO_LifeCycle_Export Objref_Traits< ::CosLifeCycle::GenericFactory>
  {
    static ::CosLifeCycle::GenericFactory_ptr tao_duplicate (
        ::CosLifeCycle::GenericFactory_ptr
      );
    static void tao_release (
        ::CosLifeCycle::GenericFactory_ptr
      );
    static ::CosLifeCycle::GenericFactory_ptr tao_nil (void);
    static CORBA::Boolean tao_marshal (
        ::CosLifeCycle::GenericFactory_ptr p,
        TAO_OutputCDR & cdr
      );
  };

#endif /* end #if !defined */
}

// TAO_IDL - Generated from
// be/be_visitor_sequence/any_op_ch.cpp:52

TAO_LifeCycle_Export void operator<<= (CORBA::Any &, const CosLifeCycle::Factories &); // copying version
TAO_LifeCycle_Export void operator<<= (CORBA::Any &, CosLifeCycle::Factories*); // noncopying version
TAO_LifeCycle_Export CORBA::Boolean operator>>= (const CORBA::Any &, CosLifeCycle::Factories *&); // deprecated
TAO_LifeCycle_Export CORBA::Boolean operator>>= (const CORBA::Any &, const CosLifeCycle::Factories *&);

// TAO_IDL - Generated from
// be/be_visitor_structure/any_op_ch.cpp:52

TAO_LifeCycle_Export void operator<<= (CORBA::Any &, const CosLifeCycle::NameValuePair &); // copying version
TAO_LifeCycle_Export void operator<<= (CORBA::Any &, CosLifeCycle::NameValuePair*); // noncopying version
TAO_LifeCycle_Export CORBA::Boolean operator>>= (const CORBA::Any &, CosLifeCycle::NameValuePair *&); // deprecated
TAO_LifeCycle_Export CORBA::Boolean operator>>= (const CORBA::Any &, const CosLifeCycle::NameValuePair *&);

// TAO_IDL - Generated from
// be/be_visitor_sequence/any_op_ch.cpp:52

TAO_LifeCycle_Export void operator<<= (CORBA::Any &, const CosLifeCycle::Criteria &); // copying version
TAO_LifeCycle_Export void operator<<= (CORBA::Any &, CosLifeCycle::Criteria*); // noncopying version
TAO_LifeCycle_Export CORBA::Boolean operator>>= (const CORBA::Any &, CosLifeCycle::Criteria *&); // deprecated
TAO_LifeCycle_Export CORBA::Boolean operator>>= (const CORBA::Any &, const CosLifeCycle::Criteria *&);

// TAO_IDL - Generated from
// be/be_visitor_exception/any_op_ch.cpp:52

TAO_LifeCycle_Export void operator<<= (CORBA::Any &, const CosLifeCycle::NoFactory &); // copying version
TAO_LifeCycle_Export void operator<<= (CORBA::Any &, CosLifeCycle::NoFactory*); // noncopying version
TAO_LifeCycle_Export CORBA::Boolean operator>>= (const CORBA::Any &, CosLifeCycle::NoFactory *&); // deprecated
TAO_LifeCycle_Export CORBA::Boolean operator>>= (const CORBA::Any &, const CosLifeCycle::NoFactory *&);

// TAO_IDL - Generated from
// be/be_visitor_exception/any_op_ch.cpp:52

TAO_LifeCycle_Export void operator<<= (CORBA::Any &, const CosLifeCycle::NotCopyable &); // copying version
TAO_LifeCycle_Export void operator<<= (CORBA::Any &, CosLifeCycle::NotCopyable*); // noncopying version
TAO_LifeCycle_Export CORBA::Boolean operator>>= (const CORBA::Any &, CosLifeCycle::NotCopyable *&); // deprecated
TAO_LifeCycle_Export CORBA::Boolean operator>>= (const CORBA::Any &, const CosLifeCycle::NotCopyable *&);

// TAO_IDL - Generated from
// be/be_visitor_exception/any_op_ch.cpp:52

TAO_LifeCycle_Export void operator<<= (CORBA::Any &, const CosLifeCycle::NotMovable &); // copying version
TAO_LifeCycle_Export void operator<<= (CORBA::Any &, CosLifeCycle::NotMovable*); // noncopying version
TAO_LifeCycle_Export CORBA::Boolean operator>>= (const CORBA::Any &, CosLifeCycle::NotMovable *&); // deprecated
TAO_LifeCycle_Export CORBA::Boolean operator>>= (const CORBA::Any &, const CosLifeCycle::NotMovable *&);

// TAO_IDL - Generated from
// be/be_visitor_exception/any_op_ch.cpp:52

TAO_LifeCycle_Export void operator<<= (CORBA::Any &, const CosLifeCycle::NotRemovable &); // copying version
TAO_LifeCycle_Export void operator<<= (CORBA::Any &, CosLifeCycle::NotRemovable*); // noncopying version
TAO_LifeCycle_Export CORBA::Boolean operator>>= (const CORBA::Any &, CosLifeCycle::NotRemovable *&); // deprecated
TAO_LifeCycle_Export CORBA::Boolean operator>>= (const CORBA::Any &, const CosLifeCycle::NotRemovable *&);

// TAO_IDL - Generated from
// be/be_visitor_exception/any_op_ch.cpp:52

TAO_LifeCycle_Export void operator<<= (CORBA::Any &, const CosLifeCycle::InvalidCriteria &); // copying version
TAO_LifeCycle_Export void operator<<= (CORBA::Any &, CosLifeCycle::InvalidCriteria*); // noncopying version
TAO_LifeCycle_Export CORBA::Boolean operator>>= (const CORBA::Any &, CosLifeCycle::InvalidCriteria *&); // deprecated
TAO_LifeCycle_Export CORBA::Boolean operator>>= (const CORBA::Any &, const CosLifeCycle::InvalidCriteria *&);

// TAO_IDL - Generated from
// be/be_visitor_exception/any_op_ch.cpp:52

TAO_LifeCycle_Export void operator<<= (CORBA::Any &, const CosLifeCycle::CannotMeetCriteria &); // copying version
TAO_LifeCycle_Export void operator<<= (CORBA::Any &, CosLifeCycle::CannotMeetCriteria*); // noncopying version
TAO_LifeCycle_Export CORBA::Boolean operator>>= (const CORBA::Any &, CosLifeCycle::CannotMeetCriteria *&); // deprecated
TAO_LifeCycle_Export CORBA::Boolean operator>>= (const CORBA::Any &, const CosLifeCycle::CannotMeetCriteria *&);

// TAO_IDL - Generated from
// be/be_visitor_interface/any_op_ch.cpp:52

TAO_LifeCycle_Export void operator<<= (CORBA::Any &, CosLifeCycle::FactoryFinder_ptr); // copying
TAO_LifeCycle_Export void operator<<= (CORBA::Any &, CosLifeCycle::FactoryFinder_ptr *); // non-copying
TAO_LifeCycle_Export CORBA::Boolean operator>>= (const CORBA::Any &, CosLifeCycle::FactoryFinder_ptr &);

// TAO_IDL - Generated from
// be/be_visitor_interface/any_op_ch.cpp:52

TAO_LifeCycle_Export void operator<<= (CORBA::Any &, CosLifeCycle::LifeCycleObject_ptr); // copying
TAO_LifeCycle_Export void operator<<= (CORBA::Any &, CosLifeCycle::LifeCycleObject_ptr *); // non-copying
TAO_LifeCycle_Export CORBA::Boolean operator>>= (const CORBA::Any &, CosLifeCycle::LifeCycleObject_ptr &);

// TAO_IDL - Generated from
// be/be_visitor_interface/any_op_ch.cpp:52

TAO_LifeCycle_Export void operator<<= (CORBA::Any &, CosLifeCycle::GenericFactory_ptr); // copying
TAO_LifeCycle_Export void operator<<= (CORBA::Any &, CosLifeCycle::GenericFactory_ptr *); // non-copying
TAO_LifeCycle_Export CORBA::Boolean operator>>= (const CORBA::Any &, CosLifeCycle::GenericFactory_ptr &);

// TAO_IDL - Generated from
// be/be_visitor_sequence/cdr_op_ch.cpp:71

#if !defined _TAO_CDR_OP_CosLifeCycle_Factories_H_
#define _TAO_CDR_OP_CosLifeCycle_Factories_H_

TAO_LifeCycle_Export CORBA::Boolean operator<< (
    TAO_OutputCDR &,
    const CosLifeCycle::Factories &
  );
TAO_LifeCycle_Export CORBA::Boolean operator>> (
    TAO_InputCDR &,
    CosLifeCycle::Factories &
  );

#endif /* _TAO_CDR_OP_CosLifeCycle_Factories_H_ */

// TAO_IDL - Generated from
// be/be_visitor_structure/cdr_op_ch.cpp:54

TAO_LifeCycle_Export CORBA::Boolean operator<< (TAO_OutputCDR &, const CosLifeCycle::NameValuePair &);
TAO_LifeCycle_Export CORBA::Boolean operator>> (TAO_InputCDR &, CosLifeCycle::NameValuePair &);

// TAO_IDL - Generated from
// be/be_visitor_sequence/cdr_op_ch.cpp:71

#if !defined _TAO_CDR_OP_CosLifeCycle_Criteria_H_
#define _TAO_CDR_OP_CosLifeCycle_Criteria_H_

TAO_LifeCycle_Export CORBA::Boolean operator<< (
    TAO_OutputCDR &,
    const CosLifeCycle::Criteria &
  );
TAO_LifeCycle_Export CORBA::Boolean operator>> (
    TAO_InputCDR &,
    CosLifeCycle::Criteria &
  );

#endif /* _TAO_CDR_OP_CosLifeCycle_Criteria_H_ */

// TAO_IDL - Generated from
// be/be_visitor_exception/cdr_op_ch.cpp:52

TAO_LifeCycle_Export CORBA::Boolean operator<< (TAO_OutputCDR &, const CosLifeCycle::NoFactory &);
TAO_LifeCycle_Export CORBA::Boolean operator>> (TAO_InputCDR &, CosLifeCycle::NoFactory &);

// TAO_IDL - Generated from
// be/be_visitor_exception/cdr_op_ch.cpp:52

TAO_LifeCycle_Export CORBA::Boolean operator<< (TAO_OutputCDR &, const CosLifeCycle::NotCopyable &);
TAO_LifeCycle_Export CORBA::Boolean operator>> (TAO_InputCDR &, CosLifeCycle::NotCopyable &);

// TAO_IDL - Generated from
// be/be_visitor_exception/cdr_op_ch.cpp:52

TAO_LifeCycle_Export CORBA::Boolean operator<< (TAO_OutputCDR &, const CosLifeCycle::NotMovable &);
TAO_LifeCycle_Export CORBA::Boolean operator>> (TAO_InputCDR &, CosLifeCycle::NotMovable &);

// TAO_IDL - Generated from
// be/be_visitor_exception/cdr_op_ch.cpp:52

TAO_LifeCycle_Export CORBA::Boolean operator<< (TAO_OutputCDR &, const CosLifeCycle::NotRemovable &);
TAO_LifeCycle_Export CORBA::Boolean operator>> (TAO_InputCDR &, CosLifeCycle::NotRemovable &);

// TAO_IDL - Generated from
// be/be_visitor_exception/cdr_op_ch.cpp:52

TAO_LifeCycle_Export CORBA::Boolean operator<< (TAO_OutputCDR &, const CosLifeCycle::InvalidCriteria &);
TAO_LifeCycle_Export CORBA::Boolean operator>> (TAO_InputCDR &, CosLifeCycle::InvalidCriteria &);

// TAO_IDL - Generated from
// be/be_visitor_exception/cdr_op_ch.cpp:52

TAO_LifeCycle_Export CORBA::Boolean operator<< (TAO_OutputCDR &, const CosLifeCycle::CannotMeetCriteria &);
TAO_LifeCycle_Export CORBA::Boolean operator>> (TAO_InputCDR &, CosLifeCycle::CannotMeetCriteria &);

// TAO_IDL - Generated from
// be/be_visitor_interface/cdr_op_ch.cpp:55

TAO_LifeCycle_Export CORBA::Boolean operator<< (TAO_OutputCDR &, const CosLifeCycle::FactoryFinder_ptr );
TAO_LifeCycle_Export CORBA::Boolean operator>> (TAO_InputCDR &, CosLifeCycle::FactoryFinder_ptr &);

// TAO_IDL - Generated from
// be/be_visitor_interface/cdr_op_ch.cpp:55

TAO_LifeCycle_Export CORBA::Boolean operator<< (TAO_OutputCDR &, const CosLifeCycle::LifeCycleObject_ptr );
TAO_LifeCycle_Export CORBA::Boolean operator>> (TAO_InputCDR &, CosLifeCycle::LifeCycleObject_ptr &);

// TAO_IDL - Generated from
// be/be_visitor_interface/cdr_op_ch.cpp:55

TAO_LifeCycle_Export CORBA::Boolean operator<< (TAO_OutputCDR &, const CosLifeCycle::GenericFactory_ptr );
TAO_LifeCycle_Export CORBA::Boolean operator>> (TAO_InputCDR &, CosLifeCycle::GenericFactory_ptr &);

// TAO_IDL - Generated from
// be/be_codegen.cpp:958

#if defined (__ACE_INLINE__)
#include "CosLifeCycleC.inl"
#endif /* defined __ACE_INLINE__ */

#if defined(_MSC_VER) && (_MSC_VER >= 1200)
#pragma warning(pop)
#endif /* _MSC_VER */

#if defined (__BORLANDC__)
#pragma option pop
#endif /* __BORLANDC__ */

#include /**/ "ace/post.h"

#endif /* ifndef */

