// This file is generated by omniidl (C++ backend)- omniORB_4_1. Do not edit.
#ifndef __GEOM__Gen_hh__
#define __GEOM__Gen_hh__

#ifndef __CORBA_H_EXTERNAL_GUARD__
#include <omniORB4/CORBA.h>
#endif

#ifndef  USE_stub_in_nt_dll
# define USE_stub_in_nt_dll_NOT_DEFINED_GEOM__Gen
#endif
#ifndef  USE_core_stub_in_nt_dll
# define USE_core_stub_in_nt_dll_NOT_DEFINED_GEOM__Gen
#endif
#ifndef  USE_dyn_stub_in_nt_dll
# define USE_dyn_stub_in_nt_dll_NOT_DEFINED_GEOM__Gen
#endif



#ifndef __SALOME__Exception_hh_EXTERNAL_GUARD__
#define __SALOME__Exception_hh_EXTERNAL_GUARD__
#include <SALOME_Exception.hh>
#endif
#ifndef __SALOME__GenericObj_hh_EXTERNAL_GUARD__
#define __SALOME__GenericObj_hh_EXTERNAL_GUARD__
#include <SALOME_GenericObj.hh>
#endif
#ifndef __SALOMEDS_hh_EXTERNAL_GUARD__
#define __SALOMEDS_hh_EXTERNAL_GUARD__
#include <SALOMEDS.hh>
#endif
#ifndef __SALOME__PyNode_hh_EXTERNAL_GUARD__
#define __SALOME__PyNode_hh_EXTERNAL_GUARD__
#include <SALOME_PyNode.hh>
#endif
#ifndef __SALOME__Component_hh_EXTERNAL_GUARD__
#define __SALOME__Component_hh_EXTERNAL_GUARD__
#include <SALOME_Component.hh>
#endif
#ifndef __SALOMEDS__Attributes_hh_EXTERNAL_GUARD__
#define __SALOMEDS__Attributes_hh_EXTERNAL_GUARD__
#include <SALOMEDS_Attributes.hh>
#endif



#ifdef USE_stub_in_nt_dll
# ifndef USE_core_stub_in_nt_dll
#  define USE_core_stub_in_nt_dll
# endif
# ifndef USE_dyn_stub_in_nt_dll
#  define USE_dyn_stub_in_nt_dll
# endif
#endif

#ifdef _core_attr
# error "A local CPP macro _core_attr has already been defined."
#else
# ifdef  USE_core_stub_in_nt_dll
#  define _core_attr _OMNIORB_NTDLL_IMPORT
# else
#  define _core_attr
# endif
#endif

#ifdef _dyn_attr
# error "A local CPP macro _dyn_attr has already been defined."
#else
# ifdef  USE_dyn_stub_in_nt_dll
#  define _dyn_attr _OMNIORB_NTDLL_IMPORT
# else
#  define _dyn_attr
# endif
#endif





_CORBA_MODULE GEOM

_CORBA_MODULE_BEG

  enum shape_type { COMPOUND, COMPSOLID, SOLID, SHELL, FACE, WIRE, EDGE, VERTEX, SHAPE /*, __max_shape_type=0xffffffff */ };
  typedef shape_type& shape_type_out;

  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_shape_type;

  enum marker_type { MT_NONE, MT_POINT, MT_PLUS, MT_STAR, MT_O, MT_X, MT_O_POINT, MT_O_PLUS, MT_O_STAR, MT_O_X, MT_BALL, MT_RING1, MT_RING2, MT_RING3, MT_USER /*, __max_marker_type=0xffffffff */ };
  typedef marker_type& marker_type_out;

  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_marker_type;

  enum marker_size { MS_NONE, MS_10, MS_15, MS_20, MS_25, MS_30, MS_35, MS_40, MS_45, MS_50, MS_55, MS_60, MS_65, MS_70 /*, __max_marker_size=0xffffffff */ };
  typedef marker_size& marker_size_out;

  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_marker_size;

  enum shape_state { ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN /*, __max_shape_state=0xffffffff */ };
  typedef shape_state& shape_state_out;

  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_shape_state;

  enum find_shape_method { FSM_GetInPlace, FSM_Transformed, FSM_GetSame, FSM_GetShapesOnShape, FSM_GetInPlaceByHistory /*, __max_find_shape_method=0xffffffff */ };
  typedef find_shape_method& find_shape_method_out;

  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_find_shape_method;

  enum filling_oper_method { FOM_Default, FOM_UseOri, FOM_AutoCorrect /*, __max_filling_oper_method=0xffffffff */ };
  typedef filling_oper_method& filling_oper_method_out;

  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_filling_oper_method;

  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_string_array;

  class string_array_var;

  class string_array : public _CORBA_Unbounded_Sequence_String {
  public:
    typedef string_array_var _var_type;
    inline string_array() {}
    inline string_array(const string_array& _s)
      : _CORBA_Unbounded_Sequence_String(_s) {}

    inline string_array(_CORBA_ULong _max)
      : _CORBA_Unbounded_Sequence_String(_max) {}
    inline string_array(_CORBA_ULong _max, _CORBA_ULong _len, char** _val, _CORBA_Boolean _rel=0)
      : _CORBA_Unbounded_Sequence_String(_max, _len, _val, _rel) {}

  

    inline string_array& operator = (const string_array& _s) {
      _CORBA_Unbounded_Sequence_String::operator=(_s);
      return *this;
    }
  };

  class string_array_out;

  class string_array_var {
  public:
    inline string_array_var() : _pd_seq(0) {}
    inline string_array_var(string_array* _s) : _pd_seq(_s) {}
    inline string_array_var(const string_array_var& _s) {
      if( _s._pd_seq )  _pd_seq = new string_array(*_s._pd_seq);
      else              _pd_seq = 0;
    }
    inline ~string_array_var() { if( _pd_seq )  delete _pd_seq; }
      
    inline string_array_var& operator = (string_array* _s) {
      if( _pd_seq )  delete _pd_seq;
      _pd_seq = _s;
      return *this;
    }
    inline string_array_var& operator = (const string_array_var& _s) {
      if( _s._pd_seq ) {
        if( !_pd_seq )  _pd_seq = new string_array;
        *_pd_seq = *_s._pd_seq;
      } else if( _pd_seq ) {
        delete _pd_seq;
        _pd_seq = 0;
      }
      return *this;
    }
    inline _CORBA_String_element operator [] (_CORBA_ULong _s) {
      return (*_pd_seq)[_s];
    }

  

    inline string_array* operator -> () { return _pd_seq; }
    inline const string_array* operator -> () const { return _pd_seq; }
#if defined(__GNUG__)
    inline operator string_array& () const { return *_pd_seq; }
#else
    inline operator const string_array& () const { return *_pd_seq; }
    inline operator string_array& () { return *_pd_seq; }
#endif
      
    inline const string_array& in() const { return *_pd_seq; }
    inline string_array&       inout()    { return *_pd_seq; }
    inline string_array*&      out() {
      if( _pd_seq ) { delete _pd_seq; _pd_seq = 0; }
      return _pd_seq;
    }
    inline string_array* _retn() { string_array* tmp = _pd_seq; _pd_seq = 0; return tmp; }
      
    friend class string_array_out;
    
  private:
    string_array* _pd_seq;
  };

  class string_array_out {
  public:
    inline string_array_out(string_array*& _s) : _data(_s) { _data = 0; }
    inline string_array_out(string_array_var& _s)
      : _data(_s._pd_seq) { _s = (string_array*) 0; }
    inline string_array_out(const string_array_out& _s) : _data(_s._data) {}
    inline string_array_out& operator = (const string_array_out& _s) {
      _data = _s._data;
      return *this;
    }
    inline string_array_out& operator = (string_array* _s) {
      _data = _s;
      return *this;
    }
    inline operator string_array*&()  { return _data; }
    inline string_array*& ptr()       { return _data; }
    inline string_array* operator->() { return _data; }

    inline _CORBA_String_element operator [] (_CORBA_ULong _i) {
      return (*_data)[_i];
    }

  

    string_array*& _data;

  private:
    string_array_out();
    string_array_out& operator=(const string_array_var&);
  };

  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_short_array;

  class short_array_var;

  class short_array : public _CORBA_Unbounded_Sequence_w_FixSizeElement< ::CORBA::Short, 2, 2 >  {
  public:
    typedef short_array_var _var_type;
    inline short_array() {}
    inline short_array(const short_array& _s)
      : _CORBA_Unbounded_Sequence_w_FixSizeElement< ::CORBA::Short, 2, 2 > (_s) {}

    inline short_array(_CORBA_ULong _max)
      : _CORBA_Unbounded_Sequence_w_FixSizeElement< ::CORBA::Short, 2, 2 > (_max) {}
    inline short_array(_CORBA_ULong _max, _CORBA_ULong _len, ::CORBA::Short* _val, _CORBA_Boolean _rel=0)
      : _CORBA_Unbounded_Sequence_w_FixSizeElement< ::CORBA::Short, 2, 2 > (_max, _len, _val, _rel) {}

  

    inline short_array& operator = (const short_array& _s) {
      _CORBA_Unbounded_Sequence_w_FixSizeElement< ::CORBA::Short, 2, 2 > ::operator=(_s);
      return *this;
    }
  };

  class short_array_out;

  class short_array_var {
  public:
    inline short_array_var() : _pd_seq(0) {}
    inline short_array_var(short_array* _s) : _pd_seq(_s) {}
    inline short_array_var(const short_array_var& _s) {
      if( _s._pd_seq )  _pd_seq = new short_array(*_s._pd_seq);
      else              _pd_seq = 0;
    }
    inline ~short_array_var() { if( _pd_seq )  delete _pd_seq; }
      
    inline short_array_var& operator = (short_array* _s) {
      if( _pd_seq )  delete _pd_seq;
      _pd_seq = _s;
      return *this;
    }
    inline short_array_var& operator = (const short_array_var& _s) {
      if( _s._pd_seq ) {
        if( !_pd_seq )  _pd_seq = new short_array;
        *_pd_seq = *_s._pd_seq;
      } else if( _pd_seq ) {
        delete _pd_seq;
        _pd_seq = 0;
      }
      return *this;
    }
    inline ::CORBA::Short& operator [] (_CORBA_ULong _s) {
      return (*_pd_seq)[_s];
    }

  

    inline short_array* operator -> () { return _pd_seq; }
    inline const short_array* operator -> () const { return _pd_seq; }
#if defined(__GNUG__)
    inline operator short_array& () const { return *_pd_seq; }
#else
    inline operator const short_array& () const { return *_pd_seq; }
    inline operator short_array& () { return *_pd_seq; }
#endif
      
    inline const short_array& in() const { return *_pd_seq; }
    inline short_array&       inout()    { return *_pd_seq; }
    inline short_array*&      out() {
      if( _pd_seq ) { delete _pd_seq; _pd_seq = 0; }
      return _pd_seq;
    }
    inline short_array* _retn() { short_array* tmp = _pd_seq; _pd_seq = 0; return tmp; }
      
    friend class short_array_out;
    
  private:
    short_array* _pd_seq;
  };

  class short_array_out {
  public:
    inline short_array_out(short_array*& _s) : _data(_s) { _data = 0; }
    inline short_array_out(short_array_var& _s)
      : _data(_s._pd_seq) { _s = (short_array*) 0; }
    inline short_array_out(const short_array_out& _s) : _data(_s._data) {}
    inline short_array_out& operator = (const short_array_out& _s) {
      _data = _s._data;
      return *this;
    }
    inline short_array_out& operator = (short_array* _s) {
      _data = _s;
      return *this;
    }
    inline operator short_array*&()  { return _data; }
    inline short_array*& ptr()       { return _data; }
    inline short_array* operator->() { return _data; }

    inline ::CORBA::Short& operator [] (_CORBA_ULong _i) {
      return (*_data)[_i];
    }

  

    short_array*& _data;

  private:
    short_array_out();
    short_array_out& operator=(const short_array_var&);
  };

  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_ListOfLong;

  class ListOfLong_var;

  class ListOfLong : public _CORBA_Unbounded_Sequence_w_FixSizeElement< ::CORBA::Long, 4, 4 >  {
  public:
    typedef ListOfLong_var _var_type;
    inline ListOfLong() {}
    inline ListOfLong(const ListOfLong& _s)
      : _CORBA_Unbounded_Sequence_w_FixSizeElement< ::CORBA::Long, 4, 4 > (_s) {}

    inline ListOfLong(_CORBA_ULong _max)
      : _CORBA_Unbounded_Sequence_w_FixSizeElement< ::CORBA::Long, 4, 4 > (_max) {}
    inline ListOfLong(_CORBA_ULong _max, _CORBA_ULong _len, ::CORBA::Long* _val, _CORBA_Boolean _rel=0)
      : _CORBA_Unbounded_Sequence_w_FixSizeElement< ::CORBA::Long, 4, 4 > (_max, _len, _val, _rel) {}

  

    inline ListOfLong& operator = (const ListOfLong& _s) {
      _CORBA_Unbounded_Sequence_w_FixSizeElement< ::CORBA::Long, 4, 4 > ::operator=(_s);
      return *this;
    }
  };

  class ListOfLong_out;

  class ListOfLong_var {
  public:
    inline ListOfLong_var() : _pd_seq(0) {}
    inline ListOfLong_var(ListOfLong* _s) : _pd_seq(_s) {}
    inline ListOfLong_var(const ListOfLong_var& _s) {
      if( _s._pd_seq )  _pd_seq = new ListOfLong(*_s._pd_seq);
      else              _pd_seq = 0;
    }
    inline ~ListOfLong_var() { if( _pd_seq )  delete _pd_seq; }
      
    inline ListOfLong_var& operator = (ListOfLong* _s) {
      if( _pd_seq )  delete _pd_seq;
      _pd_seq = _s;
      return *this;
    }
    inline ListOfLong_var& operator = (const ListOfLong_var& _s) {
      if( _s._pd_seq ) {
        if( !_pd_seq )  _pd_seq = new ListOfLong;
        *_pd_seq = *_s._pd_seq;
      } else if( _pd_seq ) {
        delete _pd_seq;
        _pd_seq = 0;
      }
      return *this;
    }
    inline ::CORBA::Long& operator [] (_CORBA_ULong _s) {
      return (*_pd_seq)[_s];
    }

  

    inline ListOfLong* operator -> () { return _pd_seq; }
    inline const ListOfLong* operator -> () const { return _pd_seq; }
#if defined(__GNUG__)
    inline operator ListOfLong& () const { return *_pd_seq; }
#else
    inline operator const ListOfLong& () const { return *_pd_seq; }
    inline operator ListOfLong& () { return *_pd_seq; }
#endif
      
    inline const ListOfLong& in() const { return *_pd_seq; }
    inline ListOfLong&       inout()    { return *_pd_seq; }
    inline ListOfLong*&      out() {
      if( _pd_seq ) { delete _pd_seq; _pd_seq = 0; }
      return _pd_seq;
    }
    inline ListOfLong* _retn() { ListOfLong* tmp = _pd_seq; _pd_seq = 0; return tmp; }
      
    friend class ListOfLong_out;
    
  private:
    ListOfLong* _pd_seq;
  };

  class ListOfLong_out {
  public:
    inline ListOfLong_out(ListOfLong*& _s) : _data(_s) { _data = 0; }
    inline ListOfLong_out(ListOfLong_var& _s)
      : _data(_s._pd_seq) { _s = (ListOfLong*) 0; }
    inline ListOfLong_out(const ListOfLong_out& _s) : _data(_s._data) {}
    inline ListOfLong_out& operator = (const ListOfLong_out& _s) {
      _data = _s._data;
      return *this;
    }
    inline ListOfLong_out& operator = (ListOfLong* _s) {
      _data = _s;
      return *this;
    }
    inline operator ListOfLong*&()  { return _data; }
    inline ListOfLong*& ptr()       { return _data; }
    inline ListOfLong* operator->() { return _data; }

    inline ::CORBA::Long& operator [] (_CORBA_ULong _i) {
      return (*_data)[_i];
    }

  

    ListOfLong*& _data;

  private:
    ListOfLong_out();
    ListOfLong_out& operator=(const ListOfLong_var&);
  };

  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_ListOfDouble;

  class ListOfDouble_var;

  class ListOfDouble : public _CORBA_Unbounded_Sequence_w_FixSizeElement< ::CORBA::Double, 8, 8 >  {
  public:
    typedef ListOfDouble_var _var_type;
    inline ListOfDouble() {}
    inline ListOfDouble(const ListOfDouble& _s)
      : _CORBA_Unbounded_Sequence_w_FixSizeElement< ::CORBA::Double, 8, 8 > (_s) {}

    inline ListOfDouble(_CORBA_ULong _max)
      : _CORBA_Unbounded_Sequence_w_FixSizeElement< ::CORBA::Double, 8, 8 > (_max) {}
    inline ListOfDouble(_CORBA_ULong _max, _CORBA_ULong _len, ::CORBA::Double* _val, _CORBA_Boolean _rel=0)
      : _CORBA_Unbounded_Sequence_w_FixSizeElement< ::CORBA::Double, 8, 8 > (_max, _len, _val, _rel) {}

  

    inline ListOfDouble& operator = (const ListOfDouble& _s) {
      _CORBA_Unbounded_Sequence_w_FixSizeElement< ::CORBA::Double, 8, 8 > ::operator=(_s);
      return *this;
    }
  };

  class ListOfDouble_out;

  class ListOfDouble_var {
  public:
    inline ListOfDouble_var() : _pd_seq(0) {}
    inline ListOfDouble_var(ListOfDouble* _s) : _pd_seq(_s) {}
    inline ListOfDouble_var(const ListOfDouble_var& _s) {
      if( _s._pd_seq )  _pd_seq = new ListOfDouble(*_s._pd_seq);
      else              _pd_seq = 0;
    }
    inline ~ListOfDouble_var() { if( _pd_seq )  delete _pd_seq; }
      
    inline ListOfDouble_var& operator = (ListOfDouble* _s) {
      if( _pd_seq )  delete _pd_seq;
      _pd_seq = _s;
      return *this;
    }
    inline ListOfDouble_var& operator = (const ListOfDouble_var& _s) {
      if( _s._pd_seq ) {
        if( !_pd_seq )  _pd_seq = new ListOfDouble;
        *_pd_seq = *_s._pd_seq;
      } else if( _pd_seq ) {
        delete _pd_seq;
        _pd_seq = 0;
      }
      return *this;
    }
    inline ::CORBA::Double& operator [] (_CORBA_ULong _s) {
      return (*_pd_seq)[_s];
    }

  

    inline ListOfDouble* operator -> () { return _pd_seq; }
    inline const ListOfDouble* operator -> () const { return _pd_seq; }
#if defined(__GNUG__)
    inline operator ListOfDouble& () const { return *_pd_seq; }
#else
    inline operator const ListOfDouble& () const { return *_pd_seq; }
    inline operator ListOfDouble& () { return *_pd_seq; }
#endif
      
    inline const ListOfDouble& in() const { return *_pd_seq; }
    inline ListOfDouble&       inout()    { return *_pd_seq; }
    inline ListOfDouble*&      out() {
      if( _pd_seq ) { delete _pd_seq; _pd_seq = 0; }
      return _pd_seq;
    }
    inline ListOfDouble* _retn() { ListOfDouble* tmp = _pd_seq; _pd_seq = 0; return tmp; }
      
    friend class ListOfDouble_out;
    
  private:
    ListOfDouble* _pd_seq;
  };

  class ListOfDouble_out {
  public:
    inline ListOfDouble_out(ListOfDouble*& _s) : _data(_s) { _data = 0; }
    inline ListOfDouble_out(ListOfDouble_var& _s)
      : _data(_s._pd_seq) { _s = (ListOfDouble*) 0; }
    inline ListOfDouble_out(const ListOfDouble_out& _s) : _data(_s._data) {}
    inline ListOfDouble_out& operator = (const ListOfDouble_out& _s) {
      _data = _s._data;
      return *this;
    }
    inline ListOfDouble_out& operator = (ListOfDouble* _s) {
      _data = _s;
      return *this;
    }
    inline operator ListOfDouble*&()  { return _data; }
    inline ListOfDouble*& ptr()       { return _data; }
    inline ListOfDouble* operator->() { return _data; }

    inline ::CORBA::Double& operator [] (_CORBA_ULong _i) {
      return (*_data)[_i];
    }

  

    ListOfDouble*& _data;

  private:
    ListOfDouble_out();
    ListOfDouble_out& operator=(const ListOfDouble_var&);
  };

#ifndef __GEOM_mGEOM__Object__
#define __GEOM_mGEOM__Object__

  class GEOM_Object;
  class _objref_GEOM_Object;
  class _impl_GEOM_Object;
  
  typedef _objref_GEOM_Object* GEOM_Object_ptr;
  typedef GEOM_Object_ptr GEOM_ObjectRef;

  class GEOM_Object_Helper {
  public:
    typedef GEOM_Object_ptr _ptr_type;

    static _ptr_type _nil();
    static _CORBA_Boolean is_nil(_ptr_type);
    static void release(_ptr_type);
    static void duplicate(_ptr_type);
    static void marshalObjRef(_ptr_type, cdrStream&);
    static _ptr_type unmarshalObjRef(cdrStream&);
  };

  typedef _CORBA_ObjRef_Var<_objref_GEOM_Object, GEOM_Object_Helper> GEOM_Object_var;
  typedef _CORBA_ObjRef_OUT_arg<_objref_GEOM_Object,GEOM_Object_Helper > GEOM_Object_out;

#endif

  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_ListOfGO;

  class ListOfGO_var;

  class ListOfGO : public _CORBA_Unbounded_Sequence_ObjRef< _objref_GEOM_Object, _CORBA_ObjRef_Element< _objref_GEOM_Object, GEOM_Object_Helper> , GEOM_Object_Helper >  {
  public:
    typedef ListOfGO_var _var_type;
    inline ListOfGO() {}
    inline ListOfGO(const ListOfGO& _s)
      : _CORBA_Unbounded_Sequence_ObjRef< _objref_GEOM_Object, _CORBA_ObjRef_Element< _objref_GEOM_Object, GEOM_Object_Helper> , GEOM_Object_Helper > (_s) {}

    inline ListOfGO(_CORBA_ULong _max)
      : _CORBA_Unbounded_Sequence_ObjRef< _objref_GEOM_Object, _CORBA_ObjRef_Element< _objref_GEOM_Object, GEOM_Object_Helper> , GEOM_Object_Helper > (_max) {}
    inline ListOfGO(_CORBA_ULong _max, _CORBA_ULong _len, GEOM_Object_ptr* _val, _CORBA_Boolean _rel=0)
      : _CORBA_Unbounded_Sequence_ObjRef< _objref_GEOM_Object, _CORBA_ObjRef_Element< _objref_GEOM_Object, GEOM_Object_Helper> , GEOM_Object_Helper > (_max, _len, _val, _rel) {}

  

    inline ListOfGO& operator = (const ListOfGO& _s) {
      _CORBA_Unbounded_Sequence_ObjRef< _objref_GEOM_Object, _CORBA_ObjRef_Element< _objref_GEOM_Object, GEOM_Object_Helper> , GEOM_Object_Helper > ::operator=(_s);
      return *this;
    }
  };

  class ListOfGO_out;

  class ListOfGO_var {
  public:
    inline ListOfGO_var() : _pd_seq(0) {}
    inline ListOfGO_var(ListOfGO* _s) : _pd_seq(_s) {}
    inline ListOfGO_var(const ListOfGO_var& _s) {
      if( _s._pd_seq )  _pd_seq = new ListOfGO(*_s._pd_seq);
      else              _pd_seq = 0;
    }
    inline ~ListOfGO_var() { if( _pd_seq )  delete _pd_seq; }
      
    inline ListOfGO_var& operator = (ListOfGO* _s) {
      if( _pd_seq )  delete _pd_seq;
      _pd_seq = _s;
      return *this;
    }
    inline ListOfGO_var& operator = (const ListOfGO_var& _s) {
      if( _s._pd_seq ) {
        if( !_pd_seq )  _pd_seq = new ListOfGO;
        *_pd_seq = *_s._pd_seq;
      } else if( _pd_seq ) {
        delete _pd_seq;
        _pd_seq = 0;
      }
      return *this;
    }
    inline _CORBA_ObjRef_Element< _objref_GEOM_Object, GEOM_Object_Helper>  operator [] (_CORBA_ULong _s) {
      return (*_pd_seq)[_s];
    }

  

    inline ListOfGO* operator -> () { return _pd_seq; }
    inline const ListOfGO* operator -> () const { return _pd_seq; }
#if defined(__GNUG__)
    inline operator ListOfGO& () const { return *_pd_seq; }
#else
    inline operator const ListOfGO& () const { return *_pd_seq; }
    inline operator ListOfGO& () { return *_pd_seq; }
#endif
      
    inline const ListOfGO& in() const { return *_pd_seq; }
    inline ListOfGO&       inout()    { return *_pd_seq; }
    inline ListOfGO*&      out() {
      if( _pd_seq ) { delete _pd_seq; _pd_seq = 0; }
      return _pd_seq;
    }
    inline ListOfGO* _retn() { ListOfGO* tmp = _pd_seq; _pd_seq = 0; return tmp; }
      
    friend class ListOfGO_out;
    
  private:
    ListOfGO* _pd_seq;
  };

  class ListOfGO_out {
  public:
    inline ListOfGO_out(ListOfGO*& _s) : _data(_s) { _data = 0; }
    inline ListOfGO_out(ListOfGO_var& _s)
      : _data(_s._pd_seq) { _s = (ListOfGO*) 0; }
    inline ListOfGO_out(const ListOfGO_out& _s) : _data(_s._data) {}
    inline ListOfGO_out& operator = (const ListOfGO_out& _s) {
      _data = _s._data;
      return *this;
    }
    inline ListOfGO_out& operator = (ListOfGO* _s) {
      _data = _s;
      return *this;
    }
    inline operator ListOfGO*&()  { return _data; }
    inline ListOfGO*& ptr()       { return _data; }
    inline ListOfGO* operator->() { return _data; }

    inline _CORBA_ObjRef_Element< _objref_GEOM_Object, GEOM_Object_Helper>  operator [] (_CORBA_ULong _i) {
      return (*_data)[_i];
    }

  

    ListOfGO*& _data;

  private:
    ListOfGO_out();
    ListOfGO_out& operator=(const ListOfGO_var&);
  };

#ifndef __GEOM_mGEOM__Object__
#define __GEOM_mGEOM__Object__

  class GEOM_Object;
  class _objref_GEOM_Object;
  class _impl_GEOM_Object;
  
  typedef _objref_GEOM_Object* GEOM_Object_ptr;
  typedef GEOM_Object_ptr GEOM_ObjectRef;

  class GEOM_Object_Helper {
  public:
    typedef GEOM_Object_ptr _ptr_type;

    static _ptr_type _nil();
    static _CORBA_Boolean is_nil(_ptr_type);
    static void release(_ptr_type);
    static void duplicate(_ptr_type);
    static void marshalObjRef(_ptr_type, cdrStream&);
    static _ptr_type unmarshalObjRef(cdrStream&);
  };

  typedef _CORBA_ObjRef_Var<_objref_GEOM_Object, GEOM_Object_Helper> GEOM_Object_var;
  typedef _CORBA_ObjRef_OUT_arg<_objref_GEOM_Object,GEOM_Object_Helper > GEOM_Object_out;

