// This file is generated by omniidl (C++ backend)- omniORB_3_0. Do not edit.

#include "tp1.hh"
#include <omniORB3/callDescriptor.h>

static const char* _0RL_library_version = omniORB_3_0;

bookmark_ptr bookmark_Helper::_nil() {
  return bookmark::_nil();
}

CORBA::Boolean bookmark_Helper::is_nil(bookmark_ptr p) {
  return CORBA::is_nil(p);

}

void bookmark_Helper::release(bookmark_ptr p) {
  CORBA::release(p);
}

void bookmark_Helper::duplicate(bookmark_ptr p) {
  if( p && !p->_NP_is_nil() )  omni::duplicateObjRef(p);
}

size_t bookmark_Helper::NP_alignedSize(bookmark_ptr obj, size_t offset) {
  return bookmark::_alignedSize(obj, offset);
}

void bookmark_Helper::marshalObjRef(bookmark_ptr obj, NetBufferedStream& s) {
  bookmark::_marshalObjRef(obj, s);
}

bookmark_ptr bookmark_Helper::unmarshalObjRef(NetBufferedStream& s) {
  return bookmark::_unmarshalObjRef(s);
}

void bookmark_Helper::marshalObjRef(bookmark_ptr obj, MemBufferedStream& s) {
  bookmark::_marshalObjRef(obj, s);
}

bookmark_ptr bookmark_Helper::unmarshalObjRef(MemBufferedStream& s) {
  return bookmark::_unmarshalObjRef(s);
}

bookmark_ptr
bookmark::_duplicate(bookmark_ptr obj)
{
  if( obj && !obj->_NP_is_nil() )  omni::duplicateObjRef(obj);

  return obj;
}

bookmark_ptr
bookmark::_narrow(CORBA::Object_ptr obj)
{
  if( !obj || obj->_NP_is_nil() || obj->_NP_is_pseudo() ) return _nil();
  _ptr_type e = (_ptr_type) obj->_PR_getobj()->_realNarrow(_PD_repoId);
  return e ? e : _nil();
}

bookmark_ptr
bookmark::_nil()
{
  static _objref_bookmark* _the_nil_ptr = 0;
  if( !_the_nil_ptr ) {
    omni::nilRefLock().lock();
  if( !_the_nil_ptr )  _the_nil_ptr = new _objref_bookmark;
    omni::nilRefLock().unlock();
  }
  return _the_nil_ptr;
}

const char* bookmark::_PD_repoId = "IDL:bookmark:1.0";

_objref_bookmark::~_objref_bookmark() {}

_objref_bookmark::_objref_bookmark(const char* mdri,
   IOP::TaggedProfileList* p, omniIdentity* id, omniLocalIdentity* lid) :
   
   omniObjRef(bookmark::_PD_repoId, mdri, p, id, lid)
{
  _PR_setobj(this);
}

void*
_objref_bookmark::_ptrToObjRef(const char* id)
{
  if( !strcmp(id, CORBA::Object::_PD_repoId) )
    return (CORBA::Object_ptr) this;
  if( !strcmp(id, bookmark::_PD_repoId) )
    return (bookmark_ptr) this;
  
  return 0;
}

// Proxy call descriptor class. Mangled signature:
//  void_i_cstring_i_cstring
class _0RL_cd_9e8d9bfd74e0160a_00000000
  : public omniCallDescriptor
{
public:
  inline _0RL_cd_9e8d9bfd74e0160a_00000000(LocalCallFn lcfn, const char* op, size_t oplen, _CORBA_Boolean oneway, const char* a_0, const char* a_1):
     omniCallDescriptor(lcfn, op, oplen, oneway),
     arg_0(a_0),
     arg_1(a_1) {}

  virtual CORBA::ULong alignedSize(CORBA::ULong size_in);
  virtual void marshalArguments(GIOP_C&);
  
  const char* arg_0;
  const char* arg_1;
  
};

CORBA::ULong _0RL_cd_9e8d9bfd74e0160a_00000000::alignedSize(CORBA::ULong msgsize)
{
  msgsize = omni::align_to(msgsize, omni::ALIGN_4) + 4;
  msgsize += ((const char*) arg_0) ? strlen((const char*) arg_0) + 1 : 1;
  
  msgsize = omni::align_to(msgsize, omni::ALIGN_4) + 4;
  msgsize += ((const char*) arg_1) ? strlen((const char*) arg_1) + 1 : 1;
  
  return msgsize;
}

