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

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

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

class arrays;
typedef arrays *arrays_ptr;
typedef arrays_ptr arraysRef;
typedef ObjVar<arrays> arrays_var;
typedef arrays_var arrays_out;


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

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

    typedef CORBA::Float Row[ 20 ];
    typedef CORBA::Float Row_slice;
    typedef ArrayFixVar<CORBA::Float,Row_slice,Row,20> Row_var;
    typedef Row_var Row_out;
    enum _dummy_Row {};
    typedef ArrayForAny<CORBA::Float,Row_slice,Row,20,_dummy_Row> Row_forany;
    DECLARE_ARRAY_ALLOC(Row,CORBA::Float,Row_slice,20)
    DECLARE_ARRAY_DUP(Row,CORBA::Float,Row_slice,20)
    DECLARE_ARRAY_FREE(Row,CORBA::Float,Row_slice,20)
    DECLARE_ARRAY_COPY(Row,CORBA::Float,Row_slice,20)
    typedef CORBA::Float Matrix[ 100 ][ 20 ];
    typedef CORBA::Float Matrix_slice[ 20 ];
    typedef ArrayFixVar<CORBA::Float,Matrix_slice,Matrix,2000> Matrix_var;
    typedef Matrix_var Matrix_out;
    enum _dummy_Matrix {};
    typedef ArrayForAny<CORBA::Float,Matrix_slice,Matrix,2000,_dummy_Matrix> Matrix_forany;
    DECLARE_ARRAY_ALLOC(Matrix,CORBA::Float,Matrix_slice,2000)
    DECLARE_ARRAY_DUP(Matrix,CORBA::Float,Matrix_slice,2000)
    DECLARE_ARRAY_FREE(Matrix,CORBA::Float,Matrix_slice,2000)
    DECLARE_ARRAY_COPY(Matrix,CORBA::Float,Matrix_slice,2000)
    virtual Row_slice* Move_row( const Matrix A, Matrix B, CORBA::Long row_index ) = 0;
  protected:
    arrays() {};
  private:
    arrays( const arrays& );
    void operator=( const arrays& );
};

// Stub for interface arrays
class arrays_stub:
  virtual public arrays
{
  public:
    virtual ~arrays_stub();
    Row_slice* Move_row( const Matrix A, Matrix B, CORBA::Long row_index );
  private:
    void operator=( const arrays_stub& );
};

class arrays_skel :
  virtual public StaticMethodDispatcher,
  virtual public arrays
{
  public:
    arrays_skel( const CORBA::BOA::ReferenceData & = CORBA::BOA::ReferenceData() );
    virtual ~arrays_skel();
    arrays_skel( CORBA::Object_ptr obj );
    virtual bool dispatch( CORBA::StaticServerRequest_ptr _req, CORBA::Environment &_env );
    arrays_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_arrays;
extern CORBA::StaticTypeInfo *_marshaller__a20_float;
extern CORBA::StaticTypeInfo *_marshaller__a100__a20_float;
#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