#endif

  // interface GEOM_Object
  class GEOM_Object {
  public:
    // Declarations for this interface type.
    typedef GEOM_Object_ptr _ptr_type;
    typedef GEOM_Object_var _var_type;

    static _ptr_type _duplicate(_ptr_type);
    static _ptr_type _narrow(::CORBA::Object_ptr);
    static _ptr_type _unchecked_narrow(::CORBA::Object_ptr);
    
    static _ptr_type _nil();

    static inline void _marshalObjRef(_ptr_type, cdrStream&);

    static inline _ptr_type _unmarshalObjRef(cdrStream& s) {
      omniObjRef* o = omniObjRef::_unMarshal(_PD_repoId,s);
      if (o)
        return (_ptr_type) o->_ptrToObjRef(_PD_repoId);
      else
        return _nil();
    }

    static _core_attr const char* _PD_repoId;

    // Other IDL defined within this scope.
    
  };

  class _objref_GEOM_Object :
    public virtual SALOME::_objref_GenericObj
  {
  public:
    char* GetEntry();
    ::CORBA::Long GetStudyID();
    ::CORBA::Long GetType();
    shape_type GetShapeType();
    void SetName(const char* theName);
    char* GetName();
    void SetColor(const ::SALOMEDS::Color& theColor);
    SALOMEDS::Color GetColor();
    void SetAutoColor(::CORBA::Boolean theAutoColor);
    ::CORBA::Boolean GetAutoColor();
    void SetMarkerStd(::GEOM::marker_type theType, ::GEOM::marker_size theSize);
    void SetMarkerTexture(::CORBA::Long theTextureId);
    marker_type GetMarkerType();
    marker_size GetMarkerSize();
    ::CORBA::Long GetMarkerTexture();
    void SetStudyEntry(const char* theEntry);
    char* GetStudyEntry();
    ListOfGO* GetDependency();
    ListOfGO* GetLastDependency();
    ::CORBA::LongLong getShape();
    SALOMEDS::TMPFile* GetShapeStream();
    ::CORBA::Boolean IsMainShape();
    ListOfLong* GetSubShapeIndices();
    GEOM_Object_ptr GetMainShape();
    ::CORBA::Boolean IsShape();
    void SetParameters(const char* theParameters);
    char* GetParameters();

    inline _objref_GEOM_Object()  { _PR_setobj(0); }  // nil
    _objref_GEOM_Object(omniIOR*, omniIdentity*);

  protected:
    virtual ~_objref_GEOM_Object();

    
  private:
    virtual void* _ptrToObjRef(const char*);

    _objref_GEOM_Object(const _objref_GEOM_Object&);
    _objref_GEOM_Object& operator = (const _objref_GEOM_Object&);
    // not implemented

    friend class GEOM_Object;
  };

  class _pof_GEOM_Object : public _OMNI_NS(proxyObjectFactory) {
  public:
    inline _pof_GEOM_Object() : _OMNI_NS(proxyObjectFactory)(GEOM_Object::_PD_repoId) {}
    virtual ~_pof_GEOM_Object();

    virtual omniObjRef* newObjRef(omniIOR*,omniIdentity*);
    virtual _CORBA_Boolean is_a(const char*) const;
  };

  class _impl_GEOM_Object :
    public virtual SALOME::_impl_GenericObj
  {
  public:
    virtual ~_impl_GEOM_Object();

    virtual char* GetEntry() = 0;
    virtual ::CORBA::Long GetStudyID() = 0;
    virtual ::CORBA::Long GetType() = 0;
    virtual shape_type GetShapeType() = 0;
    virtual void SetName(const char* theName) = 0;
    virtual char* GetName() = 0;
    virtual void SetColor(const ::SALOMEDS::Color& theColor) = 0;
    virtual SALOMEDS::Color GetColor() = 0;
    virtual void SetAutoColor(::CORBA::Boolean theAutoColor) = 0;
    virtual ::CORBA::Boolean GetAutoColor() = 0;
    virtual void SetMarkerStd(::GEOM::marker_type theType, ::GEOM::marker_size theSize) = 0;
    virtual void SetMarkerTexture(::CORBA::Long theTextureId) = 0;
    virtual marker_type GetMarkerType() = 0;
    virtual marker_size GetMarkerSize() = 0;
    virtual ::CORBA::Long GetMarkerTexture() = 0;
    virtual void SetStudyEntry(const char* theEntry) = 0;
    virtual char* GetStudyEntry() = 0;
    virtual ListOfGO* GetDependency() = 0;
    virtual ListOfGO* GetLastDependency() = 0;
    virtual ::CORBA::LongLong getShape() = 0;
    virtual SALOMEDS::TMPFile* GetShapeStream() = 0;
    virtual ::CORBA::Boolean IsMainShape() = 0;
    virtual ListOfLong* GetSubShapeIndices() = 0;
    virtual GEOM_Object_ptr GetMainShape() = 0;
    virtual ::CORBA::Boolean IsShape() = 0;
    virtual void SetParameters(const char* theParameters) = 0;
    virtual char* GetParameters() = 0;
    
  public:  // Really protected, workaround for xlC
    virtual _CORBA_Boolean _dispatch(omniCallHandle&);

  private:
    virtual void* _ptrToInterface(const char*);
    virtual const char* _mostDerivedRepoId();
    
  };


  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_GEOM_Object;

#ifndef __GEOM_mGEOM__IOperations__
#define __GEOM_mGEOM__IOperations__

  class GEOM_IOperations;
  class _objref_GEOM_IOperations;
  class _impl_GEOM_IOperations;
  
  typedef _objref_GEOM_IOperations* GEOM_IOperations_ptr;
  typedef GEOM_IOperations_ptr GEOM_IOperationsRef;

  class GEOM_IOperations_Helper {
  public:
    typedef GEOM_IOperations_ptr _ptr_type;

    static _ptr_type _nil();
    static _CORBA_Boolean is_nil(_ptr_type);
    static void release(_ptr_type);
    static void duplicate(_ptr_type);
    static void marshalObjRef(_ptr_type, cdrStream&);
    static _ptr_type unmarshalObjRef(cdrStream&);
  };

  typedef _CORBA_ObjRef_Var<_objref_GEOM_IOperations, GEOM_IOperations_Helper> GEOM_IOperations_var;
  typedef _CORBA_ObjRef_OUT_arg<_objref_GEOM_IOperations,GEOM_IOperations_Helper > GEOM_IOperations_out;

#endif

  // interface GEOM_IOperations
  class GEOM_IOperations {
  public:
    // Declarations for this interface type.
    typedef GEOM_IOperations_ptr _ptr_type;
    typedef GEOM_IOperations_var _var_type;

    static _ptr_type _duplicate(_ptr_type);
    static _ptr_type _narrow(::CORBA::Object_ptr);
    static _ptr_type _unchecked_narrow(::CORBA::Object_ptr);
    
    static _ptr_type _nil();

    static inline void _marshalObjRef(_ptr_type, cdrStream&);

    static inline _ptr_type _unmarshalObjRef(cdrStream& s) {
      omniObjRef* o = omniObjRef::_unMarshal(_PD_repoId,s);
      if (o)
        return (_ptr_type) o->_ptrToObjRef(_PD_repoId);
      else
        return _nil();
    }

    static _core_attr const char* _PD_repoId;

    // Other IDL defined within this scope.
    
  };

  class _objref_GEOM_IOperations :
    public virtual SALOME::_objref_GenericObj
  {
  public:
    ::CORBA::Boolean IsDone();
    void SetErrorCode(const char* theErrorID);
    char* GetErrorCode();
    ::CORBA::Long GetStudyID();
    void StartOperation();
    void FinishOperation();
    void AbortOperation();

    inline _objref_GEOM_IOperations()  { _PR_setobj(0); }  // nil
    _objref_GEOM_IOperations(omniIOR*, omniIdentity*);

  protected:
    virtual ~_objref_GEOM_IOperations();

    
  private:
    virtual void* _ptrToObjRef(const char*);

    _objref_GEOM_IOperations(const _objref_GEOM_IOperations&);
    _objref_GEOM_IOperations& operator = (const _objref_GEOM_IOperations&);
    // not implemented

    friend class GEOM_IOperations;
  };

  class _pof_GEOM_IOperations : public _OMNI_NS(proxyObjectFactory) {
  public:
    inline _pof_GEOM_IOperations() : _OMNI_NS(proxyObjectFactory)(GEOM_IOperations::_PD_repoId) {}
    virtual ~_pof_GEOM_IOperations();

    virtual omniObjRef* newObjRef(omniIOR*,omniIdentity*);
    virtual _CORBA_Boolean is_a(const char*) const;
  };

  class _impl_GEOM_IOperations :
    public virtual SALOME::_impl_GenericObj
  {
  public:
    virtual ~_impl_GEOM_IOperations();

    virtual ::CORBA::Boolean IsDone() = 0;
    virtual void SetErrorCode(const char* theErrorID) = 0;
    virtual char* GetErrorCode() = 0;
    virtual ::CORBA::Long GetStudyID() = 0;
    virtual void StartOperation() = 0;
    virtual void FinishOperation() = 0;
    virtual void AbortOperation() = 0;
    
  public:  // Really protected, workaround for xlC
    virtual _CORBA_Boolean _dispatch(omniCallHandle&);

  private:
    virtual void* _ptrToInterface(const char*);
    virtual const char* _mostDerivedRepoId();
    
  };


  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_GEOM_IOperations;

#ifndef __GEOM_mGEOM__IBasicOperations__
#define __GEOM_mGEOM__IBasicOperations__

  class GEOM_IBasicOperations;
  class _objref_GEOM_IBasicOperations;
  class _impl_GEOM_IBasicOperations;
  
  typedef _objref_GEOM_IBasicOperations* GEOM_IBasicOperations_ptr;
  typedef GEOM_IBasicOperations_ptr GEOM_IBasicOperationsRef;

  class GEOM_IBasicOperations_Helper {
  public:
    typedef GEOM_IBasicOperations_ptr _ptr_type;

    static _ptr_type _nil();
    static _CORBA_Boolean is_nil(_ptr_type);
    static void release(_ptr_type);
    static void duplicate(_ptr_type);
    static void marshalObjRef(_ptr_type, cdrStream&);
    static _ptr_type unmarshalObjRef(cdrStream&);
  };

  typedef _CORBA_ObjRef_Var<_objref_GEOM_IBasicOperations, GEOM_IBasicOperations_Helper> GEOM_IBasicOperations_var;
  typedef _CORBA_ObjRef_OUT_arg<_objref_GEOM_IBasicOperations,GEOM_IBasicOperations_Helper > GEOM_IBasicOperations_out;

#endif

  // interface GEOM_IBasicOperations
  class GEOM_IBasicOperations {
  public:
    // Declarations for this interface type.
    typedef GEOM_IBasicOperations_ptr _ptr_type;
    typedef GEOM_IBasicOperations_var _var_type;

    static _ptr_type _duplicate(_ptr_type);
    static _ptr_type _narrow(::CORBA::Object_ptr);
    static _ptr_type _unchecked_narrow(::CORBA::Object_ptr);
    
    static _ptr_type _nil();

    static inline void _marshalObjRef(_ptr_type, cdrStream&);

    static inline _ptr_type _unmarshalObjRef(cdrStream& s) {
      omniObjRef* o = omniObjRef::_unMarshal(_PD_repoId,s);
      if (o)
        return (_ptr_type) o->_ptrToObjRef(_PD_repoId);
      else
        return _nil();
    }

    static _core_attr const char* _PD_repoId;

    // Other IDL defined within this scope.
    
  };

  class _objref_GEOM_IBasicOperations :
    public virtual _objref_GEOM_IOperations
  {
  public:
    GEOM_Object_ptr MakePointXYZ(::CORBA::Double theX, ::CORBA::Double theY, ::CORBA::Double theZ);
    GEOM_Object_ptr MakePointWithReference(::GEOM::GEOM_Object_ptr theReference, ::CORBA::Double theX, ::CORBA::Double theY, ::CORBA::Double theZ);
    GEOM_Object_ptr MakePointOnCurve(::GEOM::GEOM_Object_ptr theRefCurve, ::CORBA::Double theParameter);
    GEOM_Object_ptr MakePointOnCurveByCoord(::GEOM::GEOM_Object_ptr theRefCurve, ::CORBA::Double theXParameter, ::CORBA::Double theYarameter, ::CORBA::Double theZPameter);
    GEOM_Object_ptr MakePointOnSurface(::GEOM::GEOM_Object_ptr theRefSurf, ::CORBA::Double theUParameter, ::CORBA::Double theVParameter);
    GEOM_Object_ptr MakePointOnSurfaceByCoord(::GEOM::GEOM_Object_ptr theRefSurf, ::CORBA::Double theXParameter, ::CORBA::Double theYarameter, ::CORBA::Double theZPameter);
    GEOM_Object_ptr MakePointOnLinesIntersection(::GEOM::GEOM_Object_ptr theRefLine1, ::GEOM::GEOM_Object_ptr theRefLine2);
    GEOM_Object_ptr MakeTangentOnCurve(::GEOM::GEOM_Object_ptr theRefCurve, ::CORBA::Double theParameter);
    GEOM_Object_ptr MakeVectorDXDYDZ(::CORBA::Double theDX, ::CORBA::Double theDY, ::CORBA::Double theDZ);
    GEOM_Object_ptr MakeVectorTwoPnt(::GEOM::GEOM_Object_ptr thePnt1, ::GEOM::GEOM_Object_ptr thePnt2);
    GEOM_Object_ptr MakeLine(::GEOM::GEOM_Object_ptr thePnt, ::GEOM::GEOM_Object_ptr theDir);
    GEOM_Object_ptr MakeLineTwoPnt(::GEOM::GEOM_Object_ptr thePnt1, ::GEOM::GEOM_Object_ptr thePnt2);
    GEOM_Object_ptr MakeLineTwoFaces(::GEOM::GEOM_Object_ptr theFace1, ::GEOM::GEOM_Object_ptr theFace2);
    GEOM_Object_ptr MakePlaneThreePnt(::GEOM::GEOM_Object_ptr thePnt1, ::GEOM::GEOM_Object_ptr thePnt2, ::GEOM::GEOM_Object_ptr thePnt3, ::CORBA::Double theTrimSize);
    GEOM_Object_ptr MakePlanePntVec(::GEOM::GEOM_Object_ptr thePnt, ::GEOM::GEOM_Object_ptr theVec, ::CORBA::Double theTrimSize);
    GEOM_Object_ptr MakePlaneFace(::GEOM::GEOM_Object_ptr theFace, ::CORBA::Double theTrimSize);
    GEOM_Object_ptr MakePlane2Vec(::GEOM::GEOM_Object_ptr theVec1, ::GEOM::GEOM_Object_ptr theVec2, ::CORBA::Double theTrimSize);
    GEOM_Object_ptr MakePlaneLCS(::GEOM::GEOM_Object_ptr theLCS, ::CORBA::Double theTrimSize, ::CORBA::Double theOrientation);
    GEOM_Object_ptr MakeMarker(::CORBA::Double theOX, ::CORBA::Double theOY, ::CORBA::Double theOZ, ::CORBA::Double theXDX, ::CORBA::Double theXDY, ::CORBA::Double theXDZ, ::CORBA::Double theYDX, ::CORBA::Double theYDY, ::CORBA::Double theYDZ);
    GEOM_Object_ptr MakeMarkerFromShape(::GEOM::GEOM_Object_ptr theShape);
    GEOM_Object_ptr MakeMarkerPntTwoVec(::GEOM::GEOM_Object_ptr theOrigin, ::GEOM::GEOM_Object_ptr theXVec, ::GEOM::GEOM_Object_ptr theYVec);
    GEOM_Object_ptr MakeTangentPlaneOnFace(::GEOM::GEOM_Object_ptr theFace, ::CORBA::Double theParameterU, ::CORBA::Double theParameterV, ::CORBA::Double theTrimSize);

    inline _objref_GEOM_IBasicOperations()  { _PR_setobj(0); }  // nil
    _objref_GEOM_IBasicOperations(omniIOR*, omniIdentity*);

  protected:
    virtual ~_objref_GEOM_IBasicOperations();

    
  private:
    virtual void* _ptrToObjRef(const char*);

    _objref_GEOM_IBasicOperations(const _objref_GEOM_IBasicOperations&);
    _objref_GEOM_IBasicOperations& operator = (const _objref_GEOM_IBasicOperations&);
    // not implemented

    friend class GEOM_IBasicOperations;
  };

  class _pof_GEOM_IBasicOperations : public _OMNI_NS(proxyObjectFactory) {
  public:
    inline _pof_GEOM_IBasicOperations() : _OMNI_NS(proxyObjectFactory)(GEOM_IBasicOperations::_PD_repoId) {}
    virtual ~_pof_GEOM_IBasicOperations();

    virtual omniObjRef* newObjRef(omniIOR*,omniIdentity*);
    virtual _CORBA_Boolean is_a(const char*) const;
  };

  class _impl_GEOM_IBasicOperations :
    public virtual _impl_GEOM_IOperations
  {
  public:
    virtual ~_impl_GEOM_IBasicOperations();

    virtual GEOM_Object_ptr MakePointXYZ(::CORBA::Double theX, ::CORBA::Double theY, ::CORBA::Double theZ) = 0;
    virtual GEOM_Object_ptr MakePointWithReference(::GEOM::GEOM_Object_ptr theReference, ::CORBA::Double theX, ::CORBA::Double theY, ::CORBA::Double theZ) = 0;
    virtual GEOM_Object_ptr MakePointOnCurve(::GEOM::GEOM_Object_ptr theRefCurve, ::CORBA::Double theParameter) = 0;
    virtual GEOM_Object_ptr MakePointOnCurveByCoord(::GEOM::GEOM_Object_ptr theRefCurve, ::CORBA::Double theXParameter, ::CORBA::Double theYarameter, ::CORBA::Double theZPameter) = 0;
    virtual GEOM_Object_ptr MakePointOnSurface(::GEOM::GEOM_Object_ptr theRefSurf, ::CORBA::Double theUParameter, ::CORBA::Double theVParameter) = 0;
    virtual GEOM_Object_ptr MakePointOnSurfaceByCoord(::GEOM::GEOM_Object_ptr theRefSurf, ::CORBA::Double theXParameter, ::CORBA::Double theYarameter, ::CORBA::Double theZPameter) = 0;
    virtual GEOM_Object_ptr MakePointOnLinesIntersection(::GEOM::GEOM_Object_ptr theRefLine1, ::GEOM::GEOM_Object_ptr theRefLine2) = 0;
    virtual GEOM_Object_ptr MakeTangentOnCurve(::GEOM::GEOM_Object_ptr theRefCurve, ::CORBA::Double theParameter) = 0;
    virtual GEOM_Object_ptr MakeVectorDXDYDZ(::CORBA::Double theDX, ::CORBA::Double theDY, ::CORBA::Double theDZ) = 0;
    virtual GEOM_Object_ptr MakeVectorTwoPnt(::GEOM::GEOM_Object_ptr thePnt1, ::GEOM::GEOM_Object_ptr thePnt2) = 0;
    virtual GEOM_Object_ptr MakeLine(::GEOM::GEOM_Object_ptr thePnt, ::GEOM::GEOM_Object_ptr theDir) = 0;
    virtual GEOM_Object_ptr MakeLineTwoPnt(::GEOM::GEOM_Object_ptr thePnt1, ::GEOM::GEOM_Object_ptr thePnt2) = 0;
    virtual GEOM_Object_ptr MakeLineTwoFaces(::GEOM::GEOM_Object_ptr theFace1, ::GEOM::GEOM_Object_ptr theFace2) = 0;
    virtual GEOM_Object_ptr MakePlaneThreePnt(::GEOM::GEOM_Object_ptr thePnt1, ::GEOM::GEOM_Object_ptr thePnt2, ::GEOM::GEOM_Object_ptr thePnt3, ::CORBA::Double theTrimSize) = 0;
    virtual GEOM_Object_ptr MakePlanePntVec(::GEOM::GEOM_Object_ptr thePnt, ::GEOM::GEOM_Object_ptr theVec, ::CORBA::Double theTrimSize) = 0;
    virtual GEOM_Object_ptr MakePlaneFace(::GEOM::GEOM_Object_ptr theFace, ::CORBA::Double theTrimSize) = 0;
    virtual GEOM_Object_ptr MakePlane2Vec(::GEOM::GEOM_Object_ptr theVec1, ::GEOM::GEOM_Object_ptr theVec2, ::CORBA::Double theTrimSize) = 0;
    virtual GEOM_Object_ptr MakePlaneLCS(::GEOM::GEOM_Object_ptr theLCS, ::CORBA::Double theTrimSize, ::CORBA::Double theOrientation) = 0;
    virtual GEOM_Object_ptr MakeMarker(::CORBA::Double theOX, ::CORBA::Double theOY, ::CORBA::Double theOZ, ::CORBA::Double theXDX, ::CORBA::Double theXDY, ::CORBA::Double theXDZ, ::CORBA::Double theYDX, ::CORBA::Double theYDY, ::CORBA::Double theYDZ) = 0;
    virtual GEOM_Object_ptr MakeMarkerFromShape(::GEOM::GEOM_Object_ptr theShape) = 0;
    virtual GEOM_Object_ptr MakeMarkerPntTwoVec(::GEOM::GEOM_Object_ptr theOrigin, ::GEOM::GEOM_Object_ptr theXVec, ::GEOM::GEOM_Object_ptr theYVec) = 0;
    virtual GEOM_Object_ptr MakeTangentPlaneOnFace(::GEOM::GEOM_Object_ptr theFace, ::CORBA::Double theParameterU, ::CORBA::Double theParameterV, ::CORBA::Double theTrimSize) = 0;
    
  public:  // Really protected, workaround for xlC
    virtual _CORBA_Boolean _dispatch(omniCallHandle&);

  private:
    virtual void* _ptrToInterface(const char*);
    virtual const char* _mostDerivedRepoId();
    
  };


  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_GEOM_IBasicOperations;

#ifndef __GEOM_mGEOM__ITransformOperations__
#define __GEOM_mGEOM__ITransformOperations__

  class GEOM_ITransformOperations;
  class _objref_GEOM_ITransformOperations;
  class _impl_GEOM_ITransformOperations;
  
  typedef _objref_GEOM_ITransformOperations* GEOM_ITransformOperations_ptr;
  typedef GEOM_ITransformOperations_ptr GEOM_ITransformOperationsRef;

  class GEOM_ITransformOperations_Helper {
  public:
    typedef GEOM_ITransformOperations_ptr _ptr_type;

    static _ptr_type _nil();
    static _CORBA_Boolean is_nil(_ptr_type);
    static void release(_ptr_type);
    static void duplicate(_ptr_type);
    static void marshalObjRef(_ptr_type, cdrStream&);
    static _ptr_type unmarshalObjRef(cdrStream&);
  };

  typedef _CORBA_ObjRef_Var<_objref_GEOM_ITransformOperations, GEOM_ITransformOperations_Helper> GEOM_ITransformOperations_var;
  typedef _CORBA_ObjRef_OUT_arg<_objref_GEOM_ITransformOperations,GEOM_ITransformOperations_Helper > GEOM_ITransformOperations_out;