void _0RL_cd_9e8d9bfd74e0160a_00000000::marshalArguments(GIOP_C& giop_client)
{
  {
    CORBA::ULong _len = (((const char*) arg_0)? strlen((const char*) arg_0) + 1 : 1);
    
    _len >>= giop_client;
    if (_len > 1)
      giop_client.put_char_array((const CORBA::Char *)((const char*)arg_0),_len);
    else {
      if ((const char*) arg_0 == 0 && omniORB::traceLevel > 1)
        _CORBA_null_string_ptr(0);
      CORBA::Char('\0') >>= giop_client;
    }
  }
  {
    CORBA::ULong _len = (((const char*) arg_1)? strlen((const char*) arg_1) + 1 : 1);
    
    _len >>= giop_client;
    if (_len > 1)
      giop_client.put_char_array((const CORBA::Char *)((const char*)arg_1),_len);
    else {
      if ((const char*) arg_1 == 0 && omniORB::traceLevel > 1)
        _CORBA_null_string_ptr(0);
      CORBA::Char('\0') >>= giop_client;
    }
  }
  
}

// Local call call-back function.
static void
_0RL_lcfn_9e8d9bfd74e0160a_10000000(omniCallDescriptor* cd, omniServant* svnt)
{
  _0RL_cd_9e8d9bfd74e0160a_00000000* tcd = (_0RL_cd_9e8d9bfd74e0160a_00000000*) cd;
  _impl_bookmark* impl = (_impl_bookmark*) svnt->_ptrToInterface(bookmark::_PD_repoId);
  impl->Ajouter(tcd->arg_0, tcd->arg_1);
}

void _objref_bookmark::Ajouter(const char* alias, const char* url)
{
  _0RL_cd_9e8d9bfd74e0160a_00000000 _call_desc(_0RL_lcfn_9e8d9bfd74e0160a_10000000, "Ajouter", 8, 0, alias, url);
  
  _invoke(_call_desc);
  
}

// Proxy call descriptor class. Mangled signature:
//  void_i_cstring
class _0RL_cd_9e8d9bfd74e0160a_20000000
  : public omniCallDescriptor
{
public:
  inline _0RL_cd_9e8d9bfd74e0160a_20000000(LocalCallFn lcfn, const char* op, size_t oplen, _CORBA_Boolean oneway, const char* a_0):
     omniCallDescriptor(lcfn, op, oplen, oneway),
     arg_0(a_0) {}

  virtual CORBA::ULong alignedSize(CORBA::ULong size_in);
  virtual void marshalArguments(GIOP_C&);
  
  const char* arg_0;
  
};

CORBA::ULong _0RL_cd_9e8d9bfd74e0160a_20000000::alignedSize(CORBA::ULong msgsize)
{
  msgsize = omni::align_to(msgsize, omni::ALIGN_4) + 4;
  msgsize += ((const char*) arg_0) ? strlen((const char*) arg_0) + 1 : 1;
  
  return msgsize;
}

void _0RL_cd_9e8d9bfd74e0160a_20000000::marshalArguments(GIOP_C& giop_client)
{
  {
    CORBA::ULong _len = (((const char*) arg_0)? strlen((const char*) arg_0) + 1 : 1);
    
    _len >>= giop_client;
    if (_len > 1)
      giop_client.put_char_array((const CORBA::Char *)((const char*)arg_0),_len);
    else {
      if ((const char*) arg_0 == 0 && omniORB::traceLevel > 1)
        _CORBA_null_string_ptr(0);
      CORBA::Char('\0') >>= giop_client;
    }
  }
  
}

// Local call call-back function.
static void
_0RL_lcfn_9e8d9bfd74e0160a_30000000(omniCallDescriptor* cd, omniServant* svnt)
{
  _0RL_cd_9e8d9bfd74e0160a_20000000* tcd = (_0RL_cd_9e8d9bfd74e0160a_20000000*) cd;
  _impl_bookmark* impl = (_impl_bookmark*) svnt->_ptrToInterface(bookmark::_PD_repoId);
  impl->Supprimer(tcd->arg_0);
}

void _objref_bookmark::Supprimer(const char* alias)
{
  _0RL_cd_9e8d9bfd74e0160a_20000000 _call_desc(_0RL_lcfn_9e8d9bfd74e0160a_30000000, "Supprimer", 10, 0, alias);
  
  _invoke(_call_desc);
  
}

