/* -*- C++ -*- */
//
// PollableS.cpp,v 1.11 2000/01/11 22:48:25 bala Exp
//
// ================================================================
//
// = LIBRARY
//   TAO
//
// = FILENAME
//   PollableS.cpp
//
// = DESCRIPTION
//   Generated from Pollable.pidl
//   The code was generated by the IDL compiler and then hand-crafted
//   to reduce the includes interdependencies.
//
// ================================================================

#include "tao/PollableS.h"

#if (TAO_HAS_CORBA_MESSAGING == 1) && (TAO_HAS_AMI_POLLER == 1)

#include "tao/Operation_Table.h"
#include "tao/Server_Request.h"
#include "tao/ORB.h"
#if !defined (__ACE_INLINE__)
#include "tao/PollableS.i"
#endif /* !defined INLINE */

ACE_RCSID(tao, PollableS, "PollableS.cpp,v 1.11 2000/01/11 22:48:25 bala Exp")

class TAO_CORBA_Pollable_Perfect_Hash_OpTable : public TAO_Perfect_Hash_OpTable
{
private:
  unsigned int hash (const char *str, unsigned int len);
public:
 const TAO_operation_db_entry * lookup (const char *str, unsigned int len);
};
/* starting time is 15:37:47 */
/* C++ code produced by gperf version 2.7 (GNU C++ version) */
/* Command-line: /project/macarena/coryan/head/ACE_wrappers/bin/gperf -m -M -J -c -C -D -E -T -f 0 -a -o -t -p -K opname_ -L C++ -Z TAO_CORBA_Pollable_Perfect_Hash_OpTable -N lookup  */
unsigned int
TAO_CORBA_Pollable_Perfect_Hash_OpTable::hash (const char *str, unsigned int len)
{
  static const unsigned char asso_values[] =
    {
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20,  0, 20,  0, 20,  0,
     20, 20, 20, 20, 20,  0, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20,  0, 20, 20, 20,
     20,  0, 20, 20, 20, 20, 20, 20,
    };
  return len + asso_values[str[len - 1]] + asso_values[str[0]];
}

const class TAO_operation_db_entry *
TAO_CORBA_Pollable_Perfect_Hash_OpTable::lookup (const char *str, unsigned int len)
{
  enum
    {
      TOTAL_KEYWORDS = 4,
      MIN_WORD_LENGTH = 5,
      MAX_WORD_LENGTH = 19,
      MIN_HASH_VALUE = 5,
      MAX_HASH_VALUE = 19,
      HASH_VALUE_RANGE = 15,
      DUPLICATES = 0
    };

  static const class TAO_operation_db_entry  wordlist[] =
    {
      {"",0}, {"",0}, {"",0}, {"",0}, {"",0},
      {"_is_a",  &POA_CORBA::Pollable::_is_a_skel},
      {"",0}, {"",0},
      {"is_ready",      &POA_CORBA::Pollable::is_ready_skel},
      {"",0}, {"",0}, {"",0}, {"",0},
      {"_non_existent",  &POA_CORBA::Pollable::_non_existent_skel},
      {"",0}, {"",0}, {"",0}, {"",0}, {"",0},
      {"create_pollable_set",   &POA_CORBA::Pollable::create_pollable_set_skel},
    };

  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
    {
      unsigned int key = hash (str, len);

      if (key <= MAX_HASH_VALUE && key >= MIN_HASH_VALUE)
        {
          const char *s = wordlist[key].opname_;

          if (*str == *s && !strncmp (str + 1, s + 1, len - 1))
            return &wordlist[key];
        }
    }
  return 0;
}
/* ending time is 15:37:47 */
TAO_CORBA_Pollable_Perfect_Hash_OpTable tao_CORBA_Pollable_optable;
// skeleton constructor
POA_CORBA::Pollable::Pollable (void)
{
  this->optable_ = &tao_CORBA_Pollable_optable;
}