#endif

  // interface GEOM_ITransformOperations
  class GEOM_ITransformOperations {
  public:
    // Declarations for this interface type.
    typedef GEOM_ITransformOperations_ptr _ptr_type;
    typedef GEOM_ITransformOperations_var _var_type;

    static _ptr_type _duplicate(_ptr_type);
    static _ptr_type _narrow(::CORBA::Object_ptr);
    static _ptr_type _unchecked_narrow(::CORBA::Object_ptr);
    
    static _ptr_type _nil();

    static inline void _marshalObjRef(_ptr_type, cdrStream&);

    static inline _ptr_type _unmarshalObjRef(cdrStream& s) {
      omniObjRef* o = omniObjRef::_unMarshal(_PD_repoId,s);
      if (o)
        return (_ptr_type) o->_ptrToObjRef(_PD_repoId);
      else
        return _nil();
    }

    static _core_attr const char* _PD_repoId;

    // Other IDL defined within this scope.
    
  };

  class _objref_GEOM_ITransformOperations :
    public virtual _objref_GEOM_IOperations
  {
  public:
    GEOM_Object_ptr TranslateTwoPoints(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr thePoint1, ::GEOM::GEOM_Object_ptr thePoint2);
    GEOM_Object_ptr TranslateTwoPointsCopy(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr thePoint1, ::GEOM::GEOM_Object_ptr thePoint2);
    GEOM_Object_ptr TranslateDXDYDZ(::GEOM::GEOM_Object_ptr theObject, ::CORBA::Double theDX, ::CORBA::Double theDY, ::CORBA::Double theDZ);
    GEOM_Object_ptr TranslateDXDYDZCopy(::GEOM::GEOM_Object_ptr theObject, ::CORBA::Double theDX, ::CORBA::Double theDY, ::CORBA::Double theDZ);
    GEOM_Object_ptr TranslateVector(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theVector);
    GEOM_Object_ptr TranslateVectorCopy(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theVector);
    GEOM_Object_ptr TranslateVectorDistance(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theVector, ::CORBA::Double theDistance, ::CORBA::Boolean theCopy);
    GEOM_Object_ptr MultiTranslate1D(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theVector, ::CORBA::Double theStep, ::CORBA::Long theNbTimes);
    GEOM_Object_ptr MultiTranslate2D(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theVector1, ::CORBA::Double theStep1, ::CORBA::Long theNbTimes1, ::GEOM::GEOM_Object_ptr theVector2, ::CORBA::Double theStep2, ::CORBA::Long theNbTimes2);
    GEOM_Object_ptr RotateThreePoints(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theCentPoint, ::GEOM::GEOM_Object_ptr thePoint1, ::GEOM::GEOM_Object_ptr thePoint2);
    GEOM_Object_ptr RotateThreePointsCopy(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theCentPoint, ::GEOM::GEOM_Object_ptr thePoint1, ::GEOM::GEOM_Object_ptr thePoint2);
    GEOM_Object_ptr Rotate(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theAxis, ::CORBA::Double theAngle);
    GEOM_Object_ptr RotateCopy(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theAxis, ::CORBA::Double theAngle);
    GEOM_Object_ptr MultiRotate1D(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theAxis, ::CORBA::Long theNbTimes);
    GEOM_Object_ptr MultiRotate2D(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theAxis, ::CORBA::Double theAngle, ::CORBA::Long theNbTimes1, ::CORBA::Double theStep, ::CORBA::Long theNbTimes2);
    GEOM_Object_ptr MirrorPlane(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr thePlane);
    GEOM_Object_ptr MirrorPlaneCopy(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr thePlane);
    GEOM_Object_ptr MirrorAxis(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theAxis);
    GEOM_Object_ptr MirrorAxisCopy(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theAxis);
    GEOM_Object_ptr MirrorPoint(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr thePoint);
    GEOM_Object_ptr MirrorPointCopy(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr thePoint);
    GEOM_Object_ptr OffsetShape(::GEOM::GEOM_Object_ptr theObject, ::CORBA::Double theOffset);
    GEOM_Object_ptr OffsetShapeCopy(::GEOM::GEOM_Object_ptr theObject, ::CORBA::Double theOffset);
    GEOM_Object_ptr ScaleShape(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr thePoint, ::CORBA::Double theFactor);
    GEOM_Object_ptr ScaleShapeCopy(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr thePoint, ::CORBA::Double theFactor);
    GEOM_Object_ptr ScaleShapeAlongAxes(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr thePoint, ::CORBA::Double theFactorX, ::CORBA::Double theFactorY, ::CORBA::Double theFactorZ);
    GEOM_Object_ptr ScaleShapeAlongAxesCopy(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr thePoint, ::CORBA::Double theFactorX, ::CORBA::Double theFactorY, ::CORBA::Double theFactorZ);
    GEOM_Object_ptr PositionShape(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theStartLCS, ::GEOM::GEOM_Object_ptr theEndLCS);
    GEOM_Object_ptr PositionShapeCopy(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theStartLCS, ::GEOM::GEOM_Object_ptr theEndLCS);
    GEOM_Object_ptr PositionAlongPath(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr thePath, ::CORBA::Double theDistance, ::CORBA::Boolean theCopy, ::CORBA::Boolean theReverse);
    GEOM_Object_ptr RecomputeObject(::GEOM::GEOM_Object_ptr theObject);

    inline _objref_GEOM_ITransformOperations()  { _PR_setobj(0); }  // nil
    _objref_GEOM_ITransformOperations(omniIOR*, omniIdentity*);

  protected:
    virtual ~_objref_GEOM_ITransformOperations();

    
  private:
    virtual void* _ptrToObjRef(const char*);

    _objref_GEOM_ITransformOperations(const _objref_GEOM_ITransformOperations&);
    _objref_GEOM_ITransformOperations& operator = (const _objref_GEOM_ITransformOperations&);
    // not implemented

    friend class GEOM_ITransformOperations;
  };

  class _pof_GEOM_ITransformOperations : public _OMNI_NS(proxyObjectFactory) {
  public:
    inline _pof_GEOM_ITransformOperations() : _OMNI_NS(proxyObjectFactory)(GEOM_ITransformOperations::_PD_repoId) {}
    virtual ~_pof_GEOM_ITransformOperations();

    virtual omniObjRef* newObjRef(omniIOR*,omniIdentity*);
    virtual _CORBA_Boolean is_a(const char*) const;
  };

  class _impl_GEOM_ITransformOperations :
    public virtual _impl_GEOM_IOperations
  {
  public:
    virtual ~_impl_GEOM_ITransformOperations();

    virtual GEOM_Object_ptr TranslateTwoPoints(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr thePoint1, ::GEOM::GEOM_Object_ptr thePoint2) = 0;
    virtual GEOM_Object_ptr TranslateTwoPointsCopy(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr thePoint1, ::GEOM::GEOM_Object_ptr thePoint2) = 0;
    virtual GEOM_Object_ptr TranslateDXDYDZ(::GEOM::GEOM_Object_ptr theObject, ::CORBA::Double theDX, ::CORBA::Double theDY, ::CORBA::Double theDZ) = 0;
    virtual GEOM_Object_ptr TranslateDXDYDZCopy(::GEOM::GEOM_Object_ptr theObject, ::CORBA::Double theDX, ::CORBA::Double theDY, ::CORBA::Double theDZ) = 0;
    virtual GEOM_Object_ptr TranslateVector(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theVector) = 0;
    virtual GEOM_Object_ptr TranslateVectorCopy(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theVector) = 0;
    virtual GEOM_Object_ptr TranslateVectorDistance(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theVector, ::CORBA::Double theDistance, ::CORBA::Boolean theCopy) = 0;
    virtual GEOM_Object_ptr MultiTranslate1D(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theVector, ::CORBA::Double theStep, ::CORBA::Long theNbTimes) = 0;
    virtual GEOM_Object_ptr MultiTranslate2D(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theVector1, ::CORBA::Double theStep1, ::CORBA::Long theNbTimes1, ::GEOM::GEOM_Object_ptr theVector2, ::CORBA::Double theStep2, ::CORBA::Long theNbTimes2) = 0;
    virtual GEOM_Object_ptr RotateThreePoints(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theCentPoint, ::GEOM::GEOM_Object_ptr thePoint1, ::GEOM::GEOM_Object_ptr thePoint2) = 0;
    virtual GEOM_Object_ptr RotateThreePointsCopy(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theCentPoint, ::GEOM::GEOM_Object_ptr thePoint1, ::GEOM::GEOM_Object_ptr thePoint2) = 0;
    virtual GEOM_Object_ptr Rotate(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theAxis, ::CORBA::Double theAngle) = 0;
    virtual GEOM_Object_ptr RotateCopy(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theAxis, ::CORBA::Double theAngle) = 0;
    virtual GEOM_Object_ptr MultiRotate1D(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theAxis, ::CORBA::Long theNbTimes) = 0;
    virtual GEOM_Object_ptr MultiRotate2D(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theAxis, ::CORBA::Double theAngle, ::CORBA::Long theNbTimes1, ::CORBA::Double theStep, ::CORBA::Long theNbTimes2) = 0;
    virtual GEOM_Object_ptr MirrorPlane(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr thePlane) = 0;
    virtual GEOM_Object_ptr MirrorPlaneCopy(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr thePlane) = 0;
    virtual GEOM_Object_ptr MirrorAxis(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theAxis) = 0;
    virtual GEOM_Object_ptr MirrorAxisCopy(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theAxis) = 0;
    virtual GEOM_Object_ptr MirrorPoint(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr thePoint) = 0;
    virtual GEOM_Object_ptr MirrorPointCopy(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr thePoint) = 0;
    virtual GEOM_Object_ptr OffsetShape(::GEOM::GEOM_Object_ptr theObject, ::CORBA::Double theOffset) = 0;
    virtual GEOM_Object_ptr OffsetShapeCopy(::GEOM::GEOM_Object_ptr theObject, ::CORBA::Double theOffset) = 0;
    virtual GEOM_Object_ptr ScaleShape(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr thePoint, ::CORBA::Double theFactor) = 0;
    virtual GEOM_Object_ptr ScaleShapeCopy(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr thePoint, ::CORBA::Double theFactor) = 0;
    virtual GEOM_Object_ptr ScaleShapeAlongAxes(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr thePoint, ::CORBA::Double theFactorX, ::CORBA::Double theFactorY, ::CORBA::Double theFactorZ) = 0;
    virtual GEOM_Object_ptr ScaleShapeAlongAxesCopy(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr thePoint, ::CORBA::Double theFactorX, ::CORBA::Double theFactorY, ::CORBA::Double theFactorZ) = 0;
    virtual GEOM_Object_ptr PositionShape(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theStartLCS, ::GEOM::GEOM_Object_ptr theEndLCS) = 0;
    virtual GEOM_Object_ptr PositionShapeCopy(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr theStartLCS, ::GEOM::GEOM_Object_ptr theEndLCS) = 0;
    virtual GEOM_Object_ptr PositionAlongPath(::GEOM::GEOM_Object_ptr theObject, ::GEOM::GEOM_Object_ptr thePath, ::CORBA::Double theDistance, ::CORBA::Boolean theCopy, ::CORBA::Boolean theReverse) = 0;
    virtual GEOM_Object_ptr RecomputeObject(::GEOM::GEOM_Object_ptr theObject) = 0;
    
  public:  // Really protected, workaround for xlC
    virtual _CORBA_Boolean _dispatch(omniCallHandle&);

  private:
    virtual void* _ptrToInterface(const char*);
    virtual const char* _mostDerivedRepoId();
    
  };


  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_GEOM_ITransformOperations;

#ifndef __GEOM_mGEOM__I3DPrimOperations__
#define __GEOM_mGEOM__I3DPrimOperations__

  class GEOM_I3DPrimOperations;
  class _objref_GEOM_I3DPrimOperations;
  class _impl_GEOM_I3DPrimOperations;
  
  typedef _objref_GEOM_I3DPrimOperations* GEOM_I3DPrimOperations_ptr;
  typedef GEOM_I3DPrimOperations_ptr GEOM_I3DPrimOperationsRef;

  class GEOM_I3DPrimOperations_Helper {
  public:
    typedef GEOM_I3DPrimOperations_ptr _ptr_type;

    static _ptr_type _nil();
    static _CORBA_Boolean is_nil(_ptr_type);
    static void release(_ptr_type);
    static void duplicate(_ptr_type);
    static void marshalObjRef(_ptr_type, cdrStream&);
    static _ptr_type unmarshalObjRef(cdrStream&);
  };

  typedef _CORBA_ObjRef_Var<_objref_GEOM_I3DPrimOperations, GEOM_I3DPrimOperations_Helper> GEOM_I3DPrimOperations_var;
  typedef _CORBA_ObjRef_OUT_arg<_objref_GEOM_I3DPrimOperations,GEOM_I3DPrimOperations_Helper > GEOM_I3DPrimOperations_out;

#endif

  // interface GEOM_I3DPrimOperations
  class GEOM_I3DPrimOperations {
  public:
    // Declarations for this interface type.
    typedef GEOM_I3DPrimOperations_ptr _ptr_type;
    typedef GEOM_I3DPrimOperations_var _var_type;

    static _ptr_type _duplicate(_ptr_type);
    static _ptr_type _narrow(::CORBA::Object_ptr);
    static _ptr_type _unchecked_narrow(::CORBA::Object_ptr);
    
    static _ptr_type _nil();

    static inline void _marshalObjRef(_ptr_type, cdrStream&);

    static inline _ptr_type _unmarshalObjRef(cdrStream& s) {
      omniObjRef* o = omniObjRef::_unMarshal(_PD_repoId,s);
      if (o)
        return (_ptr_type) o->_ptrToObjRef(_PD_repoId);
      else
        return _nil();
    }

    static _core_attr const char* _PD_repoId;

    // Other IDL defined within this scope.
    
  };

  class _objref_GEOM_I3DPrimOperations :
    public virtual _objref_GEOM_IOperations
  {
  public:
    GEOM_Object_ptr MakeBoxDXDYDZ(::CORBA::Double theDX, ::CORBA::Double theDY, ::CORBA::Double theDZ);
    GEOM_Object_ptr MakeBoxTwoPnt(::GEOM::GEOM_Object_ptr thePnt1, ::GEOM::GEOM_Object_ptr thePnt2);
    GEOM_Object_ptr MakeFaceHW(::CORBA::Double theH, ::CORBA::Double theW, ::CORBA::Short theOrientation);
    GEOM_Object_ptr MakeFaceObjHW(::GEOM::GEOM_Object_ptr theObj, ::CORBA::Double theH, ::CORBA::Double theW);
    GEOM_Object_ptr MakeDiskPntVecR(::GEOM::GEOM_Object_ptr thePnt, ::GEOM::GEOM_Object_ptr theVec, ::CORBA::Double theR);
    GEOM_Object_ptr MakeDiskThreePnt(::GEOM::GEOM_Object_ptr thePnt1, ::GEOM::GEOM_Object_ptr thePnt2, ::GEOM::GEOM_Object_ptr thePnt3);
    GEOM_Object_ptr MakeDiskR(::CORBA::Double theR, ::CORBA::Short theOrientation);
    GEOM_Object_ptr MakeCylinderRH(::CORBA::Double theR, ::CORBA::Double theH);
    GEOM_Object_ptr MakeCylinderPntVecRH(::GEOM::GEOM_Object_ptr thePnt, ::GEOM::GEOM_Object_ptr theAxis, ::CORBA::Double theR, ::CORBA::Double theH);
    GEOM_Object_ptr MakeConeR1R2H(::CORBA::Double theR1, ::CORBA::Double theR2, ::CORBA::Double theH);
    GEOM_Object_ptr MakeConePntVecR1R2H(::GEOM::GEOM_Object_ptr thePnt, ::GEOM::GEOM_Object_ptr theAxis, ::CORBA::Double theR1, ::CORBA::Double theR2, ::CORBA::Double theH);
    GEOM_Object_ptr MakeTorusRR(::CORBA::Double theRMajor, ::CORBA::Double theRMinor);
    GEOM_Object_ptr MakeTorusPntVecRR(::GEOM::GEOM_Object_ptr thePnt, ::GEOM::GEOM_Object_ptr theVec, ::CORBA::Double theRMajor, ::CORBA::Double theRMinor);
    GEOM_Object_ptr MakeSphereR(::CORBA::Double theR);
    GEOM_Object_ptr MakeSpherePntR(::GEOM::GEOM_Object_ptr thePnt, ::CORBA::Double theR);
    GEOM_Object_ptr MakePrismVecH(::GEOM::GEOM_Object_ptr theBase, ::GEOM::GEOM_Object_ptr theVec, ::CORBA::Double theH);
    GEOM_Object_ptr MakePrismVecH2Ways(::GEOM::GEOM_Object_ptr theBase, ::GEOM::GEOM_Object_ptr theVec, ::CORBA::Double theH);
    GEOM_Object_ptr MakePrismTwoPnt(::GEOM::GEOM_Object_ptr theBase, ::GEOM::GEOM_Object_ptr thePoint1, ::GEOM::GEOM_Object_ptr thePoint2);
    GEOM_Object_ptr MakePrismTwoPnt2Ways(::GEOM::GEOM_Object_ptr theBase, ::GEOM::GEOM_Object_ptr thePoint1, ::GEOM::GEOM_Object_ptr thePoint2);
    GEOM_Object_ptr MakePrismDXDYDZ(::GEOM::GEOM_Object_ptr theBase, ::CORBA::Double theDX, ::CORBA::Double theDY, ::CORBA::Double theDZ);
    GEOM_Object_ptr MakePrismDXDYDZ2Ways(::GEOM::GEOM_Object_ptr theBase, ::CORBA::Double theDX, ::CORBA::Double theDY, ::CORBA::Double theDZ);
    GEOM_Object_ptr MakePipe(::GEOM::GEOM_Object_ptr theBase, ::GEOM::GEOM_Object_ptr thePath);
    GEOM_Object_ptr MakeRevolutionAxisAngle(::GEOM::GEOM_Object_ptr theBase, ::GEOM::GEOM_Object_ptr theAxis, ::CORBA::Double theAngle);
    GEOM_Object_ptr MakeRevolutionAxisAngle2Ways(::GEOM::GEOM_Object_ptr theBase, ::GEOM::GEOM_Object_ptr theAxis, ::CORBA::Double theAngle);
    GEOM_Object_ptr MakeFilling(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theMinDeg, ::CORBA::Long theMaxDeg, ::CORBA::Double theTol2D, ::CORBA::Double theTol3D, ::CORBA::Long theNbIter, ::GEOM::filling_oper_method theMethod, ::CORBA::Boolean theApprox);
    GEOM_Object_ptr MakeThruSections(const ::GEOM::ListOfGO& theSeqSections, ::CORBA::Boolean theModeSolid, ::CORBA::Double thePreci, ::CORBA::Boolean theRuled);
    GEOM_Object_ptr MakePipeWithDifferentSections(const ::GEOM::ListOfGO& theSeqBases, const ::GEOM::ListOfGO& theLocations, ::GEOM::GEOM_Object_ptr thePath, ::CORBA::Boolean theWithContact, ::CORBA::Boolean theWithCorrection);
    GEOM_Object_ptr MakePipeWithShellSections(const ::GEOM::ListOfGO& theSeqBases, const ::GEOM::ListOfGO& theSeqSubBases, const ::GEOM::ListOfGO& theLocations, ::GEOM::GEOM_Object_ptr thePath, ::CORBA::Boolean theWithContact, ::CORBA::Boolean theWithCorrection);
    GEOM_Object_ptr MakePipeShellsWithoutPath(const ::GEOM::ListOfGO& theSeqBases, const ::GEOM::ListOfGO& theLocations);
    GEOM_Object_ptr MakePipeBiNormalAlongVector(::GEOM::GEOM_Object_ptr theBase, ::GEOM::GEOM_Object_ptr thePath, ::GEOM::GEOM_Object_ptr theVec);

    inline _objref_GEOM_I3DPrimOperations()  { _PR_setobj(0); }  // nil
    _objref_GEOM_I3DPrimOperations(omniIOR*, omniIdentity*);

  protected:
    virtual ~_objref_GEOM_I3DPrimOperations();

    
  private:
    virtual void* _ptrToObjRef(const char*);

    _objref_GEOM_I3DPrimOperations(const _objref_GEOM_I3DPrimOperations&);
    _objref_GEOM_I3DPrimOperations& operator = (const _objref_GEOM_I3DPrimOperations&);
    // not implemented

    friend class GEOM_I3DPrimOperations;
  };

  class _pof_GEOM_I3DPrimOperations : public _OMNI_NS(proxyObjectFactory) {
  public:
    inline _pof_GEOM_I3DPrimOperations() : _OMNI_NS(proxyObjectFactory)(GEOM_I3DPrimOperations::_PD_repoId) {}
    virtual ~_pof_GEOM_I3DPrimOperations();

    virtual omniObjRef* newObjRef(omniIOR*,omniIdentity*);
    virtual _CORBA_Boolean is_a(const char*) const;
  };

  class _impl_GEOM_I3DPrimOperations :
    public virtual _impl_GEOM_IOperations
  {
  public:
    virtual ~_impl_GEOM_I3DPrimOperations();

    virtual GEOM_Object_ptr MakeBoxDXDYDZ(::CORBA::Double theDX, ::CORBA::Double theDY, ::CORBA::Double theDZ) = 0;
    virtual GEOM_Object_ptr MakeBoxTwoPnt(::GEOM::GEOM_Object_ptr thePnt1, ::GEOM::GEOM_Object_ptr thePnt2) = 0;
    virtual GEOM_Object_ptr MakeFaceHW(::CORBA::Double theH, ::CORBA::Double theW, ::CORBA::Short theOrientation) = 0;
    virtual GEOM_Object_ptr MakeFaceObjHW(::GEOM::GEOM_Object_ptr theObj, ::CORBA::Double theH, ::CORBA::Double theW) = 0;
    virtual GEOM_Object_ptr MakeDiskPntVecR(::GEOM::GEOM_Object_ptr thePnt, ::GEOM::GEOM_Object_ptr theVec, ::CORBA::Double theR) = 0;
    virtual GEOM_Object_ptr MakeDiskThreePnt(::GEOM::GEOM_Object_ptr thePnt1, ::GEOM::GEOM_Object_ptr thePnt2, ::GEOM::GEOM_Object_ptr thePnt3) = 0;
    virtual GEOM_Object_ptr MakeDiskR(::CORBA::Double theR, ::CORBA::Short theOrientation) = 0;
    virtual GEOM_Object_ptr MakeCylinderRH(::CORBA::Double theR, ::CORBA::Double theH) = 0;
    virtual GEOM_Object_ptr MakeCylinderPntVecRH(::GEOM::GEOM_Object_ptr thePnt, ::GEOM::GEOM_Object_ptr theAxis, ::CORBA::Double theR, ::CORBA::Double theH) = 0;
    virtual GEOM_Object_ptr MakeConeR1R2H(::CORBA::Double theR1, ::CORBA::Double theR2, ::CORBA::Double theH) = 0;
    virtual GEOM_Object_ptr MakeConePntVecR1R2H(::GEOM::GEOM_Object_ptr thePnt, ::GEOM::GEOM_Object_ptr theAxis, ::CORBA::Double theR1, ::CORBA::Double theR2, ::CORBA::Double theH) = 0;
    virtual GEOM_Object_ptr MakeTorusRR(::CORBA::Double theRMajor, ::CORBA::Double theRMinor) = 0;
    virtual GEOM_Object_ptr MakeTorusPntVecRR(::GEOM::GEOM_Object_ptr thePnt, ::GEOM::GEOM_Object_ptr theVec, ::CORBA::Double theRMajor, ::CORBA::Double theRMinor) = 0;
    virtual GEOM_Object_ptr MakeSphereR(::CORBA::Double theR) = 0;
    virtual GEOM_Object_ptr MakeSpherePntR(::GEOM::GEOM_Object_ptr thePnt, ::CORBA::Double theR) = 0;
    virtual GEOM_Object_ptr MakePrismVecH(::GEOM::GEOM_Object_ptr theBase, ::GEOM::GEOM_Object_ptr theVec, ::CORBA::Double theH) = 0;
    virtual GEOM_Object_ptr MakePrismVecH2Ways(::GEOM::GEOM_Object_ptr theBase, ::GEOM::GEOM_Object_ptr theVec, ::CORBA::Double theH) = 0;
    virtual GEOM_Object_ptr MakePrismTwoPnt(::GEOM::GEOM_Object_ptr theBase, ::GEOM::GEOM_Object_ptr thePoint1, ::GEOM::GEOM_Object_ptr thePoint2) = 0;
    virtual GEOM_Object_ptr MakePrismTwoPnt2Ways(::GEOM::GEOM_Object_ptr theBase, ::GEOM::GEOM_Object_ptr thePoint1, ::GEOM::GEOM_Object_ptr thePoint2) = 0;
    virtual GEOM_Object_ptr MakePrismDXDYDZ(::GEOM::GEOM_Object_ptr theBase, ::CORBA::Double theDX, ::CORBA::Double theDY, ::CORBA::Double theDZ) = 0;
    virtual GEOM_Object_ptr MakePrismDXDYDZ2Ways(::GEOM::GEOM_Object_ptr theBase, ::CORBA::Double theDX, ::CORBA::Double theDY, ::CORBA::Double theDZ) = 0;
    virtual GEOM_Object_ptr MakePipe(::GEOM::GEOM_Object_ptr theBase, ::GEOM::GEOM_Object_ptr thePath) = 0;
    virtual GEOM_Object_ptr MakeRevolutionAxisAngle(::GEOM::GEOM_Object_ptr theBase, ::GEOM::GEOM_Object_ptr theAxis, ::CORBA::Double theAngle) = 0;
    virtual GEOM_Object_ptr MakeRevolutionAxisAngle2Ways(::GEOM::GEOM_Object_ptr theBase, ::GEOM::GEOM_Object_ptr theAxis, ::CORBA::Double theAngle) = 0;
    virtual GEOM_Object_ptr MakeFilling(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theMinDeg, ::CORBA::Long theMaxDeg, ::CORBA::Double theTol2D, ::CORBA::Double theTol3D, ::CORBA::Long theNbIter, ::GEOM::filling_oper_method theMethod, ::CORBA::Boolean theApprox) = 0;
    virtual GEOM_Object_ptr MakeThruSections(const ::GEOM::ListOfGO& theSeqSections, ::CORBA::Boolean theModeSolid, ::CORBA::Double thePreci, ::CORBA::Boolean theRuled) = 0;
    virtual GEOM_Object_ptr MakePipeWithDifferentSections(const ::GEOM::ListOfGO& theSeqBases, const ::GEOM::ListOfGO& theLocations, ::GEOM::GEOM_Object_ptr thePath, ::CORBA::Boolean theWithContact, ::CORBA::Boolean theWithCorrection) = 0;
    virtual GEOM_Object_ptr MakePipeWithShellSections(const ::GEOM::ListOfGO& theSeqBases, const ::GEOM::ListOfGO& theSeqSubBases, const ::GEOM::ListOfGO& theLocations, ::GEOM::GEOM_Object_ptr thePath, ::CORBA::Boolean theWithContact, ::CORBA::Boolean theWithCorrection) = 0;
    virtual GEOM_Object_ptr MakePipeShellsWithoutPath(const ::GEOM::ListOfGO& theSeqBases, const ::GEOM::ListOfGO& theLocations) = 0;
    virtual GEOM_Object_ptr MakePipeBiNormalAlongVector(::GEOM::GEOM_Object_ptr theBase, ::GEOM::GEOM_Object_ptr thePath, ::GEOM::GEOM_Object_ptr theVec) = 0;
    
  public:  // Really protected, workaround for xlC
    virtual _CORBA_Boolean _dispatch(omniCallHandle&);

  private:
    virtual void* _ptrToInterface(const char*);
    virtual const char* _mostDerivedRepoId();
    
  };


  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_GEOM_I3DPrimOperations;

#ifndef __GEOM_mGEOM__IShapesOperations__
#define __GEOM_mGEOM__IShapesOperations__

  class GEOM_IShapesOperations;
  class _objref_GEOM_IShapesOperations;
  class _impl_GEOM_IShapesOperations;
  
  typedef _objref_GEOM_IShapesOperations* GEOM_IShapesOperations_ptr;
  typedef GEOM_IShapesOperations_ptr GEOM_IShapesOperationsRef;

  class GEOM_IShapesOperations_Helper {
  public:
    typedef GEOM_IShapesOperations_ptr _ptr_type;

    static _ptr_type _nil();
    static _CORBA_Boolean is_nil(_ptr_type);
    static void release(_ptr_type);
    static void duplicate(_ptr_type);
    static void marshalObjRef(_ptr_type, cdrStream&);
    static _ptr_type unmarshalObjRef(cdrStream&);
  };

  typedef _CORBA_ObjRef_Var<_objref_GEOM_IShapesOperations, GEOM_IShapesOperations_Helper> GEOM_IShapesOperations_var;
  typedef _CORBA_ObjRef_OUT_arg<_objref_GEOM_IShapesOperations,GEOM_IShapesOperations_Helper > GEOM_IShapesOperations_out;