// Proxy call descriptor class. Mangled signature:
//  _cstring_i_cstring
class _0RL_cd_9e8d9bfd74e0160a_40000000
  : public omniCallDescriptor
{
public:
  inline _0RL_cd_9e8d9bfd74e0160a_40000000(LocalCallFn lcfn, const char* op, size_t oplen, _CORBA_Boolean oneway, const char* a_0):
     omniCallDescriptor(lcfn, op, oplen, oneway),
     arg_0(a_0) {}

  virtual CORBA::ULong alignedSize(CORBA::ULong size_in);
  virtual void marshalArguments(GIOP_C&);
  
  virtual void unmarshalReturnedValues(GIOP_C&);
    
  inline char * result() { return pd_result; }
  const char* arg_0;
  char * pd_result;
};

CORBA::ULong _0RL_cd_9e8d9bfd74e0160a_40000000::alignedSize(CORBA::ULong msgsize)
{
  msgsize = omni::align_to(msgsize, omni::ALIGN_4) + 4;
  msgsize += ((const char*) arg_0) ? strlen((const char*) arg_0) + 1 : 1;
  
  return msgsize;
}

void _0RL_cd_9e8d9bfd74e0160a_40000000::marshalArguments(GIOP_C& giop_client)
{
  {
    CORBA::ULong _len = (((const char*) arg_0)? strlen((const char*) arg_0) + 1 : 1);
    
    _len >>= giop_client;
    if (_len > 1)
      giop_client.put_char_array((const CORBA::Char *)((const char*)arg_0),_len);
    else {
      if ((const char*) arg_0 == 0 && omniORB::traceLevel > 1)
        _CORBA_null_string_ptr(0);
      CORBA::Char('\0') >>= giop_client;
    }
  }
  
}

void _0RL_cd_9e8d9bfd74e0160a_40000000::unmarshalReturnedValues(GIOP_C& giop_client)
{
  
  {
    CORBA::String_member _0RL_str_tmp;
    _0RL_str_tmp <<=  giop_client;
    pd_result = _0RL_str_tmp._ptr;
    _0RL_str_tmp._ptr = 0;
  }
  
}

// Local call call-back function.
static void
_0RL_lcfn_9e8d9bfd74e0160a_50000000(omniCallDescriptor* cd, omniServant* svnt)
{
  _0RL_cd_9e8d9bfd74e0160a_40000000* tcd = (_0RL_cd_9e8d9bfd74e0160a_40000000*) cd;
  _impl_bookmark* impl = (_impl_bookmark*) svnt->_ptrToInterface(bookmark::_PD_repoId);
  tcd->pd_result = impl->Recherche(tcd->arg_0);
}

char* _objref_bookmark::Recherche(const char* alias)
{
  _0RL_cd_9e8d9bfd74e0160a_40000000 _call_desc(_0RL_lcfn_9e8d9bfd74e0160a_50000000, "Recherche", 10, 0, alias);
  
  _invoke(_call_desc);
  return _call_desc.result();
}

// Local call call-back function.
static void
_0RL_lcfn_9e8d9bfd74e0160a_60000000(omniCallDescriptor* cd, omniServant* svnt)
{
  _0RL_cd_9e8d9bfd74e0160a_20000000* tcd = (_0RL_cd_9e8d9bfd74e0160a_20000000*) cd;
  _impl_bookmark* impl = (_impl_bookmark*) svnt->_ptrToInterface(bookmark::_PD_repoId);
  impl->Sauvegarder(tcd->arg_0);
}

void _objref_bookmark::Sauvegarder(const char* fichier)
{
  _0RL_cd_9e8d9bfd74e0160a_20000000 _call_desc(_0RL_lcfn_9e8d9bfd74e0160a_60000000, "Sauvegarder", 12, 0, fichier);
  
  _invoke(_call_desc);
  
}

_pof_bookmark::~_pof_bookmark() {}

omniObjRef*
_pof_bookmark::newObjRef(const char* mdri, IOP::TaggedProfileList* p,
               omniIdentity* id, omniLocalIdentity* lid)
{
  return new _objref_bookmark(mdri, p, id, lid);
}

CORBA::Boolean
_pof_bookmark::is_a(const char* id) const
{
  if( !strcmp(id, bookmark::_PD_repoId) )
    return 1;
  
  return 0;
}

const _pof_bookmark _the_pof_bookmark;

_impl_bookmark::~_impl_bookmark() {}