// copy ctor
POA_CORBA::Pollable::Pollable (const Pollable& rhs)
  :   TAO_ServantBase (rhs)
{}
// skeleton destructor
POA_CORBA::Pollable::~Pollable (void)
{
}
void POA_CORBA::Pollable::is_ready_skel (
    CORBA::ServerRequest &_tao_server_request,
    void *_tao_object_reference,
    void * /* context */,
    CORBA::Environment &ACE_TRY_ENV
)
{
  TAO_InputCDR &_tao_in = _tao_server_request.incoming ();
  POA_CORBA::Pollable *_tao_impl = (POA_CORBA::Pollable *)_tao_object_reference;
  CORBA::Boolean _tao_retval = 0;
  CORBA::ULong timeout;
  if (!(
    (_tao_in >> timeout)
  ))
    ACE_THROW (CORBA::MARSHAL () );

  _tao_retval = _tao_impl->is_ready (
    timeout,
    ACE_TRY_ENV
  );
  ACE_CHECK;
  _tao_server_request.init_reply (ACE_TRY_ENV);
  ACE_CHECK;
  TAO_OutputCDR &_tao_out = _tao_server_request.outgoing ();
  if (!(
    (_tao_out << CORBA::Any::from_boolean (_tao_retval))
  ))
    ACE_THROW (CORBA::MARSHAL () );

}

void POA_CORBA::Pollable::create_pollable_set_skel (
    CORBA::ServerRequest &_tao_server_request,
    void *_tao_object_reference,
    void * /* context */,
    CORBA::Environment &ACE_TRY_ENV
)
{
  POA_CORBA::Pollable *_tao_impl = (POA_CORBA::Pollable *)_tao_object_reference;
  CORBA::PollableSet_var _tao_retval;
  _tao_retval = _tao_impl->create_pollable_set (
    ACE_TRY_ENV
  );
  ACE_CHECK;
  _tao_server_request.init_reply (ACE_TRY_ENV);
  ACE_CHECK;
  TAO_OutputCDR &_tao_out = _tao_server_request.outgoing ();
  if (!(
    (_tao_out << _tao_retval.in ())
  ))
    ACE_THROW (CORBA::MARSHAL () );

}

void POA_CORBA::Pollable::_is_a_skel (
    CORBA::ServerRequest &_tao_server_request,
    void * _tao_object_reference,
    void * /*context*/,
    CORBA::Environment &ACE_TRY_ENV
  )
{
  static const TAO_Param_Data_Skel CORBA_Pollable_is_a_paramdata [] =
  {
    {CORBA::_tc_boolean, 0, 0},
    {CORBA::_tc_string, CORBA::ARG_IN, 0}
  };
  static const TAO_Call_Data_Skel CORBA_Pollable_is_a_calldata =
  {"_is_a", 1, 2, CORBA_Pollable_is_a_paramdata};
  POA_CORBA::Pollable_ptr  _tao_impl = (POA_CORBA::Pollable_ptr) _tao_object_reference;
  CORBA::Boolean _tao_retval;
  CORBA::String_var _tao_value;
  _tao_server_request.demarshal (
    ACE_TRY_ENV,
    &CORBA_Pollable_is_a_calldata,
    &_tao_retval,
    &_tao_value.inout ()
  );
  ACE_CHECK;
  _tao_retval = _tao_impl->_is_a (_tao_value.in (), ACE_TRY_ENV);
  ACE_CHECK;
  _tao_server_request.marshal (
    ACE_TRY_ENV,
    &CORBA_Pollable_is_a_calldata,
    &_tao_retval,
    &_tao_value.inout ()
  );
}

CORBA::Boolean POA_CORBA::Pollable::_is_a (
    const char* value,
    CORBA::Environment &ACE_TRY_ENV
  )
{
  if (
    (!ACE_OS::strcmp ((char *)value, "IDL:omg.org/CORBA/Pollable:1.0")) ||
    (!ACE_OS::strcmp ((char *)value, CORBA::_tc_Object->id (ACE_TRY_ENV))))
      return 1;
    else
      return 0;
}

void POA_CORBA::Pollable::_non_existent_skel (
    CORBA::ServerRequest &_tao_server_request,
    void * /* _tao_object_reference */ ,
    void * /*context*/,
    CORBA::Environment &ACE_TRY_ENV
  )
{
  static const TAO_Param_Data_Skel CORBA_Pollable_non_existent_paramdata [] =
  {
    {CORBA::_tc_boolean, 0, 0}
  };
  static const TAO_Call_Data_Skel CORBA_Pollable_non_existent_calldata =
  {"_non_existent", 1, 1, CORBA_Pollable_non_existent_paramdata};
  CORBA::Boolean _tao_retval = 0;
  _tao_server_request.marshal (
    ACE_TRY_ENV,
    &CORBA_Pollable_non_existent_calldata,
    &_tao_retval
  );
}