#endif

  // interface GEOM_IShapesOperations
  class GEOM_IShapesOperations {
  public:
    // Declarations for this interface type.
    typedef GEOM_IShapesOperations_ptr _ptr_type;
    typedef GEOM_IShapesOperations_var _var_type;

    static _ptr_type _duplicate(_ptr_type);
    static _ptr_type _narrow(::CORBA::Object_ptr);
    static _ptr_type _unchecked_narrow(::CORBA::Object_ptr);
    
    static _ptr_type _nil();

    static inline void _marshalObjRef(_ptr_type, cdrStream&);

    static inline _ptr_type _unmarshalObjRef(cdrStream& s) {
      omniObjRef* o = omniObjRef::_unMarshal(_PD_repoId,s);
      if (o)
        return (_ptr_type) o->_ptrToObjRef(_PD_repoId);
      else
        return _nil();
    }

    static _core_attr const char* _PD_repoId;

    // Other IDL defined within this scope.
    
  };

  class _objref_GEOM_IShapesOperations :
    public virtual _objref_GEOM_IOperations
  {
  public:
    GEOM_Object_ptr MakeEdge(::GEOM::GEOM_Object_ptr thePnt1, ::GEOM::GEOM_Object_ptr thePnt2);
    GEOM_Object_ptr MakeWire(const ::GEOM::ListOfGO& theEdgesAndWires, ::CORBA::Double theTolerance);
    GEOM_Object_ptr MakeFace(::GEOM::GEOM_Object_ptr theWire, ::CORBA::Boolean isPlanarWanted);
    GEOM_Object_ptr MakeFaceWires(const ::GEOM::ListOfGO& theWires, ::CORBA::Boolean isPlanarWanted);
    GEOM_Object_ptr MakeShell(const ::GEOM::ListOfGO& theFacesAndShells);
    GEOM_Object_ptr MakeSolidShell(::GEOM::GEOM_Object_ptr theShell);
    GEOM_Object_ptr MakeSolidShells(const ::GEOM::ListOfGO& theShells);
    GEOM_Object_ptr MakeCompound(const ::GEOM::ListOfGO& theShapes);
    GEOM_Object_ptr MakeGlueFaces(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theTolerance, ::CORBA::Boolean doKeepNonSolids);
    ListOfGO* GetGlueFaces(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theTolerance);
    GEOM_Object_ptr MakeGlueFacesByList(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theTolerance, const ::GEOM::ListOfGO& theFaces, ::CORBA::Boolean doKeepNonSolids);
    ListOfGO* MakeExplode(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::CORBA::Boolean isSorted);
    ListOfLong* SubShapeAllIDs(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::CORBA::Boolean isSorted);
    GEOM_Object_ptr GetSubShape(::GEOM::GEOM_Object_ptr theMainShape, ::CORBA::Long theID);
    ::CORBA::Long GetSubShapeIndex(::GEOM::GEOM_Object_ptr theMainShape, ::GEOM::GEOM_Object_ptr theSubShape);
    ::CORBA::Long GetTopologyIndex(::GEOM::GEOM_Object_ptr theMainShape, ::GEOM::GEOM_Object_ptr theSubShape);
    char* GetShapeTypeString(::GEOM::GEOM_Object_ptr theShape);
    ::CORBA::Long NumberOfFaces(::GEOM::GEOM_Object_ptr theShape);
    ::CORBA::Long NumberOfEdges(::GEOM::GEOM_Object_ptr theShape);
    ::CORBA::Long NumberOfSubShapes(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType);
    GEOM_Object_ptr ChangeOrientation(::GEOM::GEOM_Object_ptr theShape);
    ListOfLong* GetFreeFacesIDs(::GEOM::GEOM_Object_ptr theShape);
    ListOfGO* GetSharedShapes(::GEOM::GEOM_Object_ptr theShape1, ::GEOM::GEOM_Object_ptr theShape2, ::CORBA::Long theShapeType);
    ListOfGO* GetShapesOnPlane(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::GEOM_Object_ptr theAx1, ::GEOM::shape_state theState);
    ListOfGO* GetShapesOnPlaneWithLocation(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::GEOM_Object_ptr theAx1, ::GEOM::GEOM_Object_ptr thePnt, ::GEOM::shape_state theState);
    ListOfGO* GetShapesOnCylinder(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::GEOM_Object_ptr theAxis, ::CORBA::Double theRadius, ::GEOM::shape_state theState);
    ListOfGO* GetShapesOnCylinderWithLocation(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::GEOM_Object_ptr theAxis, ::GEOM::GEOM_Object_ptr thePnt, ::CORBA::Double theRadius, ::GEOM::shape_state theState);
    ListOfGO* GetShapesOnSphere(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::GEOM_Object_ptr theCenter, ::CORBA::Double theRadius, ::GEOM::shape_state theState);
    ListOfGO* GetShapesOnQuadrangle(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::GEOM_Object_ptr theTopLeftPoint, ::GEOM::GEOM_Object_ptr theTopRigthPoint, ::GEOM::GEOM_Object_ptr theBottomLeftPoint, ::GEOM::GEOM_Object_ptr theBottomRigthPoint, ::GEOM::shape_state theState);
    ListOfLong* GetShapesOnPlaneIDs(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::GEOM_Object_ptr theAx1, ::GEOM::shape_state theState);
    ListOfLong* GetShapesOnPlaneWithLocationIDs(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::GEOM_Object_ptr theAx1, ::GEOM::GEOM_Object_ptr thePnt, ::GEOM::shape_state theState);
    ListOfLong* GetShapesOnCylinderIDs(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::GEOM_Object_ptr theAxis, ::CORBA::Double theRadius, ::GEOM::shape_state theState);
    ListOfLong* GetShapesOnCylinderWithLocationIDs(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::GEOM_Object_ptr theAxis, ::GEOM::GEOM_Object_ptr thePnt, ::CORBA::Double theRadius, ::GEOM::shape_state theState);
    ListOfLong* GetShapesOnSphereIDs(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::GEOM_Object_ptr theCenter, ::CORBA::Double theRadius, ::GEOM::shape_state theState);
    ListOfLong* GetShapesOnQuadrangleIDs(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::GEOM_Object_ptr theTopLeftPoint, ::GEOM::GEOM_Object_ptr theTopRigthPoint, ::GEOM::GEOM_Object_ptr theBottomLeftPoint, ::GEOM::GEOM_Object_ptr theBottomRigthPoint, ::GEOM::shape_state theState);
    ListOfLong* GetShapesOnBoxIDs(::GEOM::GEOM_Object_ptr theBox, ::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::shape_state theState);
    ListOfGO* GetShapesOnBox(::GEOM::GEOM_Object_ptr theBox, ::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::shape_state theState);
    ListOfLong* GetShapesOnShapeIDs(::GEOM::GEOM_Object_ptr theCheckShape, ::GEOM::GEOM_Object_ptr theShape, ::CORBA::Short theShapeType, ::GEOM::shape_state theState);
    ListOfGO* GetShapesOnShape(::GEOM::GEOM_Object_ptr theCheckShape, ::GEOM::GEOM_Object_ptr theShape, ::CORBA::Short theShapeType, ::GEOM::shape_state theState);
    GEOM_Object_ptr GetShapesOnShapeAsCompound(::GEOM::GEOM_Object_ptr theCheckShape, ::GEOM::GEOM_Object_ptr theShape, ::CORBA::Short theShapeType, ::GEOM::shape_state theState);
    GEOM_Object_ptr GetInPlace(::GEOM::GEOM_Object_ptr theShapeWhere, ::GEOM::GEOM_Object_ptr theShapeWhat);
    GEOM_Object_ptr GetInPlaceByHistory(::GEOM::GEOM_Object_ptr theShapeWhere, ::GEOM::GEOM_Object_ptr theShapeWhat);
    GEOM_Object_ptr GetSame(::GEOM::GEOM_Object_ptr theShapeWhere, ::GEOM::GEOM_Object_ptr theShapeWhat);

    inline _objref_GEOM_IShapesOperations()  { _PR_setobj(0); }  // nil
    _objref_GEOM_IShapesOperations(omniIOR*, omniIdentity*);

  protected:
    virtual ~_objref_GEOM_IShapesOperations();

    
  private:
    virtual void* _ptrToObjRef(const char*);

    _objref_GEOM_IShapesOperations(const _objref_GEOM_IShapesOperations&);
    _objref_GEOM_IShapesOperations& operator = (const _objref_GEOM_IShapesOperations&);
    // not implemented

    friend class GEOM_IShapesOperations;
  };

  class _pof_GEOM_IShapesOperations : public _OMNI_NS(proxyObjectFactory) {
  public:
    inline _pof_GEOM_IShapesOperations() : _OMNI_NS(proxyObjectFactory)(GEOM_IShapesOperations::_PD_repoId) {}
    virtual ~_pof_GEOM_IShapesOperations();

    virtual omniObjRef* newObjRef(omniIOR*,omniIdentity*);
    virtual _CORBA_Boolean is_a(const char*) const;
  };

  class _impl_GEOM_IShapesOperations :
    public virtual _impl_GEOM_IOperations
  {
  public:
    virtual ~_impl_GEOM_IShapesOperations();

    virtual GEOM_Object_ptr MakeEdge(::GEOM::GEOM_Object_ptr thePnt1, ::GEOM::GEOM_Object_ptr thePnt2) = 0;
    virtual GEOM_Object_ptr MakeWire(const ::GEOM::ListOfGO& theEdgesAndWires, ::CORBA::Double theTolerance) = 0;
    virtual GEOM_Object_ptr MakeFace(::GEOM::GEOM_Object_ptr theWire, ::CORBA::Boolean isPlanarWanted) = 0;
    virtual GEOM_Object_ptr MakeFaceWires(const ::GEOM::ListOfGO& theWires, ::CORBA::Boolean isPlanarWanted) = 0;
    virtual GEOM_Object_ptr MakeShell(const ::GEOM::ListOfGO& theFacesAndShells) = 0;
    virtual GEOM_Object_ptr MakeSolidShell(::GEOM::GEOM_Object_ptr theShell) = 0;
    virtual GEOM_Object_ptr MakeSolidShells(const ::GEOM::ListOfGO& theShells) = 0;
    virtual GEOM_Object_ptr MakeCompound(const ::GEOM::ListOfGO& theShapes) = 0;
    virtual GEOM_Object_ptr MakeGlueFaces(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theTolerance, ::CORBA::Boolean doKeepNonSolids) = 0;
    virtual ListOfGO* GetGlueFaces(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theTolerance) = 0;
    virtual GEOM_Object_ptr MakeGlueFacesByList(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theTolerance, const ::GEOM::ListOfGO& theFaces, ::CORBA::Boolean doKeepNonSolids) = 0;
    virtual ListOfGO* MakeExplode(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::CORBA::Boolean isSorted) = 0;
    virtual ListOfLong* SubShapeAllIDs(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::CORBA::Boolean isSorted) = 0;
    virtual GEOM_Object_ptr GetSubShape(::GEOM::GEOM_Object_ptr theMainShape, ::CORBA::Long theID) = 0;
    virtual ::CORBA::Long GetSubShapeIndex(::GEOM::GEOM_Object_ptr theMainShape, ::GEOM::GEOM_Object_ptr theSubShape) = 0;
    virtual ::CORBA::Long GetTopologyIndex(::GEOM::GEOM_Object_ptr theMainShape, ::GEOM::GEOM_Object_ptr theSubShape) = 0;
    virtual char* GetShapeTypeString(::GEOM::GEOM_Object_ptr theShape) = 0;
    virtual ::CORBA::Long NumberOfFaces(::GEOM::GEOM_Object_ptr theShape) = 0;
    virtual ::CORBA::Long NumberOfEdges(::GEOM::GEOM_Object_ptr theShape) = 0;
    virtual ::CORBA::Long NumberOfSubShapes(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType) = 0;
    virtual GEOM_Object_ptr ChangeOrientation(::GEOM::GEOM_Object_ptr theShape) = 0;
    virtual ListOfLong* GetFreeFacesIDs(::GEOM::GEOM_Object_ptr theShape) = 0;
    virtual ListOfGO* GetSharedShapes(::GEOM::GEOM_Object_ptr theShape1, ::GEOM::GEOM_Object_ptr theShape2, ::CORBA::Long theShapeType) = 0;
    virtual ListOfGO* GetShapesOnPlane(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::GEOM_Object_ptr theAx1, ::GEOM::shape_state theState) = 0;
    virtual ListOfGO* GetShapesOnPlaneWithLocation(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::GEOM_Object_ptr theAx1, ::GEOM::GEOM_Object_ptr thePnt, ::GEOM::shape_state theState) = 0;
    virtual ListOfGO* GetShapesOnCylinder(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::GEOM_Object_ptr theAxis, ::CORBA::Double theRadius, ::GEOM::shape_state theState) = 0;
    virtual ListOfGO* GetShapesOnCylinderWithLocation(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::GEOM_Object_ptr theAxis, ::GEOM::GEOM_Object_ptr thePnt, ::CORBA::Double theRadius, ::GEOM::shape_state theState) = 0;
    virtual ListOfGO* GetShapesOnSphere(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::GEOM_Object_ptr theCenter, ::CORBA::Double theRadius, ::GEOM::shape_state theState) = 0;
    virtual ListOfGO* GetShapesOnQuadrangle(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::GEOM_Object_ptr theTopLeftPoint, ::GEOM::GEOM_Object_ptr theTopRigthPoint, ::GEOM::GEOM_Object_ptr theBottomLeftPoint, ::GEOM::GEOM_Object_ptr theBottomRigthPoint, ::GEOM::shape_state theState) = 0;
    virtual ListOfLong* GetShapesOnPlaneIDs(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::GEOM_Object_ptr theAx1, ::GEOM::shape_state theState) = 0;
    virtual ListOfLong* GetShapesOnPlaneWithLocationIDs(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::GEOM_Object_ptr theAx1, ::GEOM::GEOM_Object_ptr thePnt, ::GEOM::shape_state theState) = 0;
    virtual ListOfLong* GetShapesOnCylinderIDs(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::GEOM_Object_ptr theAxis, ::CORBA::Double theRadius, ::GEOM::shape_state theState) = 0;
    virtual ListOfLong* GetShapesOnCylinderWithLocationIDs(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::GEOM_Object_ptr theAxis, ::GEOM::GEOM_Object_ptr thePnt, ::CORBA::Double theRadius, ::GEOM::shape_state theState) = 0;
    virtual ListOfLong* GetShapesOnSphereIDs(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::GEOM_Object_ptr theCenter, ::CORBA::Double theRadius, ::GEOM::shape_state theState) = 0;
    virtual ListOfLong* GetShapesOnQuadrangleIDs(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::GEOM_Object_ptr theTopLeftPoint, ::GEOM::GEOM_Object_ptr theTopRigthPoint, ::GEOM::GEOM_Object_ptr theBottomLeftPoint, ::GEOM::GEOM_Object_ptr theBottomRigthPoint, ::GEOM::shape_state theState) = 0;
    virtual ListOfLong* GetShapesOnBoxIDs(::GEOM::GEOM_Object_ptr theBox, ::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::shape_state theState) = 0;
    virtual ListOfGO* GetShapesOnBox(::GEOM::GEOM_Object_ptr theBox, ::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theShapeType, ::GEOM::shape_state theState) = 0;
    virtual ListOfLong* GetShapesOnShapeIDs(::GEOM::GEOM_Object_ptr theCheckShape, ::GEOM::GEOM_Object_ptr theShape, ::CORBA::Short theShapeType, ::GEOM::shape_state theState) = 0;
    virtual ListOfGO* GetShapesOnShape(::GEOM::GEOM_Object_ptr theCheckShape, ::GEOM::GEOM_Object_ptr theShape, ::CORBA::Short theShapeType, ::GEOM::shape_state theState) = 0;
    virtual GEOM_Object_ptr GetShapesOnShapeAsCompound(::GEOM::GEOM_Object_ptr theCheckShape, ::GEOM::GEOM_Object_ptr theShape, ::CORBA::Short theShapeType, ::GEOM::shape_state theState) = 0;
    virtual GEOM_Object_ptr GetInPlace(::GEOM::GEOM_Object_ptr theShapeWhere, ::GEOM::GEOM_Object_ptr theShapeWhat) = 0;
    virtual GEOM_Object_ptr GetInPlaceByHistory(::GEOM::GEOM_Object_ptr theShapeWhere, ::GEOM::GEOM_Object_ptr theShapeWhat) = 0;
    virtual GEOM_Object_ptr GetSame(::GEOM::GEOM_Object_ptr theShapeWhere, ::GEOM::GEOM_Object_ptr theShapeWhat) = 0;
    
  public:  // Really protected, workaround for xlC
    virtual _CORBA_Boolean _dispatch(omniCallHandle&);

  private:
    virtual void* _ptrToInterface(const char*);
    virtual const char* _mostDerivedRepoId();
    
  };


  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_GEOM_IShapesOperations;

#ifndef __GEOM_mGEOM__IBlocksOperations__
#define __GEOM_mGEOM__IBlocksOperations__

  class GEOM_IBlocksOperations;
  class _objref_GEOM_IBlocksOperations;
  class _impl_GEOM_IBlocksOperations;
  
  typedef _objref_GEOM_IBlocksOperations* GEOM_IBlocksOperations_ptr;
  typedef GEOM_IBlocksOperations_ptr GEOM_IBlocksOperationsRef;

  class GEOM_IBlocksOperations_Helper {
  public:
    typedef GEOM_IBlocksOperations_ptr _ptr_type;

    static _ptr_type _nil();
    static _CORBA_Boolean is_nil(_ptr_type);
    static void release(_ptr_type);
    static void duplicate(_ptr_type);
    static void marshalObjRef(_ptr_type, cdrStream&);
    static _ptr_type unmarshalObjRef(cdrStream&);
  };

  typedef _CORBA_ObjRef_Var<_objref_GEOM_IBlocksOperations, GEOM_IBlocksOperations_Helper> GEOM_IBlocksOperations_var;
  typedef _CORBA_ObjRef_OUT_arg<_objref_GEOM_IBlocksOperations,GEOM_IBlocksOperations_Helper > GEOM_IBlocksOperations_out;

#endif

  // interface GEOM_IBlocksOperations
  class GEOM_IBlocksOperations {
  public:
    // Declarations for this interface type.
    typedef GEOM_IBlocksOperations_ptr _ptr_type;
    typedef GEOM_IBlocksOperations_var _var_type;

    static _ptr_type _duplicate(_ptr_type);
    static _ptr_type _narrow(::CORBA::Object_ptr);
    static _ptr_type _unchecked_narrow(::CORBA::Object_ptr);
    
    static _ptr_type _nil();

    static inline void _marshalObjRef(_ptr_type, cdrStream&);

    static inline _ptr_type _unmarshalObjRef(cdrStream& s) {
      omniObjRef* o = omniObjRef::_unMarshal(_PD_repoId,s);
      if (o)
        return (_ptr_type) o->_ptrToObjRef(_PD_repoId);
      else
        return _nil();
    }

    static _core_attr const char* _PD_repoId;

    // Other IDL defined within this scope.
    enum BCErrorType { NOT_BLOCK, EXTRA_EDGE, INVALID_CONNECTION, NOT_CONNECTED, NOT_GLUED /*, __max_BCErrorType=0xffffffff */ };
    typedef BCErrorType& BCErrorType_out;

    static _dyn_attr const ::CORBA::TypeCode_ptr _tc_BCErrorType;

    struct BCError {
      typedef _CORBA_ConstrType_Variable_Var<BCError> _var_type;

      
      BCErrorType error;

      ListOfLong incriminated;

    

      void operator>>= (cdrStream &) const;
      void operator<<= (cdrStream &);
    };

    typedef BCError::_var_type BCError_var;

    typedef _CORBA_ConstrType_Variable_OUT_arg< BCError,BCError_var > BCError_out;

    static _dyn_attr const ::CORBA::TypeCode_ptr _tc_BCError;

    static _dyn_attr const ::CORBA::TypeCode_ptr _tc_BCErrors;

    class BCErrors_var;

    class BCErrors : public _CORBA_Unbounded_Sequence< BCError >  {
    public:
      typedef BCErrors_var _var_type;
      inline BCErrors() {}
      inline BCErrors(const BCErrors& _s)
        : _CORBA_Unbounded_Sequence< BCError > (_s) {}

      inline BCErrors(_CORBA_ULong _max)
        : _CORBA_Unbounded_Sequence< BCError > (_max) {}
      inline BCErrors(_CORBA_ULong _max, _CORBA_ULong _len, BCError* _val, _CORBA_Boolean _rel=0)
        : _CORBA_Unbounded_Sequence< BCError > (_max, _len, _val, _rel) {}

    

      inline BCErrors& operator = (const BCErrors& _s) {
        _CORBA_Unbounded_Sequence< BCError > ::operator=(_s);
        return *this;
      }
    };

    class BCErrors_out;

    class BCErrors_var {
    public:
      inline BCErrors_var() : _pd_seq(0) {}
      inline BCErrors_var(BCErrors* _s) : _pd_seq(_s) {}
      inline BCErrors_var(const BCErrors_var& _s) {
        if( _s._pd_seq )  _pd_seq = new BCErrors(*_s._pd_seq);
        else              _pd_seq = 0;
      }
      inline ~BCErrors_var() { if( _pd_seq )  delete _pd_seq; }
        
      inline BCErrors_var& operator = (BCErrors* _s) {
        if( _pd_seq )  delete _pd_seq;
        _pd_seq = _s;
        return *this;
      }
      inline BCErrors_var& operator = (const BCErrors_var& _s) {
        if( _s._pd_seq ) {
          if( !_pd_seq )  _pd_seq = new BCErrors;
          *_pd_seq = *_s._pd_seq;
        } else if( _pd_seq ) {
          delete _pd_seq;
          _pd_seq = 0;
        }
        return *this;
      }
      inline BCError& operator [] (_CORBA_ULong _s) {
        return (*_pd_seq)[_s];
      }

    

      inline BCErrors* operator -> () { return _pd_seq; }
      inline const BCErrors* operator -> () const { return _pd_seq; }
#if defined(__GNUG__)
      inline operator BCErrors& () const { return *_pd_seq; }
#else
      inline operator const BCErrors& () const { return *_pd_seq; }
      inline operator BCErrors& () { return *_pd_seq; }
#endif
        
      inline const BCErrors& in() const { return *_pd_seq; }
      inline BCErrors&       inout()    { return *_pd_seq; }
      inline BCErrors*&      out() {
        if( _pd_seq ) { delete _pd_seq; _pd_seq = 0; }
        return _pd_seq;
      }
      inline BCErrors* _retn() { BCErrors* tmp = _pd_seq; _pd_seq = 0; return tmp; }
        
      friend class BCErrors_out;
      
    private:
      BCErrors* _pd_seq;
    };

    class BCErrors_out {
    public:
      inline BCErrors_out(BCErrors*& _s) : _data(_s) { _data = 0; }
      inline BCErrors_out(BCErrors_var& _s)
        : _data(_s._pd_seq) { _s = (BCErrors*) 0; }
      inline BCErrors_out(const BCErrors_out& _s) : _data(_s._data) {}
      inline BCErrors_out& operator = (const BCErrors_out& _s) {
        _data = _s._data;
        return *this;
      }
      inline BCErrors_out& operator = (BCErrors* _s) {
        _data = _s;
        return *this;
      }
      inline operator BCErrors*&()  { return _data; }
      inline BCErrors*& ptr()       { return _data; }
      inline BCErrors* operator->() { return _data; }

      inline BCError& operator [] (_CORBA_ULong _i) {
        return (*_data)[_i];
      }

    

      BCErrors*& _data;

    private:
      BCErrors_out();
      BCErrors_out& operator=(const BCErrors_var&);
    };

  
  };

  class _objref_GEOM_IBlocksOperations :
    public virtual _objref_GEOM_IOperations
  {
  public:
    GEOM_Object_ptr MakeQuad(::GEOM::GEOM_Object_ptr theEdge1, ::GEOM::GEOM_Object_ptr theEdge2, ::GEOM::GEOM_Object_ptr theEdge3, ::GEOM::GEOM_Object_ptr theEdge4);
    GEOM_Object_ptr MakeQuad2Edges(::GEOM::GEOM_Object_ptr theEdge1, ::GEOM::GEOM_Object_ptr theEdge2);
    GEOM_Object_ptr MakeQuad4Vertices(::GEOM::GEOM_Object_ptr thePnt1, ::GEOM::GEOM_Object_ptr thePnt2, ::GEOM::GEOM_Object_ptr thePnt3, ::GEOM::GEOM_Object_ptr thePnt4);
    GEOM_Object_ptr MakeHexa(::GEOM::GEOM_Object_ptr theFace1, ::GEOM::GEOM_Object_ptr theFace2, ::GEOM::GEOM_Object_ptr theFace3, ::GEOM::GEOM_Object_ptr theFace4, ::GEOM::GEOM_Object_ptr theFace5, ::GEOM::GEOM_Object_ptr theFace6);
    GEOM_Object_ptr MakeHexa2Faces(::GEOM::GEOM_Object_ptr theFace1, ::GEOM::GEOM_Object_ptr theFace2);
    GEOM_Object_ptr GetPoint(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theX, ::CORBA::Double theY, ::CORBA::Double theZ, ::CORBA::Double theEpsilon);
    GEOM_Object_ptr GetEdge(::GEOM::GEOM_Object_ptr theShape, ::GEOM::GEOM_Object_ptr thePoint1, ::GEOM::GEOM_Object_ptr thePoint2);
    GEOM_Object_ptr GetEdgeNearPoint(::GEOM::GEOM_Object_ptr theShape, ::GEOM::GEOM_Object_ptr thePoint);
    GEOM_Object_ptr GetFaceByPoints(::GEOM::GEOM_Object_ptr theShape, ::GEOM::GEOM_Object_ptr thePoint1, ::GEOM::GEOM_Object_ptr thePoint2, ::GEOM::GEOM_Object_ptr thePoint3, ::GEOM::GEOM_Object_ptr thePoint4);
    GEOM_Object_ptr GetFaceByEdges(::GEOM::GEOM_Object_ptr theShape, ::GEOM::GEOM_Object_ptr theEdge1, ::GEOM::GEOM_Object_ptr theEdge2);
    GEOM_Object_ptr GetOppositeFace(::GEOM::GEOM_Object_ptr theBlock, ::GEOM::GEOM_Object_ptr theFace);
    GEOM_Object_ptr GetFaceNearPoint(::GEOM::GEOM_Object_ptr theShape, ::GEOM::GEOM_Object_ptr thePoint);
    GEOM_Object_ptr GetFaceByNormale(::GEOM::GEOM_Object_ptr theBlock, ::GEOM::GEOM_Object_ptr theVector);
    ::CORBA::Boolean IsCompoundOfBlocks(::GEOM::GEOM_Object_ptr theCompound, ::CORBA::Long theMinNbFaces, ::CORBA::Long theMaxNbFaces, ::CORBA::Long& theNbBlocks);
    ::CORBA::Boolean CheckCompoundOfBlocks(::GEOM::GEOM_Object_ptr theCompound, ::GEOM::GEOM_IBlocksOperations::BCErrors_out theErrors);
    char* PrintBCErrors(::GEOM::GEOM_Object_ptr theCompound, const ::GEOM::GEOM_IBlocksOperations::BCErrors& theErrors);
    GEOM_Object_ptr RemoveExtraEdges(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theOptimumNbFaces);
    GEOM_Object_ptr CheckAndImprove(::GEOM::GEOM_Object_ptr theCompound);
    ListOfGO* ExplodeCompoundOfBlocks(::GEOM::GEOM_Object_ptr theCompound, ::CORBA::Long theMinNbFaces, ::CORBA::Long theMaxNbFaces);
    GEOM_Object_ptr GetBlockNearPoint(::GEOM::GEOM_Object_ptr theCompound, ::GEOM::GEOM_Object_ptr thePoint);
    GEOM_Object_ptr GetBlockByParts(::GEOM::GEOM_Object_ptr theCompound, const ::GEOM::ListOfGO& theParts);
    ListOfGO* GetBlocksByParts(::GEOM::GEOM_Object_ptr theCompound, const ::GEOM::ListOfGO& theParts);
    GEOM_Object_ptr MakeMultiTransformation1D(::GEOM::GEOM_Object_ptr theBlock, ::CORBA::Long theDirFace1, ::CORBA::Long theDirFace2, ::CORBA::Long theNbTimes);
    GEOM_Object_ptr MakeMultiTransformation2D(::GEOM::GEOM_Object_ptr theBlock, ::CORBA::Long theDirFace1U, ::CORBA::Long theDirFace2U, ::CORBA::Long theNbTimesU, ::CORBA::Long theDirFace1V, ::CORBA::Long theDirFace2V, ::CORBA::Long theNbTimesV);
    ListOfGO* Propagate(::GEOM::GEOM_Object_ptr theShape);

    inline _objref_GEOM_IBlocksOperations()  { _PR_setobj(0); }  // nil
    _objref_GEOM_IBlocksOperations(omniIOR*, omniIdentity*);

  protected:
    virtual ~_objref_GEOM_IBlocksOperations();

    
  private:
    virtual void* _ptrToObjRef(const char*);

    _objref_GEOM_IBlocksOperations(const _objref_GEOM_IBlocksOperations&);
    _objref_GEOM_IBlocksOperations& operator = (const _objref_GEOM_IBlocksOperations&);
    // not implemented

    friend class GEOM_IBlocksOperations;
  };

  class _pof_GEOM_IBlocksOperations : public _OMNI_NS(proxyObjectFactory) {
  public:
    inline _pof_GEOM_IBlocksOperations() : _OMNI_NS(proxyObjectFactory)(GEOM_IBlocksOperations::_PD_repoId) {}
    virtual ~_pof_GEOM_IBlocksOperations();

    virtual omniObjRef* newObjRef(omniIOR*,omniIdentity*);
    virtual _CORBA_Boolean is_a(const char*) const;
  };

  class _impl_GEOM_IBlocksOperations :
    public virtual _impl_GEOM_IOperations
  {
  public:
    virtual ~_impl_GEOM_IBlocksOperations();

    virtual GEOM_Object_ptr MakeQuad(::GEOM::GEOM_Object_ptr theEdge1, ::GEOM::GEOM_Object_ptr theEdge2, ::GEOM::GEOM_Object_ptr theEdge3, ::GEOM::GEOM_Object_ptr theEdge4) = 0;
    virtual GEOM_Object_ptr MakeQuad2Edges(::GEOM::GEOM_Object_ptr theEdge1, ::GEOM::GEOM_Object_ptr theEdge2) = 0;
    virtual GEOM_Object_ptr MakeQuad4Vertices(::GEOM::GEOM_Object_ptr thePnt1, ::GEOM::GEOM_Object_ptr thePnt2, ::GEOM::GEOM_Object_ptr thePnt3, ::GEOM::GEOM_Object_ptr thePnt4) = 0;
    virtual GEOM_Object_ptr MakeHexa(::GEOM::GEOM_Object_ptr theFace1, ::GEOM::GEOM_Object_ptr theFace2, ::GEOM::GEOM_Object_ptr theFace3, ::GEOM::GEOM_Object_ptr theFace4, ::GEOM::GEOM_Object_ptr theFace5, ::GEOM::GEOM_Object_ptr theFace6) = 0;
    virtual GEOM_Object_ptr MakeHexa2Faces(::GEOM::GEOM_Object_ptr theFace1, ::GEOM::GEOM_Object_ptr theFace2) = 0;
    virtual GEOM_Object_ptr GetPoint(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theX, ::CORBA::Double theY, ::CORBA::Double theZ, ::CORBA::Double theEpsilon) = 0;
    virtual GEOM_Object_ptr GetEdge(::GEOM::GEOM_Object_ptr theShape, ::GEOM::GEOM_Object_ptr thePoint1, ::GEOM::GEOM_Object_ptr thePoint2) = 0;
    virtual GEOM_Object_ptr GetEdgeNearPoint(::GEOM::GEOM_Object_ptr theShape, ::GEOM::GEOM_Object_ptr thePoint) = 0;
    virtual GEOM_Object_ptr GetFaceByPoints(::GEOM::GEOM_Object_ptr theShape, ::GEOM::GEOM_Object_ptr thePoint1, ::GEOM::GEOM_Object_ptr thePoint2, ::GEOM::GEOM_Object_ptr thePoint3, ::GEOM::GEOM_Object_ptr thePoint4) = 0;
    virtual GEOM_Object_ptr GetFaceByEdges(::GEOM::GEOM_Object_ptr theShape, ::GEOM::GEOM_Object_ptr theEdge1, ::GEOM::GEOM_Object_ptr theEdge2) = 0;
    virtual GEOM_Object_ptr GetOppositeFace(::GEOM::GEOM_Object_ptr theBlock, ::GEOM::GEOM_Object_ptr theFace) = 0;
    virtual GEOM_Object_ptr GetFaceNearPoint(::GEOM::GEOM_Object_ptr theShape, ::GEOM::GEOM_Object_ptr thePoint) = 0;
    virtual GEOM_Object_ptr GetFaceByNormale(::GEOM::GEOM_Object_ptr theBlock, ::GEOM::GEOM_Object_ptr theVector) = 0;
    virtual ::CORBA::Boolean IsCompoundOfBlocks(::GEOM::GEOM_Object_ptr theCompound, ::CORBA::Long theMinNbFaces, ::CORBA::Long theMaxNbFaces, ::CORBA::Long& theNbBlocks) = 0;
    virtual ::CORBA::Boolean CheckCompoundOfBlocks(::GEOM::GEOM_Object_ptr theCompound, ::GEOM::GEOM_IBlocksOperations::BCErrors_out theErrors) = 0;
    virtual char* PrintBCErrors(::GEOM::GEOM_Object_ptr theCompound, const ::GEOM::GEOM_IBlocksOperations::BCErrors& theErrors) = 0;
    virtual GEOM_Object_ptr RemoveExtraEdges(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long theOptimumNbFaces) = 0;
    virtual GEOM_Object_ptr CheckAndImprove(::GEOM::GEOM_Object_ptr theCompound) = 0;
    virtual ListOfGO* ExplodeCompoundOfBlocks(::GEOM::GEOM_Object_ptr theCompound, ::CORBA::Long theMinNbFaces, ::CORBA::Long theMaxNbFaces) = 0;
    virtual GEOM_Object_ptr GetBlockNearPoint(::GEOM::GEOM_Object_ptr theCompound, ::GEOM::GEOM_Object_ptr thePoint) = 0;
    virtual GEOM_Object_ptr GetBlockByParts(::GEOM::GEOM_Object_ptr theCompound, const ::GEOM::ListOfGO& theParts) = 0;
    virtual ListOfGO* GetBlocksByParts(::GEOM::GEOM_Object_ptr theCompound, const ::GEOM::ListOfGO& theParts) = 0;
    virtual GEOM_Object_ptr MakeMultiTransformation1D(::GEOM::GEOM_Object_ptr theBlock, ::CORBA::Long theDirFace1, ::CORBA::Long theDirFace2, ::CORBA::Long theNbTimes) = 0;
    virtual GEOM_Object_ptr MakeMultiTransformation2D(::GEOM::GEOM_Object_ptr theBlock, ::CORBA::Long theDirFace1U, ::CORBA::Long theDirFace2U, ::CORBA::Long theNbTimesU, ::CORBA::Long theDirFace1V, ::CORBA::Long theDirFace2V, ::CORBA::Long theNbTimesV) = 0;
    virtual ListOfGO* Propagate(::GEOM::GEOM_Object_ptr theShape) = 0;
    
  public:  // Really protected, workaround for xlC
    virtual _CORBA_Boolean _dispatch(omniCallHandle&);

  private:
    virtual void* _ptrToInterface(const char*);
    virtual const char* _mostDerivedRepoId();
    
  };


  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_GEOM_IBlocksOperations;

