/*
 *  MICO --- a free CORBA implementation
 *  Copyright (C) 1997-98 Kay Roemer & Arno Puder
 *
 *  This file was automatically generated. DO NOT EDIT!
 */

#if !defined(__PARAMS_H__) || defined(MICO_NO_TOPLEVEL_MODULES)
#define __PARAMS_H__

#ifndef MICO_NO_TOPLEVEL_MODULES
#include <CORBA.h>
#include <mico/throw.h>
#endif

class param_passing;
typedef param_passing *param_passing_ptr;
typedef param_passing_ptr param_passingRef;
typedef ObjVar<param_passing> param_passing_var;
typedef param_passing_var param_passing_out;


// Common definitions for interface param_passing
class param_passing : virtual public CORBA::Object
{
  public:
    virtual ~param_passing();
    static param_passing_ptr _duplicate( param_passing_ptr obj );
    static param_passing_ptr _narrow( CORBA::Object_ptr obj );
    static param_passing_ptr _nil();

    virtual void *_narrow_helper( const char *repoid );
    static vector<CORBA::Narrow_proto> *_narrow_helpers;
    static bool _narrow_helper2( CORBA::Object_ptr obj );

    enum currency {
      pound = 0,
      dollar,
      yen,
      franc
    };

    typedef currency& currency_out;

    virtual CORBA::Short op1( CORBA::Short x, CORBA::Short& y, CORBA::Short& z ) = 0;
    virtual CORBA::Octet op2( CORBA::Octet x, CORBA::Short& y, CORBA::Octet& z ) = 0;
    virtual currency op3( currency x, currency& y, currency& z ) = 0;
  protected:
    param_passing() {};
  private:
    param_passing( const param_passing& );
    void operator=( const param_passing& );
};
p
// Stub for interface param_passing
class param_passing_stub:
  virtual public param_passing
{
  public:
    virtual ~param_passing_stub();
    CORBA::Short op1( CORBA::Short x, CORBA::Short& y, CORBA::Short& z );
    CORBA::Octet op2( CORBA::Octet x, CORBA::Short& y, CORBA::Octet& z );
    currency op3( currency x, currency& y, currency& z );
  private:
    void operator=( const param_passing_stub& );
};

class param_passing_skel :
  virtual public StaticMethodDispatcher,
  virtual public param_passing
{
  public:
    param_passing_skel( const CORBA::BOA::ReferenceData & = CORBA::BOA::ReferenceData() );
    virtual ~param_passing_skel();
    param_passing_skel( CORBA::Object_ptr obj );
    virtual bool dispatch( CORBA::StaticServerRequest_ptr _req, CORBA::Environment &_env );
    param_passing_ptr _this();

};

#ifndef MICO_CONF_NO_POA

#endif // MICO_CONF_NO_POA

#if !defined(MICO_NO_TOPLEVEL_MODULES) || defined(MICO_MODULE__GLOBAL)

extern CORBA::StaticTypeInfo *_marshaller_param_passing_currency;
extern CORBA::StaticTypeInfo *_marshaller_param_passing;
#endif // !defined(MICO_NO_TOPLEVEL_MODULES) || defined(MICO_MODULE__GLOBAL)


#if !defined(MICO_NO_TOPLEVEL_MODULES) && !defined(MICO_IN_GENERATED_CODE)
#include <mico/template_impl.h>
#endif

#endif