void* POA_CORBA::Pollable::_downcast (
    const char* logical_type_id
  )
{
  if (ACE_OS::strcmp (logical_type_id, "IDL:omg.org/CORBA/Pollable:1.0") == 0)
    return ACE_static_cast (POA_CORBA::Pollable_ptr, this);
  if (ACE_OS::strcmp (logical_type_id, "IDL:omg.org/CORBA/Object:1.0") == 0)
    return ACE_static_cast(PortableServer::Servant, this);
  return 0;
}

void POA_CORBA::Pollable::_dispatch (CORBA::ServerRequest &req, void *context, CORBA::Environment &ACE_TRY_ENV)
{
  TAO_Skeleton skel; // pointer to skeleton for operation
  const char *opname = req.operation (); // retrieve operation name
  // find the skeleton corresponding to this opname
  if (this->_find (opname, skel) == -1)
  {
    ACE_ERROR ((LM_ERROR, "Bad operation <%s>\n", opname));
    ACE_THROW (CORBA_BAD_OPERATION ());
  }
  else
    skel (req, this, context, ACE_TRY_ENV);
}

const char* POA_CORBA::Pollable::_interface_repository_id (void) const
{
  return "IDL:omg.org/CORBA/Pollable:1.0";
}

POA_CORBA::_tao_collocated_Pollable::_tao_collocated_Pollable (
    POA_CORBA::Pollable_ptr  servant,
    TAO_Stub *stub
  )
  : ACE_CORBA_1 (Pollable) (),
    CORBA_Object (stub, servant, 1),
    servant_ (servant)
{
}

POA_CORBA::Pollable_ptr POA_CORBA::_tao_collocated_Pollable::_get_servant (void) const
{
  return this->servant_;
}

CORBA::Boolean POA_CORBA::_tao_collocated_Pollable::_is_a (
    const char* logical_type_id,
    CORBA::Environment &ACE_TRY_ENV
  )
{
  return this->servant_->_is_a (
      logical_type_id,
      ACE_TRY_ENV
    );
}

CORBA::Boolean POA_CORBA::_tao_collocated_Pollable::is_ready  (
    CORBA::ULong timeout,
    CORBA::Environment &ACE_TRY_ENV
  )
{
  return this->servant_->is_ready (
    timeout,
    ACE_TRY_ENV
  );
}

CORBA::PollableSet_ptr POA_CORBA::_tao_collocated_Pollable::create_pollable_set  (
    CORBA::Environment &ACE_TRY_ENV
  )
{
  return this->servant_->create_pollable_set (
    ACE_TRY_ENV
  );
}


CORBA::Pollable*
POA_CORBA::Pollable::_this (CORBA_Environment &ACE_TRY_ENV)
{
  TAO_Stub *stub = this->_create_stub (ACE_TRY_ENV);
  ACE_CHECK_RETURN (0);

  CORBA::Pollable *retval = CORBA::Pollable::_nil ();

  ACE_NEW_RETURN (retval,
                  POA_CORBA::_tao_collocated_Pollable (this,
                                                       stub),
                  CORBA::Pollable::_nil ());

  return retval;
}

class TAO_CORBA_DIIPollable_Perfect_Hash_OpTable : public TAO_Perfect_Hash_OpTable
{
private:
  unsigned int hash (const char *str, unsigned int len);
public:
 const TAO_operation_db_entry * lookup (const char *str, unsigned int len);
};
/* starting time is 15:37:47 */
/* C++ code produced by gperf version 2.7 (GNU C++ version) */
/* Command-line: /project/macarena/coryan/head/ACE_wrappers/bin/gperf -m -M -J -c -C -D -E -T -f 0 -a -o -t -p -K opname_ -L C++ -Z TAO_CORBA_DIIPollable_Perfect_Hash_OpTable -N lookup  */
unsigned int
TAO_CORBA_DIIPollable_Perfect_Hash_OpTable::hash (const char *str, unsigned int len)
{
  static const unsigned char asso_values[] =
    {
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20,  0, 20,  0, 20,  0,
     20, 20, 20, 20, 20,  0, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20,  0, 20, 20, 20,
     20,  0, 20, 20, 20, 20, 20, 20,
    };
  return len + asso_values[str[len - 1]] + asso_values[str[0]];
}

