
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __org_omg_DynamicAny_DynFixedHelper__
#define __org_omg_DynamicAny_DynFixedHelper__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace org
  {
    namespace omg
    {
      namespace CORBA
      {
          class Any;
          class Object;
          class TypeCode;
        namespace portable
        {
            class InputStream;
            class OutputStream;
        }
      }
      namespace DynamicAny
      {
          class DynFixed;
          class DynFixedHelper;
      }
    }
  }
}

class org::omg::DynamicAny::DynFixedHelper : public ::java::lang::Object
{

public:
  DynFixedHelper();
  static ::org::omg::DynamicAny::DynFixed * narrow(::org::omg::CORBA::Object *);
  static ::org::omg::DynamicAny::DynFixed * unchecked_narrow(::org::omg::CORBA::Object *);
  static ::org::omg::CORBA::TypeCode * type();
  static void insert(::org::omg::CORBA::Any *, ::org::omg::DynamicAny::DynFixed *);
  static ::org::omg::DynamicAny::DynFixed * extract(::org::omg::CORBA::Any *);
  static ::java::lang::String * id();
  static ::org::omg::DynamicAny::DynFixed * read(::org::omg::CORBA::portable::InputStream *);
  static void write(::org::omg::CORBA::portable::OutputStream *, ::org::omg::DynamicAny::DynFixed *);
  static ::java::lang::Class class$;
};

#endif // __org_omg_DynamicAny_DynFixedHelper__