#ifndef __GEOM_mGEOM__IBooleanOperations__
#define __GEOM_mGEOM__IBooleanOperations__

  class GEOM_IBooleanOperations;
  class _objref_GEOM_IBooleanOperations;
  class _impl_GEOM_IBooleanOperations;
  
  typedef _objref_GEOM_IBooleanOperations* GEOM_IBooleanOperations_ptr;
  typedef GEOM_IBooleanOperations_ptr GEOM_IBooleanOperationsRef;

  class GEOM_IBooleanOperations_Helper {
  public:
    typedef GEOM_IBooleanOperations_ptr _ptr_type;

    static _ptr_type _nil();
    static _CORBA_Boolean is_nil(_ptr_type);
    static void release(_ptr_type);
    static void duplicate(_ptr_type);
    static void marshalObjRef(_ptr_type, cdrStream&);
    static _ptr_type unmarshalObjRef(cdrStream&);
  };

  typedef _CORBA_ObjRef_Var<_objref_GEOM_IBooleanOperations, GEOM_IBooleanOperations_Helper> GEOM_IBooleanOperations_var;
  typedef _CORBA_ObjRef_OUT_arg<_objref_GEOM_IBooleanOperations,GEOM_IBooleanOperations_Helper > GEOM_IBooleanOperations_out;

#endif

  // interface GEOM_IBooleanOperations
  class GEOM_IBooleanOperations {
  public:
    // Declarations for this interface type.
    typedef GEOM_IBooleanOperations_ptr _ptr_type;
    typedef GEOM_IBooleanOperations_var _var_type;

    static _ptr_type _duplicate(_ptr_type);
    static _ptr_type _narrow(::CORBA::Object_ptr);
    static _ptr_type _unchecked_narrow(::CORBA::Object_ptr);
    
    static _ptr_type _nil();

    static inline void _marshalObjRef(_ptr_type, cdrStream&);

    static inline _ptr_type _unmarshalObjRef(cdrStream& s) {
      omniObjRef* o = omniObjRef::_unMarshal(_PD_repoId,s);
      if (o)
        return (_ptr_type) o->_ptrToObjRef(_PD_repoId);
      else
        return _nil();
    }

    static _core_attr const char* _PD_repoId;

    // Other IDL defined within this scope.
    
  };

  class _objref_GEOM_IBooleanOperations :
    public virtual _objref_GEOM_IOperations
  {
  public:
    GEOM_Object_ptr MakeBoolean(::GEOM::GEOM_Object_ptr theShape1, ::GEOM::GEOM_Object_ptr theShape2, ::CORBA::Long theOperation);
    GEOM_Object_ptr MakePartition(const ::GEOM::ListOfGO& theShapes, const ::GEOM::ListOfGO& theTools, const ::GEOM::ListOfGO& theKeepInside, const ::GEOM::ListOfGO& theRemoveInside, ::CORBA::Short theLimit, ::CORBA::Boolean theRemoveWebs, const ::GEOM::ListOfLong& theMaterials, ::CORBA::Short theKeepNonlimitShapes);
    GEOM_Object_ptr MakePartitionNonSelfIntersectedShape(const ::GEOM::ListOfGO& theShapes, const ::GEOM::ListOfGO& theTools, const ::GEOM::ListOfGO& theKeepInside, const ::GEOM::ListOfGO& theRemoveInside, ::CORBA::Short theLimit, ::CORBA::Boolean theRemoveWebs, const ::GEOM::ListOfLong& theMaterials, ::CORBA::Short theKeepNonlimitShapes);
    GEOM_Object_ptr MakeHalfPartition(::GEOM::GEOM_Object_ptr theShape, ::GEOM::GEOM_Object_ptr thePlane);

    inline _objref_GEOM_IBooleanOperations()  { _PR_setobj(0); }  // nil
    _objref_GEOM_IBooleanOperations(omniIOR*, omniIdentity*);

  protected:
    virtual ~_objref_GEOM_IBooleanOperations();

    
  private:
    virtual void* _ptrToObjRef(const char*);

    _objref_GEOM_IBooleanOperations(const _objref_GEOM_IBooleanOperations&);
    _objref_GEOM_IBooleanOperations& operator = (const _objref_GEOM_IBooleanOperations&);
    // not implemented

    friend class GEOM_IBooleanOperations;
  };

  class _pof_GEOM_IBooleanOperations : public _OMNI_NS(proxyObjectFactory) {
  public:
    inline _pof_GEOM_IBooleanOperations() : _OMNI_NS(proxyObjectFactory)(GEOM_IBooleanOperations::_PD_repoId) {}
    virtual ~_pof_GEOM_IBooleanOperations();

    virtual omniObjRef* newObjRef(omniIOR*,omniIdentity*);
    virtual _CORBA_Boolean is_a(const char*) const;
  };

  class _impl_GEOM_IBooleanOperations :
    public virtual _impl_GEOM_IOperations
  {
  public:
    virtual ~_impl_GEOM_IBooleanOperations();

    virtual GEOM_Object_ptr MakeBoolean(::GEOM::GEOM_Object_ptr theShape1, ::GEOM::GEOM_Object_ptr theShape2, ::CORBA::Long theOperation) = 0;
    virtual GEOM_Object_ptr MakePartition(const ::GEOM::ListOfGO& theShapes, const ::GEOM::ListOfGO& theTools, const ::GEOM::ListOfGO& theKeepInside, const ::GEOM::ListOfGO& theRemoveInside, ::CORBA::Short theLimit, ::CORBA::Boolean theRemoveWebs, const ::GEOM::ListOfLong& theMaterials, ::CORBA::Short theKeepNonlimitShapes) = 0;
    virtual GEOM_Object_ptr MakePartitionNonSelfIntersectedShape(const ::GEOM::ListOfGO& theShapes, const ::GEOM::ListOfGO& theTools, const ::GEOM::ListOfGO& theKeepInside, const ::GEOM::ListOfGO& theRemoveInside, ::CORBA::Short theLimit, ::CORBA::Boolean theRemoveWebs, const ::GEOM::ListOfLong& theMaterials, ::CORBA::Short theKeepNonlimitShapes) = 0;
    virtual GEOM_Object_ptr MakeHalfPartition(::GEOM::GEOM_Object_ptr theShape, ::GEOM::GEOM_Object_ptr thePlane) = 0;
    
  public:  // Really protected, workaround for xlC
    virtual _CORBA_Boolean _dispatch(omniCallHandle&);

  private:
    virtual void* _ptrToInterface(const char*);
    virtual const char* _mostDerivedRepoId();
    
  };


  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_GEOM_IBooleanOperations;

#ifndef __GEOM_mGEOM__ICurvesOperations__
#define __GEOM_mGEOM__ICurvesOperations__

  class GEOM_ICurvesOperations;
  class _objref_GEOM_ICurvesOperations;
  class _impl_GEOM_ICurvesOperations;
  
  typedef _objref_GEOM_ICurvesOperations* GEOM_ICurvesOperations_ptr;
  typedef GEOM_ICurvesOperations_ptr GEOM_ICurvesOperationsRef;

  class GEOM_ICurvesOperations_Helper {
  public:
    typedef GEOM_ICurvesOperations_ptr _ptr_type;

    static _ptr_type _nil();
    static _CORBA_Boolean is_nil(_ptr_type);
    static void release(_ptr_type);
    static void duplicate(_ptr_type);
    static void marshalObjRef(_ptr_type, cdrStream&);
    static _ptr_type unmarshalObjRef(cdrStream&);
  };

  typedef _CORBA_ObjRef_Var<_objref_GEOM_ICurvesOperations, GEOM_ICurvesOperations_Helper> GEOM_ICurvesOperations_var;
  typedef _CORBA_ObjRef_OUT_arg<_objref_GEOM_ICurvesOperations,GEOM_ICurvesOperations_Helper > GEOM_ICurvesOperations_out;

#endif

  // interface GEOM_ICurvesOperations
  class GEOM_ICurvesOperations {
  public:
    // Declarations for this interface type.
    typedef GEOM_ICurvesOperations_ptr _ptr_type;
    typedef GEOM_ICurvesOperations_var _var_type;

    static _ptr_type _duplicate(_ptr_type);
    static _ptr_type _narrow(::CORBA::Object_ptr);
    static _ptr_type _unchecked_narrow(::CORBA::Object_ptr);
    
    static _ptr_type _nil();

    static inline void _marshalObjRef(_ptr_type, cdrStream&);

    static inline _ptr_type _unmarshalObjRef(cdrStream& s) {
      omniObjRef* o = omniObjRef::_unMarshal(_PD_repoId,s);
      if (o)
        return (_ptr_type) o->_ptrToObjRef(_PD_repoId);
      else
        return _nil();
    }

    static _core_attr const char* _PD_repoId;

    // Other IDL defined within this scope.
    
  };

  class _objref_GEOM_ICurvesOperations :
    public virtual _objref_GEOM_IOperations
  {
  public:
    GEOM_Object_ptr MakeCirclePntVecR(::GEOM::GEOM_Object_ptr thePnt, ::GEOM::GEOM_Object_ptr theVec, ::CORBA::Double theR);
    GEOM_Object_ptr MakeCircleThreePnt(::GEOM::GEOM_Object_ptr thePnt1, ::GEOM::GEOM_Object_ptr thePnt2, ::GEOM::GEOM_Object_ptr thePnt3);
    GEOM_Object_ptr MakeCircleCenter2Pnt(::GEOM::GEOM_Object_ptr thePnt1, ::GEOM::GEOM_Object_ptr thePnt2, ::GEOM::GEOM_Object_ptr thePnt3);
    GEOM_Object_ptr MakeEllipse(::GEOM::GEOM_Object_ptr thePnt, ::GEOM::GEOM_Object_ptr theVec, ::CORBA::Double theRMajor, ::CORBA::Double theRMinor);
    GEOM_Object_ptr MakeEllipseVec(::GEOM::GEOM_Object_ptr thePnt, ::GEOM::GEOM_Object_ptr theVec, ::CORBA::Double theRMajor, ::CORBA::Double theRMinor, ::GEOM::GEOM_Object_ptr theVecMaj);
    GEOM_Object_ptr MakeArc(::GEOM::GEOM_Object_ptr thePnt1, ::GEOM::GEOM_Object_ptr thePnt2, ::GEOM::GEOM_Object_ptr thePnt3);
    GEOM_Object_ptr MakeArcCenter(::GEOM::GEOM_Object_ptr theCenter, ::GEOM::GEOM_Object_ptr thePnt1, ::GEOM::GEOM_Object_ptr thePnt2, ::CORBA::Boolean theSense);
    GEOM_Object_ptr MakeArcOfEllipse(::GEOM::GEOM_Object_ptr theCenter, ::GEOM::GEOM_Object_ptr thePnt1, ::GEOM::GEOM_Object_ptr thePnt2);
    GEOM_Object_ptr MakePolyline(const ::GEOM::ListOfGO& thePoints);
    GEOM_Object_ptr MakeSplineBezier(const ::GEOM::ListOfGO& thePoints);
    GEOM_Object_ptr MakeSplineInterpolation(const ::GEOM::ListOfGO& thePoints, ::CORBA::Boolean theIsClosed);
    GEOM_Object_ptr MakeSketcher(const char* theCommand, const ::GEOM::ListOfDouble& theWorkingPlane);
    GEOM_Object_ptr Make3DSketcher(const ::GEOM::ListOfDouble& theCoordinates);
    GEOM_Object_ptr MakeSketcherOnPlane(const char* theCommand, ::GEOM::GEOM_Object_ptr theWorkingPlane);

    inline _objref_GEOM_ICurvesOperations()  { _PR_setobj(0); }  // nil
    _objref_GEOM_ICurvesOperations(omniIOR*, omniIdentity*);

  protected:
    virtual ~_objref_GEOM_ICurvesOperations();

    
  private:
    virtual void* _ptrToObjRef(const char*);

    _objref_GEOM_ICurvesOperations(const _objref_GEOM_ICurvesOperations&);
    _objref_GEOM_ICurvesOperations& operator = (const _objref_GEOM_ICurvesOperations&);
    // not implemented

    friend class GEOM_ICurvesOperations;
  };

  class _pof_GEOM_ICurvesOperations : public _OMNI_NS(proxyObjectFactory) {
  public:
    inline _pof_GEOM_ICurvesOperations() : _OMNI_NS(proxyObjectFactory)(GEOM_ICurvesOperations::_PD_repoId) {}
    virtual ~_pof_GEOM_ICurvesOperations();

    virtual omniObjRef* newObjRef(omniIOR*,omniIdentity*);
    virtual _CORBA_Boolean is_a(const char*) const;
  };

  class _impl_GEOM_ICurvesOperations :
    public virtual _impl_GEOM_IOperations
  {
  public:
    virtual ~_impl_GEOM_ICurvesOperations();

    virtual GEOM_Object_ptr MakeCirclePntVecR(::GEOM::GEOM_Object_ptr thePnt, ::GEOM::GEOM_Object_ptr theVec, ::CORBA::Double theR) = 0;
    virtual GEOM_Object_ptr MakeCircleThreePnt(::GEOM::GEOM_Object_ptr thePnt1, ::GEOM::GEOM_Object_ptr thePnt2, ::GEOM::GEOM_Object_ptr thePnt3) = 0;
    virtual GEOM_Object_ptr MakeCircleCenter2Pnt(::GEOM::GEOM_Object_ptr thePnt1, ::GEOM::GEOM_Object_ptr thePnt2, ::GEOM::GEOM_Object_ptr thePnt3) = 0;
    virtual GEOM_Object_ptr MakeEllipse(::GEOM::GEOM_Object_ptr thePnt, ::GEOM::GEOM_Object_ptr theVec, ::CORBA::Double theRMajor, ::CORBA::Double theRMinor) = 0;
    virtual GEOM_Object_ptr MakeEllipseVec(::GEOM::GEOM_Object_ptr thePnt, ::GEOM::GEOM_Object_ptr theVec, ::CORBA::Double theRMajor, ::CORBA::Double theRMinor, ::GEOM::GEOM_Object_ptr theVecMaj) = 0;
    virtual GEOM_Object_ptr MakeArc(::GEOM::GEOM_Object_ptr thePnt1, ::GEOM::GEOM_Object_ptr thePnt2, ::GEOM::GEOM_Object_ptr thePnt3) = 0;
    virtual GEOM_Object_ptr MakeArcCenter(::GEOM::GEOM_Object_ptr theCenter, ::GEOM::GEOM_Object_ptr thePnt1, ::GEOM::GEOM_Object_ptr thePnt2, ::CORBA::Boolean theSense) = 0;
    virtual GEOM_Object_ptr MakeArcOfEllipse(::GEOM::GEOM_Object_ptr theCenter, ::GEOM::GEOM_Object_ptr thePnt1, ::GEOM::GEOM_Object_ptr thePnt2) = 0;
    virtual GEOM_Object_ptr MakePolyline(const ::GEOM::ListOfGO& thePoints) = 0;
    virtual GEOM_Object_ptr MakeSplineBezier(const ::GEOM::ListOfGO& thePoints) = 0;
    virtual GEOM_Object_ptr MakeSplineInterpolation(const ::GEOM::ListOfGO& thePoints, ::CORBA::Boolean theIsClosed) = 0;
    virtual GEOM_Object_ptr MakeSketcher(const char* theCommand, const ::GEOM::ListOfDouble& theWorkingPlane) = 0;
    virtual GEOM_Object_ptr Make3DSketcher(const ::GEOM::ListOfDouble& theCoordinates) = 0;
    virtual GEOM_Object_ptr MakeSketcherOnPlane(const char* theCommand, ::GEOM::GEOM_Object_ptr theWorkingPlane) = 0;
    
  public:  // Really protected, workaround for xlC
    virtual _CORBA_Boolean _dispatch(omniCallHandle&);

  private:
    virtual void* _ptrToInterface(const char*);
    virtual const char* _mostDerivedRepoId();
    
  };


  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_GEOM_ICurvesOperations;

#ifndef __GEOM_mGEOM__ILocalOperations__
#define __GEOM_mGEOM__ILocalOperations__

  class GEOM_ILocalOperations;
  class _objref_GEOM_ILocalOperations;
  class _impl_GEOM_ILocalOperations;
  
  typedef _objref_GEOM_ILocalOperations* GEOM_ILocalOperations_ptr;
  typedef GEOM_ILocalOperations_ptr GEOM_ILocalOperationsRef;

  class GEOM_ILocalOperations_Helper {
  public:
    typedef GEOM_ILocalOperations_ptr _ptr_type;

    static _ptr_type _nil();
    static _CORBA_Boolean is_nil(_ptr_type);
    static void release(_ptr_type);
    static void duplicate(_ptr_type);
    static void marshalObjRef(_ptr_type, cdrStream&);
    static _ptr_type unmarshalObjRef(cdrStream&);
  };

  typedef _CORBA_ObjRef_Var<_objref_GEOM_ILocalOperations, GEOM_ILocalOperations_Helper> GEOM_ILocalOperations_var;
  typedef _CORBA_ObjRef_OUT_arg<_objref_GEOM_ILocalOperations,GEOM_ILocalOperations_Helper > GEOM_ILocalOperations_out;

#endif

  // interface GEOM_ILocalOperations
  class GEOM_ILocalOperations {
  public:
    // Declarations for this interface type.
    typedef GEOM_ILocalOperations_ptr _ptr_type;
    typedef GEOM_ILocalOperations_var _var_type;

    static _ptr_type _duplicate(_ptr_type);
    static _ptr_type _narrow(::CORBA::Object_ptr);
    static _ptr_type _unchecked_narrow(::CORBA::Object_ptr);
    
    static _ptr_type _nil();

    static inline void _marshalObjRef(_ptr_type, cdrStream&);

    static inline _ptr_type _unmarshalObjRef(cdrStream& s) {
      omniObjRef* o = omniObjRef::_unMarshal(_PD_repoId,s);
      if (o)
        return (_ptr_type) o->_ptrToObjRef(_PD_repoId);
      else
        return _nil();
    }

    static _core_attr const char* _PD_repoId;

    // Other IDL defined within this scope.
    
  };

  class _objref_GEOM_ILocalOperations :
    public virtual _objref_GEOM_IOperations
  {
  public:
    GEOM_Object_ptr MakeFilletAll(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theR);
    GEOM_Object_ptr MakeFilletEdges(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theR, const ::GEOM::ListOfLong& theEdges);
    GEOM_Object_ptr MakeFilletEdgesR1R2(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theR1, ::CORBA::Double theR2, const ::GEOM::ListOfLong& theEdges);
    GEOM_Object_ptr MakeFilletFaces(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theR, const ::GEOM::ListOfLong& theFaces);
    GEOM_Object_ptr MakeFilletFacesR1R2(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theR1, ::CORBA::Double theR2, const ::GEOM::ListOfLong& theFaces);
    GEOM_Object_ptr MakeFillet2D(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theR, const ::GEOM::ListOfLong& theVertexes);
    GEOM_Object_ptr MakeFillet1D(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theR, const ::GEOM::ListOfLong& theVertexes);
    GEOM_Object_ptr MakeChamferAll(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theD);
    GEOM_Object_ptr MakeChamferEdge(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theD1, ::CORBA::Double theD2, ::CORBA::Long theFace1, ::CORBA::Long theFace2);
    GEOM_Object_ptr MakeChamferEdgeAD(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theD, ::CORBA::Double theAngle, ::CORBA::Long theFace1, ::CORBA::Long theFace2);
    GEOM_Object_ptr MakeChamferFaces(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theD1, ::CORBA::Double theD2, const ::GEOM::ListOfLong& theFaces);
    GEOM_Object_ptr MakeChamferFacesAD(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theD, ::CORBA::Double theAngle, const ::GEOM::ListOfLong& theFaces);
    GEOM_Object_ptr MakeChamferEdges(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theD1, ::CORBA::Double theD2, const ::GEOM::ListOfLong& theEdges);
    GEOM_Object_ptr MakeChamferEdgesAD(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theD, ::CORBA::Double theAngle, const ::GEOM::ListOfLong& theEdges);
    GEOM_Object_ptr MakeArchimede(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theWeight, ::CORBA::Double theWaterDensity, ::CORBA::Double theMeshDeflection);
    ::CORBA::Long GetSubShapeIndex(::GEOM::GEOM_Object_ptr theShape, ::GEOM::GEOM_Object_ptr theSubShape);

    inline _objref_GEOM_ILocalOperations()  { _PR_setobj(0); }  // nil
    _objref_GEOM_ILocalOperations(omniIOR*, omniIdentity*);

  protected:
    virtual ~_objref_GEOM_ILocalOperations();

    
  private:
    virtual void* _ptrToObjRef(const char*);

    _objref_GEOM_ILocalOperations(const _objref_GEOM_ILocalOperations&);
    _objref_GEOM_ILocalOperations& operator = (const _objref_GEOM_ILocalOperations&);
    // not implemented

    friend class GEOM_ILocalOperations;
  };

  class _pof_GEOM_ILocalOperations : public _OMNI_NS(proxyObjectFactory) {
  public:
    inline _pof_GEOM_ILocalOperations() : _OMNI_NS(proxyObjectFactory)(GEOM_ILocalOperations::_PD_repoId) {}
    virtual ~_pof_GEOM_ILocalOperations();

    virtual omniObjRef* newObjRef(omniIOR*,omniIdentity*);
    virtual _CORBA_Boolean is_a(const char*) const;
  };

  class _impl_GEOM_ILocalOperations :
    public virtual _impl_GEOM_IOperations
  {
  public:
    virtual ~_impl_GEOM_ILocalOperations();

    virtual GEOM_Object_ptr MakeFilletAll(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theR) = 0;
    virtual GEOM_Object_ptr MakeFilletEdges(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theR, const ::GEOM::ListOfLong& theEdges) = 0;
    virtual GEOM_Object_ptr MakeFilletEdgesR1R2(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theR1, ::CORBA::Double theR2, const ::GEOM::ListOfLong& theEdges) = 0;
    virtual GEOM_Object_ptr MakeFilletFaces(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theR, const ::GEOM::ListOfLong& theFaces) = 0;
    virtual GEOM_Object_ptr MakeFilletFacesR1R2(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theR1, ::CORBA::Double theR2, const ::GEOM::ListOfLong& theFaces) = 0;
    virtual GEOM_Object_ptr MakeFillet2D(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theR, const ::GEOM::ListOfLong& theVertexes) = 0;
    virtual GEOM_Object_ptr MakeFillet1D(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theR, const ::GEOM::ListOfLong& theVertexes) = 0;
    virtual GEOM_Object_ptr MakeChamferAll(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theD) = 0;
    virtual GEOM_Object_ptr MakeChamferEdge(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theD1, ::CORBA::Double theD2, ::CORBA::Long theFace1, ::CORBA::Long theFace2) = 0;
    virtual GEOM_Object_ptr MakeChamferEdgeAD(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theD, ::CORBA::Double theAngle, ::CORBA::Long theFace1, ::CORBA::Long theFace2) = 0;
    virtual GEOM_Object_ptr MakeChamferFaces(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theD1, ::CORBA::Double theD2, const ::GEOM::ListOfLong& theFaces) = 0;
    virtual GEOM_Object_ptr MakeChamferFacesAD(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theD, ::CORBA::Double theAngle, const ::GEOM::ListOfLong& theFaces) = 0;
    virtual GEOM_Object_ptr MakeChamferEdges(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theD1, ::CORBA::Double theD2, const ::GEOM::ListOfLong& theEdges) = 0;
    virtual GEOM_Object_ptr MakeChamferEdgesAD(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theD, ::CORBA::Double theAngle, const ::GEOM::ListOfLong& theEdges) = 0;
    virtual GEOM_Object_ptr MakeArchimede(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theWeight, ::CORBA::Double theWaterDensity, ::CORBA::Double theMeshDeflection) = 0;
    virtual ::CORBA::Long GetSubShapeIndex(::GEOM::GEOM_Object_ptr theShape, ::GEOM::GEOM_Object_ptr theSubShape) = 0;
    
  public:  // Really protected, workaround for xlC
    virtual _CORBA_Boolean _dispatch(omniCallHandle&);

  private:
    virtual void* _ptrToInterface(const char*);
    virtual const char* _mostDerivedRepoId();
    
  };


  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_GEOM_ILocalOperations;