const class TAO_operation_db_entry *
TAO_CORBA_DIIPollable_Perfect_Hash_OpTable::lookup (const char *str, unsigned int len)
{
  enum
    {
      TOTAL_KEYWORDS = 4,
      MIN_WORD_LENGTH = 5,
      MAX_WORD_LENGTH = 19,
      MIN_HASH_VALUE = 5,
      MAX_HASH_VALUE = 19,
      HASH_VALUE_RANGE = 15,
      DUPLICATES = 0
    };

  static const class TAO_operation_db_entry  wordlist[] =
    {
      {"",0}, {"",0}, {"",0}, {"",0}, {"",0},
      {"_is_a",  &POA_CORBA::DIIPollable::_is_a_skel},
      {"",0}, {"",0},
      {"is_ready",      &POA_CORBA::DIIPollable::is_ready_skel},
      {"",0}, {"",0}, {"",0}, {"",0},
      {"_non_existent",  &POA_CORBA::DIIPollable::_non_existent_skel},
      {"",0}, {"",0}, {"",0}, {"",0}, {"",0},
      {"create_pollable_set",   &POA_CORBA::DIIPollable::create_pollable_set_skel},
    };

  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
    {
      unsigned int key = hash (str, len);

      if (key <= MAX_HASH_VALUE && key >= MIN_HASH_VALUE)
        {
          const char *s = wordlist[key].opname_;

          if (*str == *s && !strncmp (str + 1, s + 1, len - 1))
            return &wordlist[key];
        }
    }
  return 0;
}
/* ending time is 15:37:47 */
TAO_CORBA_DIIPollable_Perfect_Hash_OpTable tao_CORBA_DIIPollable_optable;
// skeleton constructor
POA_CORBA::DIIPollable::DIIPollable (void)
{
  this->optable_ = &tao_CORBA_DIIPollable_optable;
}

// copy ctor
POA_CORBA::DIIPollable::DIIPollable (const DIIPollable& rhs)
  :   ACE_NESTED_CLASS (POA_CORBA,Pollable) (rhs),
    TAO_ServantBase (rhs)
{}
// skeleton destructor
POA_CORBA::DIIPollable::~DIIPollable (void)
{
}
void POA_CORBA::DIIPollable::_is_a_skel (
    CORBA::ServerRequest &_tao_server_request,
    void * _tao_object_reference,
    void * /*context*/,
    CORBA::Environment &ACE_TRY_ENV
  )
{
  static const TAO_Param_Data_Skel CORBA_DIIPollable_is_a_paramdata [] =
  {
    {CORBA::_tc_boolean, 0, 0},
    {CORBA::_tc_string, CORBA::ARG_IN, 0}
  };
  static const TAO_Call_Data_Skel CORBA_DIIPollable_is_a_calldata =
  {"_is_a", 1, 2, CORBA_DIIPollable_is_a_paramdata};
  POA_CORBA::DIIPollable_ptr  _tao_impl = (POA_CORBA::DIIPollable_ptr) _tao_object_reference;
  CORBA::Boolean _tao_retval;
  CORBA::String_var _tao_value;
  _tao_server_request.demarshal (
    ACE_TRY_ENV,
    &CORBA_DIIPollable_is_a_calldata,
    &_tao_retval,
    &_tao_value.inout ()
  );
  ACE_CHECK;
  _tao_retval = _tao_impl->_is_a (_tao_value.in (), ACE_TRY_ENV);
  ACE_CHECK;
  _tao_server_request.marshal (
    ACE_TRY_ENV,
    &CORBA_DIIPollable_is_a_calldata,
    &_tao_retval,
    &_tao_value.inout ()
  );
}

CORBA::Boolean POA_CORBA::DIIPollable::_is_a (
    const char* value,
    CORBA::Environment &ACE_TRY_ENV
  )
{
  if (
    (!ACE_OS::strcmp ((char *)value, "IDL:omg.org/CORBA/DIIPollable:1.0")) ||
    (!ACE_OS::strcmp ((char *)value, "IDL:omg.org/CORBA/Pollable:1.0")) ||
    (!ACE_OS::strcmp ((char *)value, CORBA::_tc_Object->id (ACE_TRY_ENV))))
      return 1;
    else
      return 0;
}

void POA_CORBA::DIIPollable::_non_existent_skel (
    CORBA::ServerRequest &_tao_server_request,
    void * /* _tao_object_reference */ ,
    void * /*context*/,
    CORBA::Environment &ACE_TRY_ENV
  )
{
  static const TAO_Param_Data_Skel CORBA_DIIPollable_non_existent_paramdata [] =
  {
    {CORBA::_tc_boolean, 0, 0}
  };
  static const TAO_Call_Data_Skel CORBA_DIIPollable_non_existent_calldata =
  {"_non_existent", 1, 1, CORBA_DIIPollable_non_existent_paramdata};
  CORBA::Boolean _tao_retval = 0;
  _tao_server_request.marshal (
    ACE_TRY_ENV,
    &CORBA_DIIPollable_non_existent_calldata,
    &_tao_retval
  );
}