CORBA::Boolean
_impl_bookmark::_dispatch(GIOP_S& giop_s)
{
  if( !strcmp(giop_s.operation(), "Ajouter") ) {
    
    CORBA::String_var arg_alias;
    
    {
      CORBA::String_member _0RL_str_tmp;
      _0RL_str_tmp <<=  giop_s;
      arg_alias = _0RL_str_tmp._ptr;
      _0RL_str_tmp._ptr = 0;
    }
    CORBA::String_var arg_url;
    
    {
      CORBA::String_member _0RL_str_tmp;
      _0RL_str_tmp <<=  giop_s;
      arg_url = _0RL_str_tmp._ptr;
      _0RL_str_tmp._ptr = 0;
    }
    
    giop_s.RequestReceived();
    
    this->Ajouter(arg_alias.in(), arg_url.in());
    
    if( giop_s.response_expected() ) {
      size_t msgsize = (size_t) GIOP_S::ReplyHeaderSize();
      
      giop_s.InitialiseReply(GIOP::NO_EXCEPTION, (CORBA::ULong) msgsize);
      
    }
    giop_s.ReplyCompleted();
    return 1;
  }

  if( !strcmp(giop_s.operation(), "Supprimer") ) {
    
    CORBA::String_var arg_alias;
    
    {
      CORBA::String_member _0RL_str_tmp;
      _0RL_str_tmp <<=  giop_s;
      arg_alias = _0RL_str_tmp._ptr;
      _0RL_str_tmp._ptr = 0;
    }
    
    giop_s.RequestReceived();
    
    this->Supprimer(arg_alias.in());
    
    if( giop_s.response_expected() ) {
      size_t msgsize = (size_t) GIOP_S::ReplyHeaderSize();
      
      giop_s.InitialiseReply(GIOP::NO_EXCEPTION, (CORBA::ULong) msgsize);
      
    }
    giop_s.ReplyCompleted();
    return 1;
  }

  if( !strcmp(giop_s.operation(), "Recherche") ) {
    
    CORBA::String_var arg_alias;
    
    {
      CORBA::String_member _0RL_str_tmp;
      _0RL_str_tmp <<=  giop_s;
      arg_alias = _0RL_str_tmp._ptr;
      _0RL_str_tmp._ptr = 0;
    }
    
    giop_s.RequestReceived();
    CORBA::String_var result;
    
    result = this->Recherche(arg_alias.in());
    
    if( giop_s.response_expected() ) {
      size_t msgsize = (size_t) GIOP_S::ReplyHeaderSize();
      msgsize = omni::align_to(msgsize, omni::ALIGN_4) + 4;
      msgsize += ((const char*) result) ? strlen((const char*) result) + 1 : 1;
      
      giop_s.InitialiseReply(GIOP::NO_EXCEPTION, (CORBA::ULong) msgsize);
      {
        CORBA::ULong _len = (((const char*) result)? strlen((const char*) result) + 1 : 1);
        
        _len >>= giop_s;
        if (_len > 1)
          giop_s.put_char_array((const CORBA::Char *)((const char*)result),_len);
        else {
          if ((const char*) result == 0 && omniORB::traceLevel > 1)
            _CORBA_null_string_ptr(0);
          CORBA::Char('\0') >>= giop_s;
        }
      }
      
    }
    giop_s.ReplyCompleted();
    return 1;
  }

  if( !strcmp(giop_s.operation(), "Sauvegarder") ) {
    
    CORBA::String_var arg_fichier;
    
    {
      CORBA::String_member _0RL_str_tmp;
      _0RL_str_tmp <<=  giop_s;
      arg_fichier = _0RL_str_tmp._ptr;
      _0RL_str_tmp._ptr = 0;
    }
    
    giop_s.RequestReceived();
    
    this->Sauvegarder(arg_fichier.in());
    
    if( giop_s.response_expected() ) {
      size_t msgsize = (size_t) GIOP_S::ReplyHeaderSize();
      
      giop_s.InitialiseReply(GIOP::NO_EXCEPTION, (CORBA::ULong) msgsize);
      
    }
    giop_s.ReplyCompleted();
    return 1;
  }

  return 0;
}

void*
_impl_bookmark::_ptrToInterface(const char* id)
{
  if( !strcmp(id, CORBA::Object::_PD_repoId) )
    return (void*) 1;
  if( !strcmp(id, bookmark::_PD_repoId) )
    return (_impl_bookmark*) this;
  
  return 0;
}

const char*
_impl_bookmark::_mostDerivedRepoId()
{
  return bookmark::_PD_repoId;
}

POA_bookmark::~POA_bookmark() {}