#ifndef __GEOM_mGEOM__IHealingOperations__
#define __GEOM_mGEOM__IHealingOperations__

  class GEOM_IHealingOperations;
  class _objref_GEOM_IHealingOperations;
  class _impl_GEOM_IHealingOperations;
  
  typedef _objref_GEOM_IHealingOperations* GEOM_IHealingOperations_ptr;
  typedef GEOM_IHealingOperations_ptr GEOM_IHealingOperationsRef;

  class GEOM_IHealingOperations_Helper {
  public:
    typedef GEOM_IHealingOperations_ptr _ptr_type;

    static _ptr_type _nil();
    static _CORBA_Boolean is_nil(_ptr_type);
    static void release(_ptr_type);
    static void duplicate(_ptr_type);
    static void marshalObjRef(_ptr_type, cdrStream&);
    static _ptr_type unmarshalObjRef(cdrStream&);
  };

  typedef _CORBA_ObjRef_Var<_objref_GEOM_IHealingOperations, GEOM_IHealingOperations_Helper> GEOM_IHealingOperations_var;
  typedef _CORBA_ObjRef_OUT_arg<_objref_GEOM_IHealingOperations,GEOM_IHealingOperations_Helper > GEOM_IHealingOperations_out;

#endif

  // interface GEOM_IHealingOperations
  class GEOM_IHealingOperations {
  public:
    // Declarations for this interface type.
    typedef GEOM_IHealingOperations_ptr _ptr_type;
    typedef GEOM_IHealingOperations_var _var_type;

    static _ptr_type _duplicate(_ptr_type);
    static _ptr_type _narrow(::CORBA::Object_ptr);
    static _ptr_type _unchecked_narrow(::CORBA::Object_ptr);
    
    static _ptr_type _nil();

    static inline void _marshalObjRef(_ptr_type, cdrStream&);

    static inline _ptr_type _unmarshalObjRef(cdrStream& s) {
      omniObjRef* o = omniObjRef::_unMarshal(_PD_repoId,s);
      if (o)
        return (_ptr_type) o->_ptrToObjRef(_PD_repoId);
      else
        return _nil();
    }

    static _core_attr const char* _PD_repoId;

    // Other IDL defined within this scope.
    
  };

  class _objref_GEOM_IHealingOperations :
    public virtual _objref_GEOM_IOperations
  {
  public:
    GEOM_Object_ptr ProcessShape(::GEOM::GEOM_Object_ptr theShapes, const ::GEOM::string_array& theOperators, const ::GEOM::string_array& theParameters, const ::GEOM::string_array& theValues);
    void GetShapeProcessParameters(::GEOM::string_array_out theOperators, ::GEOM::string_array_out theParameters, ::GEOM::string_array_out theValues);
    void GetOperatorParameters(const char* theOperator, ::GEOM::string_array_out theParameters, ::GEOM::string_array_out theValues);
    GEOM_Object_ptr SuppressFaces(::GEOM::GEOM_Object_ptr theObject, const ::GEOM::short_array& theFaces);
    GEOM_Object_ptr CloseContour(::GEOM::GEOM_Object_ptr theObject, const ::GEOM::short_array& theWires, ::CORBA::Boolean isCommonVertex);
    GEOM_Object_ptr RemoveIntWires(::GEOM::GEOM_Object_ptr theObject, const ::GEOM::short_array& theWires);
    GEOM_Object_ptr FillHoles(::GEOM::GEOM_Object_ptr theObject, const ::GEOM::short_array& theWires);
    GEOM_Object_ptr Sew(::GEOM::GEOM_Object_ptr theObject, ::CORBA::Double theTolerance);
    GEOM_Object_ptr DivideEdge(::GEOM::GEOM_Object_ptr theObject, ::CORBA::Short theEdgeIndex, ::CORBA::Double theValue, ::CORBA::Boolean isByParameter);
    ::CORBA::Boolean GetFreeBoundary(::GEOM::GEOM_Object_ptr theObject, ::GEOM::ListOfGO_out theClosedWires, ::GEOM::ListOfGO_out theOpenWires);
    GEOM_Object_ptr ChangeOrientation(::GEOM::GEOM_Object_ptr theObject);
    GEOM_Object_ptr ChangeOrientationCopy(::GEOM::GEOM_Object_ptr theObject);

    inline _objref_GEOM_IHealingOperations()  { _PR_setobj(0); }  // nil
    _objref_GEOM_IHealingOperations(omniIOR*, omniIdentity*);

  protected:
    virtual ~_objref_GEOM_IHealingOperations();

    
  private:
    virtual void* _ptrToObjRef(const char*);

    _objref_GEOM_IHealingOperations(const _objref_GEOM_IHealingOperations&);
    _objref_GEOM_IHealingOperations& operator = (const _objref_GEOM_IHealingOperations&);
    // not implemented

    friend class GEOM_IHealingOperations;
  };

  class _pof_GEOM_IHealingOperations : public _OMNI_NS(proxyObjectFactory) {
  public:
    inline _pof_GEOM_IHealingOperations() : _OMNI_NS(proxyObjectFactory)(GEOM_IHealingOperations::_PD_repoId) {}
    virtual ~_pof_GEOM_IHealingOperations();

    virtual omniObjRef* newObjRef(omniIOR*,omniIdentity*);
    virtual _CORBA_Boolean is_a(const char*) const;
  };

  class _impl_GEOM_IHealingOperations :
    public virtual _impl_GEOM_IOperations
  {
  public:
    virtual ~_impl_GEOM_IHealingOperations();

    virtual GEOM_Object_ptr ProcessShape(::GEOM::GEOM_Object_ptr theShapes, const ::GEOM::string_array& theOperators, const ::GEOM::string_array& theParameters, const ::GEOM::string_array& theValues) = 0;
    virtual void GetShapeProcessParameters(::GEOM::string_array_out theOperators, ::GEOM::string_array_out theParameters, ::GEOM::string_array_out theValues) = 0;
    virtual void GetOperatorParameters(const char* theOperator, ::GEOM::string_array_out theParameters, ::GEOM::string_array_out theValues) = 0;
    virtual GEOM_Object_ptr SuppressFaces(::GEOM::GEOM_Object_ptr theObject, const ::GEOM::short_array& theFaces) = 0;
    virtual GEOM_Object_ptr CloseContour(::GEOM::GEOM_Object_ptr theObject, const ::GEOM::short_array& theWires, ::CORBA::Boolean isCommonVertex) = 0;
    virtual GEOM_Object_ptr RemoveIntWires(::GEOM::GEOM_Object_ptr theObject, const ::GEOM::short_array& theWires) = 0;
    virtual GEOM_Object_ptr FillHoles(::GEOM::GEOM_Object_ptr theObject, const ::GEOM::short_array& theWires) = 0;
    virtual GEOM_Object_ptr Sew(::GEOM::GEOM_Object_ptr theObject, ::CORBA::Double theTolerance) = 0;
    virtual GEOM_Object_ptr DivideEdge(::GEOM::GEOM_Object_ptr theObject, ::CORBA::Short theEdgeIndex, ::CORBA::Double theValue, ::CORBA::Boolean isByParameter) = 0;
    virtual ::CORBA::Boolean GetFreeBoundary(::GEOM::GEOM_Object_ptr theObject, ::GEOM::ListOfGO_out theClosedWires, ::GEOM::ListOfGO_out theOpenWires) = 0;
    virtual GEOM_Object_ptr ChangeOrientation(::GEOM::GEOM_Object_ptr theObject) = 0;
    virtual GEOM_Object_ptr ChangeOrientationCopy(::GEOM::GEOM_Object_ptr theObject) = 0;
    
  public:  // Really protected, workaround for xlC
    virtual _CORBA_Boolean _dispatch(omniCallHandle&);

  private:
    virtual void* _ptrToInterface(const char*);
    virtual const char* _mostDerivedRepoId();
    
  };


  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_GEOM_IHealingOperations;

#ifndef __GEOM_mGEOM__IInsertOperations__
#define __GEOM_mGEOM__IInsertOperations__

  class GEOM_IInsertOperations;
  class _objref_GEOM_IInsertOperations;
  class _impl_GEOM_IInsertOperations;
  
  typedef _objref_GEOM_IInsertOperations* GEOM_IInsertOperations_ptr;
  typedef GEOM_IInsertOperations_ptr GEOM_IInsertOperationsRef;

  class GEOM_IInsertOperations_Helper {
  public:
    typedef GEOM_IInsertOperations_ptr _ptr_type;

    static _ptr_type _nil();
    static _CORBA_Boolean is_nil(_ptr_type);
    static void release(_ptr_type);
    static void duplicate(_ptr_type);
    static void marshalObjRef(_ptr_type, cdrStream&);
    static _ptr_type unmarshalObjRef(cdrStream&);
  };

  typedef _CORBA_ObjRef_Var<_objref_GEOM_IInsertOperations, GEOM_IInsertOperations_Helper> GEOM_IInsertOperations_var;
  typedef _CORBA_ObjRef_OUT_arg<_objref_GEOM_IInsertOperations,GEOM_IInsertOperations_Helper > GEOM_IInsertOperations_out;

#endif

  // interface GEOM_IInsertOperations
  class GEOM_IInsertOperations {
  public:
    // Declarations for this interface type.
    typedef GEOM_IInsertOperations_ptr _ptr_type;
    typedef GEOM_IInsertOperations_var _var_type;

    static _ptr_type _duplicate(_ptr_type);
    static _ptr_type _narrow(::CORBA::Object_ptr);
    static _ptr_type _unchecked_narrow(::CORBA::Object_ptr);
    
    static _ptr_type _nil();

    static inline void _marshalObjRef(_ptr_type, cdrStream&);

    static inline _ptr_type _unmarshalObjRef(cdrStream& s) {
      omniObjRef* o = omniObjRef::_unMarshal(_PD_repoId,s);
      if (o)
        return (_ptr_type) o->_ptrToObjRef(_PD_repoId);
      else
        return _nil();
    }

    static _core_attr const char* _PD_repoId;

    // Other IDL defined within this scope.
    
  };

  class _objref_GEOM_IInsertOperations :
    public virtual _objref_GEOM_IOperations
  {
  public:
    GEOM_Object_ptr MakeCopy(::GEOM::GEOM_Object_ptr theOriginal);
    void Export(::GEOM::GEOM_Object_ptr theObject, const char* theFileName, const char* theFormatName);
    GEOM_Object_ptr Import(const char* theFileName, const char* theFormatName);
    void ImportTranslators(::GEOM::string_array_out theFormats, ::GEOM::string_array_out thePatterns);
    void ExportTranslators(::GEOM::string_array_out theFormats, ::GEOM::string_array_out thePatterns);
    ::CORBA::Long LoadTexture(const char* theTextureFile);
    ::CORBA::Long AddTexture(::CORBA::Long theWidth, ::CORBA::Long theHeight, const ::SALOMEDS::TMPFile& theTexture);
    SALOMEDS::TMPFile* GetTexture(::CORBA::Long theID, ::CORBA::Long& theWidth, ::CORBA::Long& theHeight);
    ListOfLong* GetAllTextures();

    inline _objref_GEOM_IInsertOperations()  { _PR_setobj(0); }  // nil
    _objref_GEOM_IInsertOperations(omniIOR*, omniIdentity*);

  protected:
    virtual ~_objref_GEOM_IInsertOperations();

    
  private:
    virtual void* _ptrToObjRef(const char*);

    _objref_GEOM_IInsertOperations(const _objref_GEOM_IInsertOperations&);
    _objref_GEOM_IInsertOperations& operator = (const _objref_GEOM_IInsertOperations&);
    // not implemented

    friend class GEOM_IInsertOperations;
  };

  class _pof_GEOM_IInsertOperations : public _OMNI_NS(proxyObjectFactory) {
  public:
    inline _pof_GEOM_IInsertOperations() : _OMNI_NS(proxyObjectFactory)(GEOM_IInsertOperations::_PD_repoId) {}
    virtual ~_pof_GEOM_IInsertOperations();

    virtual omniObjRef* newObjRef(omniIOR*,omniIdentity*);
    virtual _CORBA_Boolean is_a(const char*) const;
  };

  class _impl_GEOM_IInsertOperations :
    public virtual _impl_GEOM_IOperations
  {
  public:
    virtual ~_impl_GEOM_IInsertOperations();

    virtual GEOM_Object_ptr MakeCopy(::GEOM::GEOM_Object_ptr theOriginal) = 0;
    virtual void Export(::GEOM::GEOM_Object_ptr theObject, const char* theFileName, const char* theFormatName) = 0;
    virtual GEOM_Object_ptr Import(const char* theFileName, const char* theFormatName) = 0;
    virtual void ImportTranslators(::GEOM::string_array_out theFormats, ::GEOM::string_array_out thePatterns) = 0;
    virtual void ExportTranslators(::GEOM::string_array_out theFormats, ::GEOM::string_array_out thePatterns) = 0;
    virtual ::CORBA::Long LoadTexture(const char* theTextureFile) = 0;
    virtual ::CORBA::Long AddTexture(::CORBA::Long theWidth, ::CORBA::Long theHeight, const ::SALOMEDS::TMPFile& theTexture) = 0;
    virtual SALOMEDS::TMPFile* GetTexture(::CORBA::Long theID, ::CORBA::Long& theWidth, ::CORBA::Long& theHeight) = 0;
    virtual ListOfLong* GetAllTextures() = 0;
    
  public:  // Really protected, workaround for xlC
    virtual _CORBA_Boolean _dispatch(omniCallHandle&);

  private:
    virtual void* _ptrToInterface(const char*);
    virtual const char* _mostDerivedRepoId();
    
  };


  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_GEOM_IInsertOperations;

#ifndef __GEOM_mGEOM__IKindOfShape__
#define __GEOM_mGEOM__IKindOfShape__

  class GEOM_IKindOfShape;
  class _objref_GEOM_IKindOfShape;
  class _impl_GEOM_IKindOfShape;
  
  typedef _objref_GEOM_IKindOfShape* GEOM_IKindOfShape_ptr;
  typedef GEOM_IKindOfShape_ptr GEOM_IKindOfShapeRef;

  class GEOM_IKindOfShape_Helper {
  public:
    typedef GEOM_IKindOfShape_ptr _ptr_type;

    static _ptr_type _nil();
    static _CORBA_Boolean is_nil(_ptr_type);
    static void release(_ptr_type);
    static void duplicate(_ptr_type);
    static void marshalObjRef(_ptr_type, cdrStream&);
    static _ptr_type unmarshalObjRef(cdrStream&);
  };

  typedef _CORBA_ObjRef_Var<_objref_GEOM_IKindOfShape, GEOM_IKindOfShape_Helper> GEOM_IKindOfShape_var;
  typedef _CORBA_ObjRef_OUT_arg<_objref_GEOM_IKindOfShape,GEOM_IKindOfShape_Helper > GEOM_IKindOfShape_out;

#endif

  // interface GEOM_IKindOfShape
  class GEOM_IKindOfShape {
  public:
    // Declarations for this interface type.
    typedef GEOM_IKindOfShape_ptr _ptr_type;
    typedef GEOM_IKindOfShape_var _var_type;

    static _ptr_type _duplicate(_ptr_type);
    static _ptr_type _narrow(::CORBA::Object_ptr);
    static _ptr_type _unchecked_narrow(::CORBA::Object_ptr);
    
    static _ptr_type _nil();

    static inline void _marshalObjRef(_ptr_type, cdrStream&);

    static inline _ptr_type _unmarshalObjRef(cdrStream& s) {
      omniObjRef* o = omniObjRef::_unMarshal(_PD_repoId,s);
      if (o)
        return (_ptr_type) o->_ptrToObjRef(_PD_repoId);
      else
        return _nil();
    }

    static _core_attr const char* _PD_repoId;

    // Other IDL defined within this scope.
    enum shape_kind { NO_SHAPE, COMPOUND, COMPSOLID, SHELL, WIRE, SPHERE, CYLINDER, BOX, ROTATED_BOX, TORUS, CONE, POLYHEDRON, SOLID, SPHERE2D, CYLINDER2D, TORUS2D, CONE2D, DISK_CIRCLE, DISK_ELLIPSE, POLYGON, PLANE, PLANAR, FACE, CIRCLE, ARC_CIRCLE, ELLIPSE, ARC_ELLIPSE, LINE, SEGMENT, EDGE, VERTEX, ADVANCED /*, __max_shape_kind=0xffffffff */ };
    typedef shape_kind& shape_kind_out;

    static _dyn_attr const ::CORBA::TypeCode_ptr _tc_shape_kind;

  
  };

  class _objref_GEOM_IKindOfShape :
    public virtual ::CORBA::Object,
    public virtual omniObjRef
  {
  public:
    

    inline _objref_GEOM_IKindOfShape()  { _PR_setobj(0); }  // nil
    _objref_GEOM_IKindOfShape(omniIOR*, omniIdentity*);

  protected:
    virtual ~_objref_GEOM_IKindOfShape();

    
  private:
    virtual void* _ptrToObjRef(const char*);

    _objref_GEOM_IKindOfShape(const _objref_GEOM_IKindOfShape&);
    _objref_GEOM_IKindOfShape& operator = (const _objref_GEOM_IKindOfShape&);
    // not implemented

    friend class GEOM_IKindOfShape;
  };

  class _pof_GEOM_IKindOfShape : public _OMNI_NS(proxyObjectFactory) {
  public:
    inline _pof_GEOM_IKindOfShape() : _OMNI_NS(proxyObjectFactory)(GEOM_IKindOfShape::_PD_repoId) {}
    virtual ~_pof_GEOM_IKindOfShape();

    virtual omniObjRef* newObjRef(omniIOR*,omniIdentity*);
    virtual _CORBA_Boolean is_a(const char*) const;
  };

  class _impl_GEOM_IKindOfShape :
    public virtual omniServant
  {
  public:
    virtual ~_impl_GEOM_IKindOfShape();

    
    
  public:  // Really protected, workaround for xlC
    virtual _CORBA_Boolean _dispatch(omniCallHandle&);

  private:
    virtual void* _ptrToInterface(const char*);
    virtual const char* _mostDerivedRepoId();
    
  };


  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_GEOM_IKindOfShape;

#ifndef __GEOM_mGEOM__IMeasureOperations__
#define __GEOM_mGEOM__IMeasureOperations__

  class GEOM_IMeasureOperations;
  class _objref_GEOM_IMeasureOperations;
  class _impl_GEOM_IMeasureOperations;
  
  typedef _objref_GEOM_IMeasureOperations* GEOM_IMeasureOperations_ptr;
  typedef GEOM_IMeasureOperations_ptr GEOM_IMeasureOperationsRef;

  class GEOM_IMeasureOperations_Helper {
  public:
    typedef GEOM_IMeasureOperations_ptr _ptr_type;

    static _ptr_type _nil();
    static _CORBA_Boolean is_nil(_ptr_type);
    static void release(_ptr_type);
    static void duplicate(_ptr_type);
    static void marshalObjRef(_ptr_type, cdrStream&);
    static _ptr_type unmarshalObjRef(cdrStream&);
  };

  typedef _CORBA_ObjRef_Var<_objref_GEOM_IMeasureOperations, GEOM_IMeasureOperations_Helper> GEOM_IMeasureOperations_var;
  typedef _CORBA_ObjRef_OUT_arg<_objref_GEOM_IMeasureOperations,GEOM_IMeasureOperations_Helper > GEOM_IMeasureOperations_out;