void* POA_CORBA::DIIPollable::_downcast (
    const char* logical_type_id
  )
{
  if (ACE_OS::strcmp (logical_type_id, "IDL:omg.org/CORBA/DIIPollable:1.0") == 0)
    return ACE_static_cast (POA_CORBA::DIIPollable_ptr, this);
  if (ACE_OS::strcmp (logical_type_id, "IDL:omg.org/CORBA/Pollable:1.0") == 0)
    return ACE_static_cast (POA_CORBA::Pollable_ptr, this);
  if (ACE_OS::strcmp (logical_type_id, "IDL:omg.org/CORBA/Object:1.0") == 0)
    return ACE_static_cast(PortableServer::Servant, this);
  return 0;
}

void POA_CORBA::DIIPollable::_dispatch (CORBA::ServerRequest &req, void *context, CORBA::Environment &ACE_TRY_ENV)
{
  TAO_Skeleton skel; // pointer to skeleton for operation
  const char *opname = req.operation (); // retrieve operation name
  // find the skeleton corresponding to this opname
  if (this->_find (opname, skel) == -1)
  {
    ACE_ERROR ((LM_ERROR, "Bad operation <%s>\n", opname));
    ACE_THROW (CORBA_BAD_OPERATION ());
  }
  else
    skel (req, this, context, ACE_TRY_ENV);
}

const char* POA_CORBA::DIIPollable::_interface_repository_id (void) const
{
  return "IDL:omg.org/CORBA/DIIPollable:1.0";
}

POA_CORBA::_tao_collocated_DIIPollable::_tao_collocated_DIIPollable (
    POA_CORBA::DIIPollable_ptr  servant,
    TAO_Stub *stub
  )
  : ACE_CORBA_1 (DIIPollable) (),
    ACE_NESTED_CLASS (POA_CORBA,_tao_collocated_Pollable) (servant, stub),
    CORBA_Object (stub, servant, 1),
    servant_ (servant)
{
}

POA_CORBA::DIIPollable_ptr POA_CORBA::_tao_collocated_DIIPollable::_get_servant (void) const
{
  return this->servant_;
}

CORBA::Boolean POA_CORBA::_tao_collocated_DIIPollable::_is_a (
    const char* logical_type_id,
    CORBA::Environment &ACE_TRY_ENV
  )
{
  return this->servant_->_is_a (
      logical_type_id,
      ACE_TRY_ENV
    );
}


CORBA::DIIPollable*
POA_CORBA::DIIPollable::_this (CORBA_Environment &ACE_TRY_ENV)
{
  TAO_Stub *stub = this->_create_stub (ACE_TRY_ENV);
  ACE_CHECK_RETURN (0);

  CORBA::DIIPollable *retval = CORBA::DIIPollable::_nil ();

  ACE_NEW_RETURN (retval,
                  POA_CORBA::_tao_collocated_DIIPollable (this,
                                                          stub),
                  CORBA::DIIPollable::_nil ());

  return retval;
}

class TAO_CORBA_PollableSet_Perfect_Hash_OpTable : public TAO_Perfect_Hash_OpTable
{
private:
  unsigned int hash (const char *str, unsigned int len);
public:
 const TAO_operation_db_entry * lookup (const char *str, unsigned int len);
};
/* starting time is 15:37:47 */
/* C++ code produced by gperf version 2.7 (GNU C++ version) */
/* Command-line: /project/macarena/coryan/head/ACE_wrappers/bin/gperf -m -M -J -c -C -D -E -T -f 0 -a -o -t -p -K opname_ -L C++ -Z TAO_CORBA_PollableSet_Perfect_Hash_OpTable -N lookup  */
unsigned int
TAO_CORBA_PollableSet_Perfect_Hash_OpTable::hash (const char *str, unsigned int len)
{
  static const unsigned char asso_values[] =
    {
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
     20, 20, 20, 20, 20,  0, 20,  0, 20,  0,
     20,  0, 20, 20, 20, 20, 20, 20,  0, 20,
      0, 20,  0, 20,  0, 20,  0, 20, 20, 20,
     20, 20, 20, 20, 20, 20, 20, 20,
    };
  return len + asso_values[str[len - 1]] + asso_values[str[0]];
}

const class TAO_operation_db_entry *
TAO_CORBA_PollableSet_Perfect_Hash_OpTable::lookup (const char *str, unsigned int len)
{
  enum
    {
      TOTAL_KEYWORDS = 7,
      MIN_WORD_LENGTH = 4,
      MAX_WORD_LENGTH = 19,
      MIN_HASH_VALUE = 4,
      MAX_HASH_VALUE = 19,
      HASH_VALUE_RANGE = 16,
      DUPLICATES = 0
    };

  static const class TAO_operation_db_entry  wordlist[] =
    {
      {"",0}, {"",0}, {"",0}, {"",0},
      {"poll",  &POA_CORBA::PollableSet::poll_skel},
      {"_is_a",  &POA_CORBA::PollableSet::_is_a_skel},
      {"remove",        &POA_CORBA::PollableSet::remove_skel},
      {"",0}, {"",0}, {"",0}, {"",0},
      {"number_left",   &POA_CORBA::PollableSet::number_left_skel},
      {"add_pollable",  &POA_CORBA::PollableSet::add_pollable_skel},
      {"_non_existent",  &POA_CORBA::PollableSet::_non_existent_skel},
      {"",0}, {"",0}, {"",0}, {"",0}, {"",0},
      {"create_dii_pollable",   &POA_CORBA::PollableSet::create_dii_pollable_skel},
    };

  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
    {
      unsigned int key = hash (str, len);

      if (key <= MAX_HASH_VALUE && key >= MIN_HASH_VALUE)
        {
          const char *s = wordlist[key].opname_;

          if (*str == *s && !strncmp (str + 1, s + 1, len - 1))
            return &wordlist[key];
        }
    }
  return 0;
}
/* ending time is 15:37:47 */
TAO_CORBA_PollableSet_Perfect_Hash_OpTable tao_CORBA_PollableSet_optable;
// skeleton constructor
POA_CORBA::PollableSet::PollableSet (void)
{
  this->optable_ = &tao_CORBA_PollableSet_optable;
}

// copy ctor
POA_CORBA::PollableSet::PollableSet (const PollableSet& rhs)
  :   TAO_ServantBase (rhs)
{}
// skeleton destructor
POA_CORBA::PollableSet::~PollableSet (void)
{
}
void POA_CORBA::PollableSet::create_dii_pollable_skel (
    CORBA::ServerRequest &_tao_server_request,
    void *_tao_object_reference,
    void * /* context */,
    CORBA::Environment &ACE_TRY_ENV
)
{
  POA_CORBA::PollableSet *_tao_impl = (POA_CORBA::PollableSet *)_tao_object_reference;
  CORBA::DIIPollable_var _tao_retval;
  _tao_retval = _tao_impl->create_dii_pollable (
    ACE_TRY_ENV
  );
  ACE_CHECK;
  _tao_server_request.init_reply (ACE_TRY_ENV);
  ACE_CHECK;
  TAO_OutputCDR &_tao_out = _tao_server_request.outgoing ();
  if (!(
    (_tao_out << _tao_retval.in ())
  ))
    ACE_THROW (CORBA::MARSHAL () );

}

void POA_CORBA::PollableSet::add_pollable_skel (
    CORBA::ServerRequest &_tao_server_request,
    void *_tao_object_reference,
    void * /* context */,
    CORBA::Environment &ACE_TRY_ENV
)
{
  TAO_InputCDR &_tao_in = _tao_server_request.incoming ();
  POA_CORBA::PollableSet *_tao_impl = (POA_CORBA::PollableSet *)_tao_object_reference;
  CORBA::Pollable_var potential;
  if (!(
    (_tao_in >> potential.out ())
  ))
    ACE_THROW (CORBA::MARSHAL () );

  _tao_impl->add_pollable (
    potential.in (),
    ACE_TRY_ENV
  );
  ACE_CHECK;
  _tao_server_request.init_reply (ACE_TRY_ENV);
}

void POA_CORBA::PollableSet::poll_skel (
    CORBA::ServerRequest &_tao_server_request,
    void *_tao_object_reference,
    void * /* context */,
    CORBA::Environment &ACE_TRY_ENV
)
{
  TAO_InputCDR &_tao_in = _tao_server_request.incoming ();
  POA_CORBA::PollableSet *_tao_impl = (POA_CORBA::PollableSet *)_tao_object_reference;
  CORBA::Pollable_var _tao_retval;
  CORBA::ULong timeout;
  if (!(
    (_tao_in >> timeout)
  ))
    ACE_THROW (CORBA::MARSHAL () );

  _tao_retval = _tao_impl->poll (
    timeout,
    ACE_TRY_ENV
  );
  ACE_CHECK;
  _tao_server_request.init_reply (ACE_TRY_ENV);
  ACE_CHECK;
  TAO_OutputCDR &_tao_out = _tao_server_request.outgoing ();
  if (!(
    (_tao_out << _tao_retval.in ())
  ))
    ACE_THROW (CORBA::MARSHAL () );

}