#endif

  // interface GEOM_IMeasureOperations
  class GEOM_IMeasureOperations {
  public:
    // Declarations for this interface type.
    typedef GEOM_IMeasureOperations_ptr _ptr_type;
    typedef GEOM_IMeasureOperations_var _var_type;

    static _ptr_type _duplicate(_ptr_type);
    static _ptr_type _narrow(::CORBA::Object_ptr);
    static _ptr_type _unchecked_narrow(::CORBA::Object_ptr);
    
    static _ptr_type _nil();

    static inline void _marshalObjRef(_ptr_type, cdrStream&);

    static inline _ptr_type _unmarshalObjRef(cdrStream& s) {
      omniObjRef* o = omniObjRef::_unMarshal(_PD_repoId,s);
      if (o)
        return (_ptr_type) o->_ptrToObjRef(_PD_repoId);
      else
        return _nil();
    }

    static _core_attr const char* _PD_repoId;

    // Other IDL defined within this scope.
    
  };

  class _objref_GEOM_IMeasureOperations :
    public virtual _objref_GEOM_IOperations
  {
  public:
    GEOM_IKindOfShape::shape_kind KindOfShape(::GEOM::GEOM_Object_ptr theShape, ::GEOM::ListOfLong_out theIntegers, ::GEOM::ListOfDouble_out theDoubles);
    void GetPosition(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double& Ox, ::CORBA::Double& Oy, ::CORBA::Double& Oz, ::CORBA::Double& Zx, ::CORBA::Double& Zy, ::CORBA::Double& Zz, ::CORBA::Double& Xx, ::CORBA::Double& Xy, ::CORBA::Double& Xz);
    void GetBasicProperties(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double& theLength, ::CORBA::Double& theSurfArea, ::CORBA::Double& theVolume);
    GEOM_Object_ptr GetCentreOfMass(::GEOM::GEOM_Object_ptr theShape);
    GEOM_Object_ptr GetVertexByIndex(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long index);
    GEOM_Object_ptr GetNormal(::GEOM::GEOM_Object_ptr theFace, ::GEOM::GEOM_Object_ptr theOptionalPoint);
    void GetInertia(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double& I11, ::CORBA::Double& I12, ::CORBA::Double& I13, ::CORBA::Double& I21, ::CORBA::Double& I22, ::CORBA::Double& I23, ::CORBA::Double& I31, ::CORBA::Double& I32, ::CORBA::Double& I33, ::CORBA::Double& Ix, ::CORBA::Double& Iy, ::CORBA::Double& Iz);
    void GetBoundingBox(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double& Xmin, ::CORBA::Double& Xmax, ::CORBA::Double& Ymin, ::CORBA::Double& Ymax, ::CORBA::Double& Zmin, ::CORBA::Double& Zmax);
    void GetTolerance(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double& FaceMin, ::CORBA::Double& FaceMax, ::CORBA::Double& EdgeMin, ::CORBA::Double& EdgeMax, ::CORBA::Double& VertMin, ::CORBA::Double& VertMax);
    ::CORBA::Boolean CheckShape(::GEOM::GEOM_Object_ptr theShape, ::CORBA::String_out theDescription);
    ::CORBA::Boolean CheckShapeWithGeometry(::GEOM::GEOM_Object_ptr theShape, ::CORBA::String_out theDescription);
    char* WhatIs(::GEOM::GEOM_Object_ptr theShape);
    ::CORBA::Double GetMinDistance(::GEOM::GEOM_Object_ptr theShape1, ::GEOM::GEOM_Object_ptr theShape2, ::CORBA::Double& X1, ::CORBA::Double& Y1, ::CORBA::Double& Z1, ::CORBA::Double& X2, ::CORBA::Double& Y2, ::CORBA::Double& Z2);
    ::CORBA::Double GetAngle(::GEOM::GEOM_Object_ptr theShape1, ::GEOM::GEOM_Object_ptr theShape2);
    void PointCoordinates(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double& X, ::CORBA::Double& Y, ::CORBA::Double& Z);
    ::CORBA::Double CurveCurvatureByParam(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theParam);
    ::CORBA::Double CurveCurvatureByPoint(::GEOM::GEOM_Object_ptr theShape, ::GEOM::GEOM_Object_ptr thePoint);
    ::CORBA::Double MaxSurfaceCurvatureByParam(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theUParam, ::CORBA::Double theVParam);
    ::CORBA::Double MaxSurfaceCurvatureByPoint(::GEOM::GEOM_Object_ptr theShape, ::GEOM::GEOM_Object_ptr thePoint);
    ::CORBA::Double MinSurfaceCurvatureByParam(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theUParam, ::CORBA::Double theVParam);
    ::CORBA::Double MinSurfaceCurvatureByPoint(::GEOM::GEOM_Object_ptr theShape, ::GEOM::GEOM_Object_ptr thePoint);

    inline _objref_GEOM_IMeasureOperations()  { _PR_setobj(0); }  // nil
    _objref_GEOM_IMeasureOperations(omniIOR*, omniIdentity*);

  protected:
    virtual ~_objref_GEOM_IMeasureOperations();

    
  private:
    virtual void* _ptrToObjRef(const char*);

    _objref_GEOM_IMeasureOperations(const _objref_GEOM_IMeasureOperations&);
    _objref_GEOM_IMeasureOperations& operator = (const _objref_GEOM_IMeasureOperations&);
    // not implemented

    friend class GEOM_IMeasureOperations;
  };

  class _pof_GEOM_IMeasureOperations : public _OMNI_NS(proxyObjectFactory) {
  public:
    inline _pof_GEOM_IMeasureOperations() : _OMNI_NS(proxyObjectFactory)(GEOM_IMeasureOperations::_PD_repoId) {}
    virtual ~_pof_GEOM_IMeasureOperations();

    virtual omniObjRef* newObjRef(omniIOR*,omniIdentity*);
    virtual _CORBA_Boolean is_a(const char*) const;
  };

  class _impl_GEOM_IMeasureOperations :
    public virtual _impl_GEOM_IOperations
  {
  public:
    virtual ~_impl_GEOM_IMeasureOperations();

    virtual GEOM_IKindOfShape::shape_kind KindOfShape(::GEOM::GEOM_Object_ptr theShape, ::GEOM::ListOfLong_out theIntegers, ::GEOM::ListOfDouble_out theDoubles) = 0;
    virtual void GetPosition(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double& Ox, ::CORBA::Double& Oy, ::CORBA::Double& Oz, ::CORBA::Double& Zx, ::CORBA::Double& Zy, ::CORBA::Double& Zz, ::CORBA::Double& Xx, ::CORBA::Double& Xy, ::CORBA::Double& Xz) = 0;
    virtual void GetBasicProperties(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double& theLength, ::CORBA::Double& theSurfArea, ::CORBA::Double& theVolume) = 0;
    virtual GEOM_Object_ptr GetCentreOfMass(::GEOM::GEOM_Object_ptr theShape) = 0;
    virtual GEOM_Object_ptr GetVertexByIndex(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Long index) = 0;
    virtual GEOM_Object_ptr GetNormal(::GEOM::GEOM_Object_ptr theFace, ::GEOM::GEOM_Object_ptr theOptionalPoint) = 0;
    virtual void GetInertia(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double& I11, ::CORBA::Double& I12, ::CORBA::Double& I13, ::CORBA::Double& I21, ::CORBA::Double& I22, ::CORBA::Double& I23, ::CORBA::Double& I31, ::CORBA::Double& I32, ::CORBA::Double& I33, ::CORBA::Double& Ix, ::CORBA::Double& Iy, ::CORBA::Double& Iz) = 0;
    virtual void GetBoundingBox(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double& Xmin, ::CORBA::Double& Xmax, ::CORBA::Double& Ymin, ::CORBA::Double& Ymax, ::CORBA::Double& Zmin, ::CORBA::Double& Zmax) = 0;
    virtual void GetTolerance(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double& FaceMin, ::CORBA::Double& FaceMax, ::CORBA::Double& EdgeMin, ::CORBA::Double& EdgeMax, ::CORBA::Double& VertMin, ::CORBA::Double& VertMax) = 0;
    virtual ::CORBA::Boolean CheckShape(::GEOM::GEOM_Object_ptr theShape, ::CORBA::String_out theDescription) = 0;
    virtual ::CORBA::Boolean CheckShapeWithGeometry(::GEOM::GEOM_Object_ptr theShape, ::CORBA::String_out theDescription) = 0;
    virtual char* WhatIs(::GEOM::GEOM_Object_ptr theShape) = 0;
    virtual ::CORBA::Double GetMinDistance(::GEOM::GEOM_Object_ptr theShape1, ::GEOM::GEOM_Object_ptr theShape2, ::CORBA::Double& X1, ::CORBA::Double& Y1, ::CORBA::Double& Z1, ::CORBA::Double& X2, ::CORBA::Double& Y2, ::CORBA::Double& Z2) = 0;
    virtual ::CORBA::Double GetAngle(::GEOM::GEOM_Object_ptr theShape1, ::GEOM::GEOM_Object_ptr theShape2) = 0;
    virtual void PointCoordinates(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double& X, ::CORBA::Double& Y, ::CORBA::Double& Z) = 0;
    virtual ::CORBA::Double CurveCurvatureByParam(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theParam) = 0;
    virtual ::CORBA::Double CurveCurvatureByPoint(::GEOM::GEOM_Object_ptr theShape, ::GEOM::GEOM_Object_ptr thePoint) = 0;
    virtual ::CORBA::Double MaxSurfaceCurvatureByParam(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theUParam, ::CORBA::Double theVParam) = 0;
    virtual ::CORBA::Double MaxSurfaceCurvatureByPoint(::GEOM::GEOM_Object_ptr theShape, ::GEOM::GEOM_Object_ptr thePoint) = 0;
    virtual ::CORBA::Double MinSurfaceCurvatureByParam(::GEOM::GEOM_Object_ptr theShape, ::CORBA::Double theUParam, ::CORBA::Double theVParam) = 0;
    virtual ::CORBA::Double MinSurfaceCurvatureByPoint(::GEOM::GEOM_Object_ptr theShape, ::GEOM::GEOM_Object_ptr thePoint) = 0;
    
  public:  // Really protected, workaround for xlC
    virtual _CORBA_Boolean _dispatch(omniCallHandle&);

  private:
    virtual void* _ptrToInterface(const char*);
    virtual const char* _mostDerivedRepoId();
    
  };


  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_GEOM_IMeasureOperations;

#ifndef __GEOM_mGEOM__IGroupOperations__
#define __GEOM_mGEOM__IGroupOperations__

  class GEOM_IGroupOperations;
  class _objref_GEOM_IGroupOperations;
  class _impl_GEOM_IGroupOperations;
  
  typedef _objref_GEOM_IGroupOperations* GEOM_IGroupOperations_ptr;
  typedef GEOM_IGroupOperations_ptr GEOM_IGroupOperationsRef;

  class GEOM_IGroupOperations_Helper {
  public:
    typedef GEOM_IGroupOperations_ptr _ptr_type;

    static _ptr_type _nil();
    static _CORBA_Boolean is_nil(_ptr_type);
    static void release(_ptr_type);
    static void duplicate(_ptr_type);
    static void marshalObjRef(_ptr_type, cdrStream&);
    static _ptr_type unmarshalObjRef(cdrStream&);
  };

  typedef _CORBA_ObjRef_Var<_objref_GEOM_IGroupOperations, GEOM_IGroupOperations_Helper> GEOM_IGroupOperations_var;
  typedef _CORBA_ObjRef_OUT_arg<_objref_GEOM_IGroupOperations,GEOM_IGroupOperations_Helper > GEOM_IGroupOperations_out;

#endif

  // interface GEOM_IGroupOperations
  class GEOM_IGroupOperations {
  public:
    // Declarations for this interface type.
    typedef GEOM_IGroupOperations_ptr _ptr_type;
    typedef GEOM_IGroupOperations_var _var_type;

    static _ptr_type _duplicate(_ptr_type);
    static _ptr_type _narrow(::CORBA::Object_ptr);
    static _ptr_type _unchecked_narrow(::CORBA::Object_ptr);
    
    static _ptr_type _nil();

    static inline void _marshalObjRef(_ptr_type, cdrStream&);

    static inline _ptr_type _unmarshalObjRef(cdrStream& s) {
      omniObjRef* o = omniObjRef::_unMarshal(_PD_repoId,s);
      if (o)
        return (_ptr_type) o->_ptrToObjRef(_PD_repoId);
      else
        return _nil();
    }

    static _core_attr const char* _PD_repoId;

    // Other IDL defined within this scope.
    
  };

  class _objref_GEOM_IGroupOperations :
    public virtual _objref_GEOM_IOperations
  {
  public:
    GEOM_Object_ptr CreateGroup(::GEOM::GEOM_Object_ptr theMainShape, ::CORBA::Long theShapeType);
    void AddObject(::GEOM::GEOM_Object_ptr theGroup, ::CORBA::Long theSubShapeId);
    void RemoveObject(::GEOM::GEOM_Object_ptr theGroup, ::CORBA::Long theSubShapeId);
    void UnionList(::GEOM::GEOM_Object_ptr theGroup, const ::GEOM::ListOfGO& theSubShapes);
    void DifferenceList(::GEOM::GEOM_Object_ptr theGroup, const ::GEOM::ListOfGO& theSubShapes);
    void UnionIDs(::GEOM::GEOM_Object_ptr theGroup, const ::GEOM::ListOfLong& theSubShapes);
    void DifferenceIDs(::GEOM::GEOM_Object_ptr theGroup, const ::GEOM::ListOfLong& theSubShapes);
    ::CORBA::Long GetType(::GEOM::GEOM_Object_ptr theGroup);
    GEOM_Object_ptr GetMainShape(::GEOM::GEOM_Object_ptr theGroup);
    ListOfLong* GetObjects(::GEOM::GEOM_Object_ptr theGroup);

    inline _objref_GEOM_IGroupOperations()  { _PR_setobj(0); }  // nil
    _objref_GEOM_IGroupOperations(omniIOR*, omniIdentity*);

  protected:
    virtual ~_objref_GEOM_IGroupOperations();

    
  private:
    virtual void* _ptrToObjRef(const char*);

    _objref_GEOM_IGroupOperations(const _objref_GEOM_IGroupOperations&);
    _objref_GEOM_IGroupOperations& operator = (const _objref_GEOM_IGroupOperations&);
    // not implemented

    friend class GEOM_IGroupOperations;
  };

  class _pof_GEOM_IGroupOperations : public _OMNI_NS(proxyObjectFactory) {
  public:
    inline _pof_GEOM_IGroupOperations() : _OMNI_NS(proxyObjectFactory)(GEOM_IGroupOperations::_PD_repoId) {}
    virtual ~_pof_GEOM_IGroupOperations();

    virtual omniObjRef* newObjRef(omniIOR*,omniIdentity*);
    virtual _CORBA_Boolean is_a(const char*) const;
  };

  class _impl_GEOM_IGroupOperations :
    public virtual _impl_GEOM_IOperations
  {
  public:
    virtual ~_impl_GEOM_IGroupOperations();

    virtual GEOM_Object_ptr CreateGroup(::GEOM::GEOM_Object_ptr theMainShape, ::CORBA::Long theShapeType) = 0;
    virtual void AddObject(::GEOM::GEOM_Object_ptr theGroup, ::CORBA::Long theSubShapeId) = 0;
    virtual void RemoveObject(::GEOM::GEOM_Object_ptr theGroup, ::CORBA::Long theSubShapeId) = 0;
    virtual void UnionList(::GEOM::GEOM_Object_ptr theGroup, const ::GEOM::ListOfGO& theSubShapes) = 0;
    virtual void DifferenceList(::GEOM::GEOM_Object_ptr theGroup, const ::GEOM::ListOfGO& theSubShapes) = 0;
    virtual void UnionIDs(::GEOM::GEOM_Object_ptr theGroup, const ::GEOM::ListOfLong& theSubShapes) = 0;
    virtual void DifferenceIDs(::GEOM::GEOM_Object_ptr theGroup, const ::GEOM::ListOfLong& theSubShapes) = 0;
    virtual ::CORBA::Long GetType(::GEOM::GEOM_Object_ptr theGroup) = 0;
    virtual GEOM_Object_ptr GetMainShape(::GEOM::GEOM_Object_ptr theGroup) = 0;
    virtual ListOfLong* GetObjects(::GEOM::GEOM_Object_ptr theGroup) = 0;
    
  public:  // Really protected, workaround for xlC
    virtual _CORBA_Boolean _dispatch(omniCallHandle&);

  private:
    virtual void* _ptrToInterface(const char*);
    virtual const char* _mostDerivedRepoId();
    
  };


  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_GEOM_IGroupOperations;

#ifndef __GEOM_mGEOM__IAdvancedOperations__
#define __GEOM_mGEOM__IAdvancedOperations__

  class GEOM_IAdvancedOperations;
  class _objref_GEOM_IAdvancedOperations;
  class _impl_GEOM_IAdvancedOperations;
  
  typedef _objref_GEOM_IAdvancedOperations* GEOM_IAdvancedOperations_ptr;
  typedef GEOM_IAdvancedOperations_ptr GEOM_IAdvancedOperationsRef;

  class GEOM_IAdvancedOperations_Helper {
  public:
    typedef GEOM_IAdvancedOperations_ptr _ptr_type;

    static _ptr_type _nil();
    static _CORBA_Boolean is_nil(_ptr_type);
    static void release(_ptr_type);
    static void duplicate(_ptr_type);
    static void marshalObjRef(_ptr_type, cdrStream&);
    static _ptr_type unmarshalObjRef(cdrStream&);
  };

  typedef _CORBA_ObjRef_Var<_objref_GEOM_IAdvancedOperations, GEOM_IAdvancedOperations_Helper> GEOM_IAdvancedOperations_var;
  typedef _CORBA_ObjRef_OUT_arg<_objref_GEOM_IAdvancedOperations,GEOM_IAdvancedOperations_Helper > GEOM_IAdvancedOperations_out;

#endif

  // interface GEOM_IAdvancedOperations
  class GEOM_IAdvancedOperations {
  public:
    // Declarations for this interface type.
    typedef GEOM_IAdvancedOperations_ptr _ptr_type;
    typedef GEOM_IAdvancedOperations_var _var_type;

    static _ptr_type _duplicate(_ptr_type);
    static _ptr_type _narrow(::CORBA::Object_ptr);
    static _ptr_type _unchecked_narrow(::CORBA::Object_ptr);
    
    static _ptr_type _nil();

    static inline void _marshalObjRef(_ptr_type, cdrStream&);

    static inline _ptr_type _unmarshalObjRef(cdrStream& s) {
      omniObjRef* o = omniObjRef::_unMarshal(_PD_repoId,s);
      if (o)
        return (_ptr_type) o->_ptrToObjRef(_PD_repoId);
      else
        return _nil();
    }

    static _core_attr const char* _PD_repoId;

    // Other IDL defined within this scope.
    
  };

  class _objref_GEOM_IAdvancedOperations :
    public virtual _objref_GEOM_IOperations
  {
  public:
    ListOfGO* MakePipeTShape(::CORBA::Double theR1, ::CORBA::Double theW1, ::CORBA::Double theL1, ::CORBA::Double theR2, ::CORBA::Double theW2, ::CORBA::Double theL2, ::CORBA::Boolean theHexMesh);
    ListOfGO* MakePipeTShapeWithPosition(::CORBA::Double theR1, ::CORBA::Double theW1, ::CORBA::Double theL1, ::CORBA::Double theR2, ::CORBA::Double theW2, ::CORBA::Double theL2, ::CORBA::Boolean theHexMesh, ::GEOM::GEOM_Object_ptr theP1, ::GEOM::GEOM_Object_ptr theP2, ::GEOM::GEOM_Object_ptr theP3);
    ListOfGO* MakePipeTShapeChamfer(::CORBA::Double theR1, ::CORBA::Double theW1, ::CORBA::Double theL1, ::CORBA::Double theR2, ::CORBA::Double theW2, ::CORBA::Double theL2, ::CORBA::Double theH, ::CORBA::Double theW, ::CORBA::Boolean theHexMesh);
    ListOfGO* MakePipeTShapeChamferWithPosition(::CORBA::Double theR1, ::CORBA::Double theW1, ::CORBA::Double theL1, ::CORBA::Double theR2, ::CORBA::Double theW2, ::CORBA::Double theL2, ::CORBA::Double theH, ::CORBA::Double theW, ::CORBA::Boolean theHexMesh, ::GEOM::GEOM_Object_ptr theP1, ::GEOM::GEOM_Object_ptr theP2, ::GEOM::GEOM_Object_ptr theP3);
    ListOfGO* MakePipeTShapeFillet(::CORBA::Double theR1, ::CORBA::Double theW1, ::CORBA::Double theL1, ::CORBA::Double theR2, ::CORBA::Double theW2, ::CORBA::Double theL2, ::CORBA::Double theRF, ::CORBA::Boolean theHexMesh);
    ListOfGO* MakePipeTShapeFilletWithPosition(::CORBA::Double theR1, ::CORBA::Double theW1, ::CORBA::Double theL1, ::CORBA::Double theR2, ::CORBA::Double theW2, ::CORBA::Double theL2, ::CORBA::Double theRF, ::CORBA::Boolean theHexMesh, ::GEOM::GEOM_Object_ptr theP1, ::GEOM::GEOM_Object_ptr theP2, ::GEOM::GEOM_Object_ptr theP3);

    inline _objref_GEOM_IAdvancedOperations()  { _PR_setobj(0); }  // nil
    _objref_GEOM_IAdvancedOperations(omniIOR*, omniIdentity*);

  protected:
    virtual ~_objref_GEOM_IAdvancedOperations();

    
  private:
    virtual void* _ptrToObjRef(const char*);

    _objref_GEOM_IAdvancedOperations(const _objref_GEOM_IAdvancedOperations&);
    _objref_GEOM_IAdvancedOperations& operator = (const _objref_GEOM_IAdvancedOperations&);
    // not implemented

    friend class GEOM_IAdvancedOperations;
  };

  class _pof_GEOM_IAdvancedOperations : public _OMNI_NS(proxyObjectFactory) {
  public:
    inline _pof_GEOM_IAdvancedOperations() : _OMNI_NS(proxyObjectFactory)(GEOM_IAdvancedOperations::_PD_repoId) {}
    virtual ~_pof_GEOM_IAdvancedOperations();

    virtual omniObjRef* newObjRef(omniIOR*,omniIdentity*);
    virtual _CORBA_Boolean is_a(const char*) const;
  };

  class _impl_GEOM_IAdvancedOperations :
    public virtual _impl_GEOM_IOperations
  {
  public:
    virtual ~_impl_GEOM_IAdvancedOperations();

    virtual ListOfGO* MakePipeTShape(::CORBA::Double theR1, ::CORBA::Double theW1, ::CORBA::Double theL1, ::CORBA::Double theR2, ::CORBA::Double theW2, ::CORBA::Double theL2, ::CORBA::Boolean theHexMesh) = 0;
    virtual ListOfGO* MakePipeTShapeWithPosition(::CORBA::Double theR1, ::CORBA::Double theW1, ::CORBA::Double theL1, ::CORBA::Double theR2, ::CORBA::Double theW2, ::CORBA::Double theL2, ::CORBA::Boolean theHexMesh, ::GEOM::GEOM_Object_ptr theP1, ::GEOM::GEOM_Object_ptr theP2, ::GEOM::GEOM_Object_ptr theP3) = 0;
    virtual ListOfGO* MakePipeTShapeChamfer(::CORBA::Double theR1, ::CORBA::Double theW1, ::CORBA::Double theL1, ::CORBA::Double theR2, ::CORBA::Double theW2, ::CORBA::Double theL2, ::CORBA::Double theH, ::CORBA::Double theW, ::CORBA::Boolean theHexMesh) = 0;
    virtual ListOfGO* MakePipeTShapeChamferWithPosition(::CORBA::Double theR1, ::CORBA::Double theW1, ::CORBA::Double theL1, ::CORBA::Double theR2, ::CORBA::Double theW2, ::CORBA::Double theL2, ::CORBA::Double theH, ::CORBA::Double theW, ::CORBA::Boolean theHexMesh, ::GEOM::GEOM_Object_ptr theP1, ::GEOM::GEOM_Object_ptr theP2, ::GEOM::GEOM_Object_ptr theP3) = 0;
    virtual ListOfGO* MakePipeTShapeFillet(::CORBA::Double theR1, ::CORBA::Double theW1, ::CORBA::Double theL1, ::CORBA::Double theR2, ::CORBA::Double theW2, ::CORBA::Double theL2, ::CORBA::Double theRF, ::CORBA::Boolean theHexMesh) = 0;
    virtual ListOfGO* MakePipeTShapeFilletWithPosition(::CORBA::Double theR1, ::CORBA::Double theW1, ::CORBA::Double theL1, ::CORBA::Double theR2, ::CORBA::Double theW2, ::CORBA::Double theL2, ::CORBA::Double theRF, ::CORBA::Boolean theHexMesh, ::GEOM::GEOM_Object_ptr theP1, ::GEOM::GEOM_Object_ptr theP2, ::GEOM::GEOM_Object_ptr theP3) = 0;
    
  public:  // Really protected, workaround for xlC
    virtual _CORBA_Boolean _dispatch(omniCallHandle&);

  private:
    virtual void* _ptrToInterface(const char*);
    virtual const char* _mostDerivedRepoId();
    
  };


  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_GEOM_IAdvancedOperations;

#ifndef __GEOM_mGEOM__Gen__
#define __GEOM_mGEOM__Gen__

  class GEOM_Gen;
  class _objref_GEOM_Gen;
  class _impl_GEOM_Gen;
  
  typedef _objref_GEOM_Gen* GEOM_Gen_ptr;
  typedef GEOM_Gen_ptr GEOM_GenRef;

  class GEOM_Gen_Helper {
  public:
    typedef GEOM_Gen_ptr _ptr_type;

    static _ptr_type _nil();
    static _CORBA_Boolean is_nil(_ptr_type);
    static void release(_ptr_type);
    static void duplicate(_ptr_type);
    static void marshalObjRef(_ptr_type, cdrStream&);
    static _ptr_type unmarshalObjRef(cdrStream&);
  };

  typedef _CORBA_ObjRef_Var<_objref_GEOM_Gen, GEOM_Gen_Helper> GEOM_Gen_var;
  typedef _CORBA_ObjRef_OUT_arg<_objref_GEOM_Gen,GEOM_Gen_Helper > GEOM_Gen_out;

#endif

  // interface GEOM_Gen
  class GEOM_Gen {
  public:
    // Declarations for this interface type.
    typedef GEOM_Gen_ptr _ptr_type;
    typedef GEOM_Gen_var _var_type;

    static _ptr_type _duplicate(_ptr_type);
    static _ptr_type _narrow(::CORBA::Object_ptr);
    static _ptr_type _unchecked_narrow(::CORBA::Object_ptr);
    
    static _ptr_type _nil();

    static inline void _marshalObjRef(_ptr_type, cdrStream&);

    static inline _ptr_type _unmarshalObjRef(cdrStream& s) {
      omniObjRef* o = omniObjRef::_unMarshal(_PD_repoId,s);
      if (o)
        return (_ptr_type) o->_ptrToObjRef(_PD_repoId);
      else
        return _nil();
    }

    static _core_attr const char* _PD_repoId;

    // Other IDL defined within this scope.
    
  };

  class _objref_GEOM_Gen :
    public virtual Engines::_objref_Component,
    public virtual SALOMEDS::_objref_Driver
  {
  public:
    void Undo(::CORBA::Long theStudyID);
    void Redo(::CORBA::Long theStudyID);
    SALOMEDS::SObject_ptr AddInStudy(::SALOMEDS::Study_ptr theStudy, ::GEOM::GEOM_Object_ptr theObject, const char* theName, ::GEOM::GEOM_Object_ptr theFather);
    ListOfGO* RestoreSubShapesO(::SALOMEDS::Study_ptr theStudy, ::GEOM::GEOM_Object_ptr theObject, const ::GEOM::ListOfGO& theArgs, ::GEOM::find_shape_method theFindMethod, ::CORBA::Boolean theInheritFirstArg, ::CORBA::Boolean theAddPrefix);
    ListOfGO* RestoreSubShapesSO(::SALOMEDS::Study_ptr theStudy, ::SALOMEDS::SObject_ptr theSObject, const ::GEOM::ListOfGO& theArgs, ::GEOM::find_shape_method theFindMethod, ::CORBA::Boolean theInheritFirstArg, ::CORBA::Boolean theAddPrefix);
    GEOM_IBasicOperations_ptr GetIBasicOperations(::CORBA::Long theStudyID);
    GEOM_ITransformOperations_ptr GetITransformOperations(::CORBA::Long theStudyID);
    GEOM_I3DPrimOperations_ptr GetI3DPrimOperations(::CORBA::Long theStudyID);
    GEOM_IShapesOperations_ptr GetIShapesOperations(::CORBA::Long theStudyID);
    GEOM_IBooleanOperations_ptr GetIBooleanOperations(::CORBA::Long theStudyID);
    GEOM_ICurvesOperations_ptr GetICurvesOperations(::CORBA::Long theStudyID);
    GEOM_ILocalOperations_ptr GetILocalOperations(::CORBA::Long theStudyID);
    GEOM_IHealingOperations_ptr GetIHealingOperations(::CORBA::Long theStudyID);
    GEOM_IInsertOperations_ptr GetIInsertOperations(::CORBA::Long theStudyID);
    GEOM_IMeasureOperations_ptr GetIMeasureOperations(::CORBA::Long theStudyID);
    GEOM_IBlocksOperations_ptr GetIBlocksOperations(::CORBA::Long theStudyID);
    GEOM_IGroupOperations_ptr GetIGroupOperations(::CORBA::Long theStudyID);
    GEOM_IAdvancedOperations_ptr GetIAdvancedOperations(::CORBA::Long theStudyID);
    void RemoveObject(::GEOM::GEOM_Object_ptr theObject);
    GEOM_Object_ptr GetObject(::CORBA::Long theStudyID, const char* theEntry);
    GEOM_Object_ptr AddSubShape(::GEOM::GEOM_Object_ptr theMainShape, const ::GEOM::ListOfLong& theIndices);
    GEOM_Object_ptr GetIORFromString(const char* theIOR);
    char* GetStringFromIOR(::GEOM::GEOM_Object_ptr theObject);
    char* GetDumpName(const char* theStudyEntry);
    string_array* GetAllDumpNames();
    ListOfGO* PublishNamedShapesInStudy(::SALOMEDS::Study_ptr theStudy, ::CORBA::Object_ptr theObject);

    inline _objref_GEOM_Gen()  { _PR_setobj(0); }  // nil
    _objref_GEOM_Gen(omniIOR*, omniIdentity*);

  protected:
    virtual ~_objref_GEOM_Gen();

    
  private:
    virtual void* _ptrToObjRef(const char*);

    _objref_GEOM_Gen(const _objref_GEOM_Gen&);
    _objref_GEOM_Gen& operator = (const _objref_GEOM_Gen&);
    // not implemented

    friend class GEOM_Gen;
  };

  class _pof_GEOM_Gen : public _OMNI_NS(proxyObjectFactory) {
  public:
    inline _pof_GEOM_Gen() : _OMNI_NS(proxyObjectFactory)(GEOM_Gen::_PD_repoId) {}
    virtual ~_pof_GEOM_Gen();

    virtual omniObjRef* newObjRef(omniIOR*,omniIdentity*);
    virtual _CORBA_Boolean is_a(const char*) const;
  };

  class _impl_GEOM_Gen :
    public virtual Engines::_impl_Component,
    public virtual SALOMEDS::_impl_Driver
  {
  public:
    virtual ~_impl_GEOM_Gen();

    virtual void Undo(::CORBA::Long theStudyID) = 0;
    virtual void Redo(::CORBA::Long theStudyID) = 0;
    virtual SALOMEDS::SObject_ptr AddInStudy(::SALOMEDS::Study_ptr theStudy, ::GEOM::GEOM_Object_ptr theObject, const char* theName, ::GEOM::GEOM_Object_ptr theFather) = 0;
    virtual ListOfGO* RestoreSubShapesO(::SALOMEDS::Study_ptr theStudy, ::GEOM::GEOM_Object_ptr theObject, const ::GEOM::ListOfGO& theArgs, ::GEOM::find_shape_method theFindMethod, ::CORBA::Boolean theInheritFirstArg, ::CORBA::Boolean theAddPrefix) = 0;
    virtual ListOfGO* RestoreSubShapesSO(::SALOMEDS::Study_ptr theStudy, ::SALOMEDS::SObject_ptr theSObject, const ::GEOM::ListOfGO& theArgs, ::GEOM::find_shape_method theFindMethod, ::CORBA::Boolean theInheritFirstArg, ::CORBA::Boolean theAddPrefix) = 0;
    virtual GEOM_IBasicOperations_ptr GetIBasicOperations(::CORBA::Long theStudyID) = 0;
    virtual GEOM_ITransformOperations_ptr GetITransformOperations(::CORBA::Long theStudyID) = 0;
    virtual GEOM_I3DPrimOperations_ptr GetI3DPrimOperations(::CORBA::Long theStudyID) = 0;
    virtual GEOM_IShapesOperations_ptr GetIShapesOperations(::CORBA::Long theStudyID) = 0;
    virtual GEOM_IBooleanOperations_ptr GetIBooleanOperations(::CORBA::Long theStudyID) = 0;
    virtual GEOM_ICurvesOperations_ptr GetICurvesOperations(::CORBA::Long theStudyID) = 0;
    virtual GEOM_ILocalOperations_ptr GetILocalOperations(::CORBA::Long theStudyID) = 0;
    virtual GEOM_IHealingOperations_ptr GetIHealingOperations(::CORBA::Long theStudyID) = 0;
    virtual GEOM_IInsertOperations_ptr GetIInsertOperations(::CORBA::Long theStudyID) = 0;
    virtual GEOM_IMeasureOperations_ptr GetIMeasureOperations(::CORBA::Long theStudyID) = 0;
    virtual GEOM_IBlocksOperations_ptr GetIBlocksOperations(::CORBA::Long theStudyID) = 0;
    virtual GEOM_IGroupOperations_ptr GetIGroupOperations(::CORBA::Long theStudyID) = 0;
    virtual GEOM_IAdvancedOperations_ptr GetIAdvancedOperations(::CORBA::Long theStudyID) = 0;
    virtual void RemoveObject(::GEOM::GEOM_Object_ptr theObject) = 0;
    virtual GEOM_Object_ptr GetObject(::CORBA::Long theStudyID, const char* theEntry) = 0;
    virtual GEOM_Object_ptr AddSubShape(::GEOM::GEOM_Object_ptr theMainShape, const ::GEOM::ListOfLong& theIndices) = 0;
    virtual GEOM_Object_ptr GetIORFromString(const char* theIOR) = 0;
    virtual char* GetStringFromIOR(::GEOM::GEOM_Object_ptr theObject) = 0;
    virtual char* GetDumpName(const char* theStudyEntry) = 0;
    virtual string_array* GetAllDumpNames() = 0;
    virtual ListOfGO* PublishNamedShapesInStudy(::SALOMEDS::Study_ptr theStudy, ::CORBA::Object_ptr theObject) = 0;
    
  public:  // Really protected, workaround for xlC
    virtual _CORBA_Boolean _dispatch(omniCallHandle&);

  private:
    virtual void* _ptrToInterface(const char*);
    virtual const char* _mostDerivedRepoId();
    
  };


  _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_GEOM_Gen;