void POA_CORBA::PollableSet::remove_skel (
    CORBA::ServerRequest &_tao_server_request,
    void *_tao_object_reference,
    void * /* context */,
    CORBA::Environment &ACE_TRY_ENV
)
{
  TAO_InputCDR &_tao_in = _tao_server_request.incoming ();
  POA_CORBA::PollableSet *_tao_impl = (POA_CORBA::PollableSet *)_tao_object_reference;
  CORBA::Pollable_var potential;
  if (!(
    (_tao_in >> potential.out ())
  ))
    ACE_THROW (CORBA::MARSHAL () );

  _tao_impl->remove (
    potential.in (),
    ACE_TRY_ENV
  );
  ACE_CHECK;
  _tao_server_request.init_reply (ACE_TRY_ENV);
}

void POA_CORBA::PollableSet::number_left_skel (
    CORBA::ServerRequest &_tao_server_request,
    void *_tao_object_reference,
    void * /* context */,
    CORBA::Environment &ACE_TRY_ENV
)
{
  POA_CORBA::PollableSet *_tao_impl = (POA_CORBA::PollableSet *)_tao_object_reference;
  CORBA::UShort _tao_retval = 0;
  _tao_retval = _tao_impl->number_left (
    ACE_TRY_ENV
  );
  ACE_CHECK;
  _tao_server_request.init_reply (ACE_TRY_ENV);
  ACE_CHECK;
  TAO_OutputCDR &_tao_out = _tao_server_request.outgoing ();
  if (!(
    (_tao_out << _tao_retval)
  ))
    ACE_THROW (CORBA::MARSHAL () );

}

void POA_CORBA::PollableSet::_is_a_skel (
    CORBA::ServerRequest &_tao_server_request,
    void * _tao_object_reference,
    void * /*context*/,
    CORBA::Environment &ACE_TRY_ENV
  )
{
  static const TAO_Param_Data_Skel CORBA_PollableSet_is_a_paramdata [] =
  {
    {CORBA::_tc_boolean, 0, 0},
    {CORBA::_tc_string, CORBA::ARG_IN, 0}
  };
  static const TAO_Call_Data_Skel CORBA_PollableSet_is_a_calldata =
  {"_is_a", 1, 2, CORBA_PollableSet_is_a_paramdata};
  POA_CORBA::PollableSet_ptr  _tao_impl = (POA_CORBA::PollableSet_ptr) _tao_object_reference;
  CORBA::Boolean _tao_retval;
  CORBA::String_var _tao_value;
  _tao_server_request.demarshal (
    ACE_TRY_ENV,
    &CORBA_PollableSet_is_a_calldata,
    &_tao_retval,
    &_tao_value.inout ()
  );
  ACE_CHECK;
  _tao_retval = _tao_impl->_is_a (_tao_value.in (), ACE_TRY_ENV);
  ACE_CHECK;
  _tao_server_request.marshal (
    ACE_TRY_ENV,
    &CORBA_PollableSet_is_a_calldata,
    &_tao_retval,
    &_tao_value.inout ()
  );
}

CORBA::Boolean POA_CORBA::PollableSet::_is_a (
    const char* value,
    CORBA::Environment &ACE_TRY_ENV
  )
{
  if (
    (!ACE_OS::strcmp ((char *)value, "IDL:omg.org/CORBA/PollableSet:1.0")) ||
    (!ACE_OS::strcmp ((char *)value, CORBA::_tc_Object->id (ACE_TRY_ENV))))
      return 1;
    else
      return 0;
}

void POA_CORBA::PollableSet::_non_existent_skel (
    CORBA::ServerRequest &_tao_server_request,
    void * /* _tao_object_reference */ ,
    void * /*context*/,
    CORBA::Environment &ACE_TRY_ENV
  )
{
  static const TAO_Param_Data_Skel CORBA_PollableSet_non_existent_paramdata [] =
  {
    {CORBA::_tc_boolean, 0, 0}
  };
  static const TAO_Call_Data_Skel CORBA_PollableSet_non_existent_calldata =
  {"_non_existent", 1, 1, CORBA_PollableSet_non_existent_paramdata};
  CORBA::Boolean _tao_retval = 0;
  _tao_server_request.marshal (
    ACE_TRY_ENV,
    &CORBA_PollableSet_non_existent_calldata,
    &_tao_retval
  );
}

void* POA_CORBA::PollableSet::_downcast (
    const char* logical_type_id
  )
{
  if (ACE_OS::strcmp (logical_type_id, "IDL:omg.org/CORBA/PollableSet:1.0") == 0)
    return ACE_static_cast (POA_CORBA::PollableSet_ptr, this);
  if (ACE_OS::strcmp (logical_type_id, "IDL:omg.org/CORBA/Object:1.0") == 0)
    return ACE_static_cast(PortableServer::Servant, this);
  return 0;
}

void POA_CORBA::PollableSet::_dispatch (CORBA::ServerRequest &req, void *context, CORBA::Environment &ACE_TRY_ENV)
{
  TAO_Skeleton skel; // pointer to skeleton for operation
  const char *opname = req.operation (); // retrieve operation name
  // find the skeleton corresponding to this opname
  if (this->_find (opname, skel) == -1)
  {
    ACE_ERROR ((LM_ERROR, "Bad operation <%s>\n", opname));
    ACE_THROW (CORBA_BAD_OPERATION ());
  }
  else
    skel (req, this, context, ACE_TRY_ENV);
}

const char* POA_CORBA::PollableSet::_interface_repository_id (void) const
{
  return "IDL:omg.org/CORBA/PollableSet:1.0";
}

POA_CORBA::_tao_collocated_PollableSet::_tao_collocated_PollableSet (
    POA_CORBA::PollableSet_ptr  servant,
    TAO_Stub *stub
  )
  : ACE_CORBA_1 (PollableSet) (),
    CORBA_Object (stub, servant, 1),
    servant_ (servant)
{
}

POA_CORBA::PollableSet_ptr POA_CORBA::_tao_collocated_PollableSet::_get_servant (void) const
{
  return this->servant_;
}

CORBA::Boolean POA_CORBA::_tao_collocated_PollableSet::_is_a (
    const char* logical_type_id,
    CORBA::Environment &ACE_TRY_ENV
  )
{
  return this->servant_->_is_a (
      logical_type_id,
      ACE_TRY_ENV
    );
}

CORBA::DIIPollable_ptr POA_CORBA::_tao_collocated_PollableSet::create_dii_pollable  (
    CORBA::Environment &ACE_TRY_ENV
  )
{
  return this->servant_->create_dii_pollable (
    ACE_TRY_ENV
  );
}

void POA_CORBA::_tao_collocated_PollableSet::add_pollable  (
    CORBA::Pollable_ptr potential,
    CORBA::Environment &ACE_TRY_ENV
  )
{
  this->servant_->add_pollable (
    potential,
    ACE_TRY_ENV
  );
}

CORBA::Pollable_ptr POA_CORBA::_tao_collocated_PollableSet::poll  (
    CORBA::ULong timeout,
    CORBA::Environment &ACE_TRY_ENV
  )
{
  return this->servant_->poll (
    timeout,
    ACE_TRY_ENV
  );
}

void POA_CORBA::_tao_collocated_PollableSet::remove  (
    CORBA::Pollable_ptr potential,
    CORBA::Environment &ACE_TRY_ENV
  )
{
  this->servant_->remove (
    potential,
    ACE_TRY_ENV
  );
}

CORBA::UShort POA_CORBA::_tao_collocated_PollableSet::number_left  (
    CORBA::Environment &ACE_TRY_ENV
  )
{
  return this->servant_->number_left (
    ACE_TRY_ENV
  );
}


CORBA::PollableSet*
POA_CORBA::PollableSet::_this (CORBA_Environment &ACE_TRY_ENV)
{
  TAO_Stub *stub = this->_create_stub (ACE_TRY_ENV);
  ACE_CHECK_RETURN (0);

  CORBA::PollableSet *retval = CORBA::PollableSet::_nil ();

  ACE_NEW_RETURN (retval,
                  POA_CORBA::_tao_collocated_PollableSet (this,
                                                          stub),
                  CORBA::PollableSet::_nil ());

  return retval;
}
#endif /* TAO_HAS_CORBA_MESSAGING == 1 && TAO_HAS_AMI_POLLER == 1 */