_CORBA_MODULE_END



_CORBA_MODULE POA_GEOM
_CORBA_MODULE_BEG

  class GEOM_Object :
    public virtual GEOM::_impl_GEOM_Object,
    public virtual POA_SALOME::GenericObj
  {
  public:
    virtual ~GEOM_Object();

    inline ::GEOM::GEOM_Object_ptr _this() {
      return (::GEOM::GEOM_Object_ptr) _do_this(::GEOM::GEOM_Object::_PD_repoId);
    }
  };

  class GEOM_IOperations :
    public virtual GEOM::_impl_GEOM_IOperations,
    public virtual POA_SALOME::GenericObj
  {
  public:
    virtual ~GEOM_IOperations();

    inline ::GEOM::GEOM_IOperations_ptr _this() {
      return (::GEOM::GEOM_IOperations_ptr) _do_this(::GEOM::GEOM_IOperations::_PD_repoId);
    }
  };

  class GEOM_IBasicOperations :
    public virtual GEOM::_impl_GEOM_IBasicOperations,
    public virtual GEOM_IOperations
  {
  public:
    virtual ~GEOM_IBasicOperations();

    inline ::GEOM::GEOM_IBasicOperations_ptr _this() {
      return (::GEOM::GEOM_IBasicOperations_ptr) _do_this(::GEOM::GEOM_IBasicOperations::_PD_repoId);
    }
  };

  class GEOM_ITransformOperations :
    public virtual GEOM::_impl_GEOM_ITransformOperations,
    public virtual GEOM_IOperations
  {
  public:
    virtual ~GEOM_ITransformOperations();

    inline ::GEOM::GEOM_ITransformOperations_ptr _this() {
      return (::GEOM::GEOM_ITransformOperations_ptr) _do_this(::GEOM::GEOM_ITransformOperations::_PD_repoId);
    }
  };

  class GEOM_I3DPrimOperations :
    public virtual GEOM::_impl_GEOM_I3DPrimOperations,
    public virtual GEOM_IOperations
  {
  public:
    virtual ~GEOM_I3DPrimOperations();

    inline ::GEOM::GEOM_I3DPrimOperations_ptr _this() {
      return (::GEOM::GEOM_I3DPrimOperations_ptr) _do_this(::GEOM::GEOM_I3DPrimOperations::_PD_repoId);
    }
  };

  class GEOM_IShapesOperations :
    public virtual GEOM::_impl_GEOM_IShapesOperations,
    public virtual GEOM_IOperations
  {
  public:
    virtual ~GEOM_IShapesOperations();

    inline ::GEOM::GEOM_IShapesOperations_ptr _this() {
      return (::GEOM::GEOM_IShapesOperations_ptr) _do_this(::GEOM::GEOM_IShapesOperations::_PD_repoId);
    }
  };

  class GEOM_IBlocksOperations :
    public virtual GEOM::_impl_GEOM_IBlocksOperations,
    public virtual GEOM_IOperations
  {
  public:
    virtual ~GEOM_IBlocksOperations();

    inline ::GEOM::GEOM_IBlocksOperations_ptr _this() {
      return (::GEOM::GEOM_IBlocksOperations_ptr) _do_this(::GEOM::GEOM_IBlocksOperations::_PD_repoId);
    }
  };

  class GEOM_IBooleanOperations :
    public virtual GEOM::_impl_GEOM_IBooleanOperations,
    public virtual GEOM_IOperations
  {
  public:
    virtual ~GEOM_IBooleanOperations();

    inline ::GEOM::GEOM_IBooleanOperations_ptr _this() {
      return (::GEOM::GEOM_IBooleanOperations_ptr) _do_this(::GEOM::GEOM_IBooleanOperations::_PD_repoId);
    }
  };

  class GEOM_ICurvesOperations :
    public virtual GEOM::_impl_GEOM_ICurvesOperations,
    public virtual GEOM_IOperations
  {
  public:
    virtual ~GEOM_ICurvesOperations();

    inline ::GEOM::GEOM_ICurvesOperations_ptr _this() {
      return (::GEOM::GEOM_ICurvesOperations_ptr) _do_this(::GEOM::GEOM_ICurvesOperations::_PD_repoId);
    }
  };

  class GEOM_ILocalOperations :
    public virtual GEOM::_impl_GEOM_ILocalOperations,
    public virtual GEOM_IOperations
  {
  public:
    virtual ~GEOM_ILocalOperations();

    inline ::GEOM::GEOM_ILocalOperations_ptr _this() {
      return (::GEOM::GEOM_ILocalOperations_ptr) _do_this(::GEOM::GEOM_ILocalOperations::_PD_repoId);
    }
  };

  class GEOM_IHealingOperations :
    public virtual GEOM::_impl_GEOM_IHealingOperations,
    public virtual GEOM_IOperations
  {
  public:
    virtual ~GEOM_IHealingOperations();

    inline ::GEOM::GEOM_IHealingOperations_ptr _this() {
      return (::GEOM::GEOM_IHealingOperations_ptr) _do_this(::GEOM::GEOM_IHealingOperations::_PD_repoId);
    }
  };

  class GEOM_IInsertOperations :
    public virtual GEOM::_impl_GEOM_IInsertOperations,
    public virtual GEOM_IOperations
  {
  public:
    virtual ~GEOM_IInsertOperations();

    inline ::GEOM::GEOM_IInsertOperations_ptr _this() {
      return (::GEOM::GEOM_IInsertOperations_ptr) _do_this(::GEOM::GEOM_IInsertOperations::_PD_repoId);
    }
  };

  class GEOM_IKindOfShape :
    public virtual GEOM::_impl_GEOM_IKindOfShape,
    public virtual ::PortableServer::ServantBase
  {
  public:
    virtual ~GEOM_IKindOfShape();

    inline ::GEOM::GEOM_IKindOfShape_ptr _this() {
      return (::GEOM::GEOM_IKindOfShape_ptr) _do_this(::GEOM::GEOM_IKindOfShape::_PD_repoId);
    }
  };

  class GEOM_IMeasureOperations :
    public virtual GEOM::_impl_GEOM_IMeasureOperations,
    public virtual GEOM_IOperations
  {
  public:
    virtual ~GEOM_IMeasureOperations();

    inline ::GEOM::GEOM_IMeasureOperations_ptr _this() {
      return (::GEOM::GEOM_IMeasureOperations_ptr) _do_this(::GEOM::GEOM_IMeasureOperations::_PD_repoId);
    }
  };

  class GEOM_IGroupOperations :
    public virtual GEOM::_impl_GEOM_IGroupOperations,
    public virtual GEOM_IOperations
  {
  public:
    virtual ~GEOM_IGroupOperations();

    inline ::GEOM::GEOM_IGroupOperations_ptr _this() {
      return (::GEOM::GEOM_IGroupOperations_ptr) _do_this(::GEOM::GEOM_IGroupOperations::_PD_repoId);
    }
  };

  class GEOM_IAdvancedOperations :
    public virtual GEOM::_impl_GEOM_IAdvancedOperations,
    public virtual GEOM_IOperations
  {
  public:
    virtual ~GEOM_IAdvancedOperations();

    inline ::GEOM::GEOM_IAdvancedOperations_ptr _this() {
      return (::GEOM::GEOM_IAdvancedOperations_ptr) _do_this(::GEOM::GEOM_IAdvancedOperations::_PD_repoId);
    }
  };

  class GEOM_Gen :
    public virtual GEOM::_impl_GEOM_Gen,
    public virtual POA_Engines::Component,
      public virtual POA_SALOMEDS::Driver
  {
  public:
    virtual ~GEOM_Gen();

    inline ::GEOM::GEOM_Gen_ptr _this() {
      return (::GEOM::GEOM_Gen_ptr) _do_this(::GEOM::GEOM_Gen::_PD_repoId);
    }
  };

_CORBA_MODULE_END



_CORBA_MODULE OBV_GEOM
_CORBA_MODULE_BEG

_CORBA_MODULE_END





#undef _core_attr
#undef _dyn_attr

inline void operator >>=(GEOM::shape_type _e, cdrStream& s) {
  ::operator>>=((::CORBA::ULong)_e, s);
}

inline void operator <<= (GEOM::shape_type& _e, cdrStream& s) {
  ::CORBA::ULong _0RL_e;
  ::operator<<=(_0RL_e,s);
  if (_0RL_e <= GEOM::SHAPE) {
    _e = (GEOM::shape_type) _0RL_e;
  }
  else {
    OMNIORB_THROW(MARSHAL,_OMNI_NS(MARSHAL_InvalidEnumValue),
                  (::CORBA::CompletionStatus)s.completion());
  }
}

void operator<<=(::CORBA::Any& _a, GEOM::shape_type _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::shape_type& _s);

inline void operator >>=(GEOM::marker_type _e, cdrStream& s) {
  ::operator>>=((::CORBA::ULong)_e, s);
}

inline void operator <<= (GEOM::marker_type& _e, cdrStream& s) {
  ::CORBA::ULong _0RL_e;
  ::operator<<=(_0RL_e,s);
  if (_0RL_e <= GEOM::MT_USER) {
    _e = (GEOM::marker_type) _0RL_e;
  }
  else {
    OMNIORB_THROW(MARSHAL,_OMNI_NS(MARSHAL_InvalidEnumValue),
                  (::CORBA::CompletionStatus)s.completion());
  }
}

void operator<<=(::CORBA::Any& _a, GEOM::marker_type _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::marker_type& _s);

inline void operator >>=(GEOM::marker_size _e, cdrStream& s) {
  ::operator>>=((::CORBA::ULong)_e, s);
}

inline void operator <<= (GEOM::marker_size& _e, cdrStream& s) {
  ::CORBA::ULong _0RL_e;
  ::operator<<=(_0RL_e,s);
  if (_0RL_e <= GEOM::MS_70) {
    _e = (GEOM::marker_size) _0RL_e;
  }
  else {
    OMNIORB_THROW(MARSHAL,_OMNI_NS(MARSHAL_InvalidEnumValue),
                  (::CORBA::CompletionStatus)s.completion());
  }
}

void operator<<=(::CORBA::Any& _a, GEOM::marker_size _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::marker_size& _s);

inline void operator >>=(GEOM::shape_state _e, cdrStream& s) {
  ::operator>>=((::CORBA::ULong)_e, s);
}

inline void operator <<= (GEOM::shape_state& _e, cdrStream& s) {
  ::CORBA::ULong _0RL_e;
  ::operator<<=(_0RL_e,s);
  if (_0RL_e <= GEOM::ST_ONIN) {
    _e = (GEOM::shape_state) _0RL_e;
  }
  else {
    OMNIORB_THROW(MARSHAL,_OMNI_NS(MARSHAL_InvalidEnumValue),
                  (::CORBA::CompletionStatus)s.completion());
  }
}

void operator<<=(::CORBA::Any& _a, GEOM::shape_state _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::shape_state& _s);

inline void operator >>=(GEOM::find_shape_method _e, cdrStream& s) {
  ::operator>>=((::CORBA::ULong)_e, s);
}

inline void operator <<= (GEOM::find_shape_method& _e, cdrStream& s) {
  ::CORBA::ULong _0RL_e;
  ::operator<<=(_0RL_e,s);
  if (_0RL_e <= GEOM::FSM_GetInPlaceByHistory) {
    _e = (GEOM::find_shape_method) _0RL_e;
  }
  else {
    OMNIORB_THROW(MARSHAL,_OMNI_NS(MARSHAL_InvalidEnumValue),
                  (::CORBA::CompletionStatus)s.completion());
  }
}

void operator<<=(::CORBA::Any& _a, GEOM::find_shape_method _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::find_shape_method& _s);

inline void operator >>=(GEOM::filling_oper_method _e, cdrStream& s) {
  ::operator>>=((::CORBA::ULong)_e, s);
}

inline void operator <<= (GEOM::filling_oper_method& _e, cdrStream& s) {
  ::CORBA::ULong _0RL_e;
  ::operator<<=(_0RL_e,s);
  if (_0RL_e <= GEOM::FOM_AutoCorrect) {
    _e = (GEOM::filling_oper_method) _0RL_e;
  }
  else {
    OMNIORB_THROW(MARSHAL,_OMNI_NS(MARSHAL_InvalidEnumValue),
                  (::CORBA::CompletionStatus)s.completion());
  }
}

void operator<<=(::CORBA::Any& _a, GEOM::filling_oper_method _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::filling_oper_method& _s);

void operator<<=(::CORBA::Any& _a, const GEOM::string_array& _s);
void operator<<=(::CORBA::Any& _a, GEOM::string_array* _sp);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::string_array*& _sp);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, const GEOM::string_array*& _sp);

void operator<<=(::CORBA::Any& _a, const GEOM::short_array& _s);
void operator<<=(::CORBA::Any& _a, GEOM::short_array* _sp);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::short_array*& _sp);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, const GEOM::short_array*& _sp);

void operator<<=(::CORBA::Any& _a, const GEOM::ListOfLong& _s);
void operator<<=(::CORBA::Any& _a, GEOM::ListOfLong* _sp);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::ListOfLong*& _sp);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, const GEOM::ListOfLong*& _sp);

void operator<<=(::CORBA::Any& _a, const GEOM::ListOfDouble& _s);
void operator<<=(::CORBA::Any& _a, GEOM::ListOfDouble* _sp);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::ListOfDouble*& _sp);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, const GEOM::ListOfDouble*& _sp);

void operator<<=(::CORBA::Any& _a, const GEOM::ListOfGO& _s);
void operator<<=(::CORBA::Any& _a, GEOM::ListOfGO* _sp);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::ListOfGO*& _sp);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, const GEOM::ListOfGO*& _sp);

void operator<<=(::CORBA::Any& _a, GEOM::GEOM_Object_ptr _s);
void operator<<=(::CORBA::Any& _a, GEOM::GEOM_Object_ptr* _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::GEOM_Object_ptr& _s);

void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IOperations_ptr _s);
void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IOperations_ptr* _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::GEOM_IOperations_ptr& _s);

void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IBasicOperations_ptr _s);
void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IBasicOperations_ptr* _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::GEOM_IBasicOperations_ptr& _s);

void operator<<=(::CORBA::Any& _a, GEOM::GEOM_ITransformOperations_ptr _s);
void operator<<=(::CORBA::Any& _a, GEOM::GEOM_ITransformOperations_ptr* _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::GEOM_ITransformOperations_ptr& _s);

void operator<<=(::CORBA::Any& _a, GEOM::GEOM_I3DPrimOperations_ptr _s);
void operator<<=(::CORBA::Any& _a, GEOM::GEOM_I3DPrimOperations_ptr* _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::GEOM_I3DPrimOperations_ptr& _s);

void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IShapesOperations_ptr _s);
void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IShapesOperations_ptr* _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::GEOM_IShapesOperations_ptr& _s);

inline void operator >>=(GEOM::GEOM_IBlocksOperations::BCErrorType _e, cdrStream& s) {
  ::operator>>=((::CORBA::ULong)_e, s);
}

inline void operator <<= (GEOM::GEOM_IBlocksOperations::BCErrorType& _e, cdrStream& s) {
  ::CORBA::ULong _0RL_e;
  ::operator<<=(_0RL_e,s);
  if (_0RL_e <= GEOM::GEOM_IBlocksOperations::NOT_GLUED) {
    _e = (GEOM::GEOM_IBlocksOperations::BCErrorType) _0RL_e;
  }
  else {
    OMNIORB_THROW(MARSHAL,_OMNI_NS(MARSHAL_InvalidEnumValue),
                  (::CORBA::CompletionStatus)s.completion());
  }
}

void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IBlocksOperations::BCErrorType _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::GEOM_IBlocksOperations::BCErrorType& _s);

extern void operator<<=(::CORBA::Any& _a, const GEOM::GEOM_IBlocksOperations::BCError& _s);
extern void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IBlocksOperations::BCError* _sp);
extern _CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::GEOM_IBlocksOperations::BCError*& _sp);
extern _CORBA_Boolean operator>>=(const ::CORBA::Any& _a, const GEOM::GEOM_IBlocksOperations::BCError*& _sp);

void operator<<=(::CORBA::Any& _a, const GEOM::GEOM_IBlocksOperations::BCErrors& _s);
void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IBlocksOperations::BCErrors* _sp);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::GEOM_IBlocksOperations::BCErrors*& _sp);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, const GEOM::GEOM_IBlocksOperations::BCErrors*& _sp);

void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IBlocksOperations_ptr _s);
void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IBlocksOperations_ptr* _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::GEOM_IBlocksOperations_ptr& _s);

void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IBooleanOperations_ptr _s);
void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IBooleanOperations_ptr* _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::GEOM_IBooleanOperations_ptr& _s);

void operator<<=(::CORBA::Any& _a, GEOM::GEOM_ICurvesOperations_ptr _s);
void operator<<=(::CORBA::Any& _a, GEOM::GEOM_ICurvesOperations_ptr* _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::GEOM_ICurvesOperations_ptr& _s);

void operator<<=(::CORBA::Any& _a, GEOM::GEOM_ILocalOperations_ptr _s);
void operator<<=(::CORBA::Any& _a, GEOM::GEOM_ILocalOperations_ptr* _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::GEOM_ILocalOperations_ptr& _s);

void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IHealingOperations_ptr _s);
void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IHealingOperations_ptr* _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::GEOM_IHealingOperations_ptr& _s);

void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IInsertOperations_ptr _s);
void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IInsertOperations_ptr* _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::GEOM_IInsertOperations_ptr& _s);

inline void operator >>=(GEOM::GEOM_IKindOfShape::shape_kind _e, cdrStream& s) {
  ::operator>>=((::CORBA::ULong)_e, s);
}

inline void operator <<= (GEOM::GEOM_IKindOfShape::shape_kind& _e, cdrStream& s) {
  ::CORBA::ULong _0RL_e;
  ::operator<<=(_0RL_e,s);
  if (_0RL_e <= GEOM::GEOM_IKindOfShape::ADVANCED) {
    _e = (GEOM::GEOM_IKindOfShape::shape_kind) _0RL_e;
  }
  else {
    OMNIORB_THROW(MARSHAL,_OMNI_NS(MARSHAL_InvalidEnumValue),
                  (::CORBA::CompletionStatus)s.completion());
  }
}

void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IKindOfShape::shape_kind _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::GEOM_IKindOfShape::shape_kind& _s);

void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IKindOfShape_ptr _s);
void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IKindOfShape_ptr* _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::GEOM_IKindOfShape_ptr& _s);

void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IMeasureOperations_ptr _s);
void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IMeasureOperations_ptr* _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::GEOM_IMeasureOperations_ptr& _s);

void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IGroupOperations_ptr _s);
void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IGroupOperations_ptr* _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::GEOM_IGroupOperations_ptr& _s);

void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IAdvancedOperations_ptr _s);
void operator<<=(::CORBA::Any& _a, GEOM::GEOM_IAdvancedOperations_ptr* _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::GEOM_IAdvancedOperations_ptr& _s);

void operator<<=(::CORBA::Any& _a, GEOM::GEOM_Gen_ptr _s);
void operator<<=(::CORBA::Any& _a, GEOM::GEOM_Gen_ptr* _s);
_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, GEOM::GEOM_Gen_ptr& _s);



inline void
GEOM::GEOM_Object::_marshalObjRef(::GEOM::GEOM_Object_ptr obj, cdrStream& s) {
  omniObjRef::_marshal(obj->_PR_getobj(),s);
}


inline void
GEOM::GEOM_IOperations::_marshalObjRef(::GEOM::GEOM_IOperations_ptr obj, cdrStream& s) {
  omniObjRef::_marshal(obj->_PR_getobj(),s);
}


inline void
GEOM::GEOM_IBasicOperations::_marshalObjRef(::GEOM::GEOM_IBasicOperations_ptr obj, cdrStream& s) {
  omniObjRef::_marshal(obj->_PR_getobj(),s);
}


inline void
GEOM::GEOM_ITransformOperations::_marshalObjRef(::GEOM::GEOM_ITransformOperations_ptr obj, cdrStream& s) {
  omniObjRef::_marshal(obj->_PR_getobj(),s);
}


inline void
GEOM::GEOM_I3DPrimOperations::_marshalObjRef(::GEOM::GEOM_I3DPrimOperations_ptr obj, cdrStream& s) {
  omniObjRef::_marshal(obj->_PR_getobj(),s);
}


inline void
GEOM::GEOM_IShapesOperations::_marshalObjRef(::GEOM::GEOM_IShapesOperations_ptr obj, cdrStream& s) {
  omniObjRef::_marshal(obj->_PR_getobj(),s);
}


inline void
GEOM::GEOM_IBlocksOperations::_marshalObjRef(::GEOM::GEOM_IBlocksOperations_ptr obj, cdrStream& s) {
  omniObjRef::_marshal(obj->_PR_getobj(),s);
}


inline void
GEOM::GEOM_IBooleanOperations::_marshalObjRef(::GEOM::GEOM_IBooleanOperations_ptr obj, cdrStream& s) {
  omniObjRef::_marshal(obj->_PR_getobj(),s);
}


inline void
GEOM::GEOM_ICurvesOperations::_marshalObjRef(::GEOM::GEOM_ICurvesOperations_ptr obj, cdrStream& s) {
  omniObjRef::_marshal(obj->_PR_getobj(),s);
}


inline void
GEOM::GEOM_ILocalOperations::_marshalObjRef(::GEOM::GEOM_ILocalOperations_ptr obj, cdrStream& s) {
  omniObjRef::_marshal(obj->_PR_getobj(),s);
}


inline void
GEOM::GEOM_IHealingOperations::_marshalObjRef(::GEOM::GEOM_IHealingOperations_ptr obj, cdrStream& s) {
  omniObjRef::_marshal(obj->_PR_getobj(),s);
}


inline void
GEOM::GEOM_IInsertOperations::_marshalObjRef(::GEOM::GEOM_IInsertOperations_ptr obj, cdrStream& s) {
  omniObjRef::_marshal(obj->_PR_getobj(),s);
}


inline void
GEOM::GEOM_IKindOfShape::_marshalObjRef(::GEOM::GEOM_IKindOfShape_ptr obj, cdrStream& s) {
  omniObjRef::_marshal(obj->_PR_getobj(),s);
}


inline void
GEOM::GEOM_IMeasureOperations::_marshalObjRef(::GEOM::GEOM_IMeasureOperations_ptr obj, cdrStream& s) {
  omniObjRef::_marshal(obj->_PR_getobj(),s);
}


inline void
GEOM::GEOM_IGroupOperations::_marshalObjRef(::GEOM::GEOM_IGroupOperations_ptr obj, cdrStream& s) {
  omniObjRef::_marshal(obj->_PR_getobj(),s);
}


inline void
GEOM::GEOM_IAdvancedOperations::_marshalObjRef(::GEOM::GEOM_IAdvancedOperations_ptr obj, cdrStream& s) {
  omniObjRef::_marshal(obj->_PR_getobj(),s);
}


inline void
GEOM::GEOM_Gen::_marshalObjRef(::GEOM::GEOM_Gen_ptr obj, cdrStream& s) {
  omniObjRef::_marshal(obj->_PR_getobj(),s);
}




#ifdef   USE_stub_in_nt_dll_NOT_DEFINED_GEOM__Gen
# undef  USE_stub_in_nt_dll
# undef  USE_stub_in_nt_dll_NOT_DEFINED_GEOM__Gen
#endif
#ifdef   USE_core_stub_in_nt_dll_NOT_DEFINED_GEOM__Gen
# undef  USE_core_stub_in_nt_dll
# undef  USE_core_stub_in_nt_dll_NOT_DEFINED_GEOM__Gen
#endif
#ifdef   USE_dyn_stub_in_nt_dll_NOT_DEFINED_GEOM__Gen
# undef  USE_dyn_stub_in_nt_dll
# undef  USE_dyn_stub_in_nt_dll_NOT_DEFINED_GEOM__Gen
#endif

#endif  // __GEOM__Gen_hh__

