// -*- C++ -*-
//
// StringSeqC.h,v 1.5 2001/03/03 19:45:46 othman Exp

// ****  Code generated by the The ACE ORB (TAO) IDL Compiler ****
// TAO and the TAO IDL Compiler have been developed by:
//       Center for Distributed Object Computing
//       Washington University
//       St. Louis, MO
//       USA
//       http://www.cs.wustl.edu/~schmidt/doc-center.html
// and
//       Distributed Object Computing Laboratory
//       University of California at Irvine
//       Irvine, CA
//       USA
//       http://doc.ece.uci.edu/
//
// Information about TAO is available at:
//     http://www.cs.wustl.edu/~schmidt/TAO.html

#ifndef _TAO_IDL_CORBA_STRINGSEQC_H_
#define _TAO_IDL_CORBA_STRINGSEQC_H_

#include "ace/pre.h"

#include "corbafwd.h"

#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */

#include "Sequence.h"

#if defined (TAO_EXPORT_MACRO)
#undef TAO_EXPORT_MACRO
#endif
#define TAO_EXPORT_MACRO TAO_Export

#if defined (TAO_EXPORT_NESTED_CLASSES)
#  if defined (TAO_EXPORT_NESTED_MACRO)
#    undef TAO_EXPORT_NESTED_MACRO
#  endif /* defined (TAO_EXPORT_NESTED_MACRO) */
#  define TAO_EXPORT_NESTED_MACRO TAO_Export
#endif /* TAO_EXPORT_NESTED_CLASSES */

#if defined(_MSC_VER)
#if (_MSC_VER >= 1200)
#pragma warning(push)
#endif /* _MSC_VER >= 1200 */
#pragma warning(disable:4250)
#endif /* _MSC_VER */

#if defined (__BORLANDC__)
#pragma option push -w-rvl -w-rch -w-ccc -w-inl
#endif /* __BORLANDC__ */

#if !defined (_CORBA_STRINGSEQ_CH_)
#define _CORBA_STRINGSEQ_CH_

  class CORBA_StringSeq;
  class CORBA_StringSeq_var;
  
  // *************************************************************
  // CORBA::StringSeq
  // *************************************************************
  
  class TAO_Export CORBA_StringSeq : public 
#if !defined (TAO_USE_SEQUENCE_TEMPLATES)
    TAO_Unbounded_String_Sequence
#else /* TAO_USE_SEQUENCE_TEMPLATES */
    TAO_Unbounded_String_Sequence
#endif /* !TAO_USE_SEQUENCE_TEMPLATES */ 
  {
  public:
    CORBA_StringSeq (void); // default ctor
    CORBA_StringSeq (CORBA::ULong max); // uses max size
    CORBA_StringSeq (
      CORBA::ULong max, 
      CORBA::ULong length, 
      char * *buffer, 
      CORBA::Boolean release = 0
    );
    CORBA_StringSeq (const CORBA_StringSeq &); // copy ctor
    ~CORBA_StringSeq (void);
    static void _tao_any_destructor (void*);

#if !defined(__GNUC__) || !defined (ACE_HAS_GNUG_PRE_2_8)
    typedef CORBA_StringSeq_var _var_type;
#endif /* ! __GNUC__ || g++ >= 2.8 */

  };
  
#endif /* end #if !defined */


#if !defined (_CORBA_STRINGSEQ___VAR_CH_)
#define _CORBA_STRINGSEQ___VAR_CH_

  // *************************************************************
  // class CORBA::StringSeq_var
  // *************************************************************

  class TAO_Export CORBA_StringSeq_var
  {
  public:
    CORBA_StringSeq_var (void); // default constructor
    CORBA_StringSeq_var (CORBA_StringSeq *);
    CORBA_StringSeq_var (const CORBA_StringSeq_var &); // copy constructor
    ~CORBA_StringSeq_var (void); // destructor
    
    CORBA_StringSeq_var &operator= (CORBA_StringSeq *);
    CORBA_StringSeq_var &operator= (const CORBA_StringSeq_var &);
    CORBA_StringSeq *operator-> (void);
    const CORBA_StringSeq *operator-> (void) const;
    
    operator const CORBA_StringSeq &() const;
    operator CORBA_StringSeq &();
    operator CORBA_StringSeq &() const;
    operator CORBA_StringSeq *&(); // variable-size base types only
    
    TAO_SeqElem_String_Manager operator[] (CORBA::ULong index);
    
    // in, inout, out, _retn 
    const CORBA_StringSeq &in (void) const;
    CORBA_StringSeq &inout (void);
    CORBA_StringSeq *&out (void);
    CORBA_StringSeq *_retn (void);
    CORBA_StringSeq *ptr (void) const;

  private:
    CORBA_StringSeq *ptr_;
  };


#endif /* end #if !defined */


#if !defined (_CORBA_STRINGSEQ___OUT_CH_)
#define _CORBA_STRINGSEQ___OUT_CH_

  class TAO_Export CORBA_StringSeq_out
  {
  public:
    CORBA_StringSeq_out (CORBA_StringSeq *&);
    CORBA_StringSeq_out (CORBA_StringSeq_var &);
    CORBA_StringSeq_out (const CORBA_StringSeq_out &);
    CORBA_StringSeq_out &operator= (const CORBA_StringSeq_out &);
    CORBA_StringSeq_out &operator= (CORBA_StringSeq *);
    operator CORBA_StringSeq *&();
    CORBA_StringSeq *&ptr (void);
    CORBA_StringSeq *operator-> (void);
    TAO_SeqElem_String_Manager operator[] (CORBA::ULong index);
    
  private:
    CORBA_StringSeq *&ptr_;
    // assignment from T_var not allowed
    void operator= (const CORBA_StringSeq_var &);
  };


#endif /* end #if !defined */

#if !defined (_CORBA_WSTRINGSEQ_CH_)
#define _CORBA_WSTRINGSEQ_CH_

  class CORBA_WStringSeq;
  class CORBA_WStringSeq_var;
  
  // *************************************************************
  // CORBA::WStringSeq
  // *************************************************************
  
  class TAO_Export CORBA_WStringSeq : public 
#if !defined (TAO_USE_SEQUENCE_TEMPLATES)
    TAO_Unbounded_WString_Sequence
#else /* TAO_USE_SEQUENCE_TEMPLATES */
    TAO_Unbounded_WString_Sequence
#endif /* !TAO_USE_SEQUENCE_TEMPLATES */ 
  {
  public:
    CORBA_WStringSeq (void); // default ctor
    CORBA_WStringSeq (CORBA::ULong max); // uses max size
    CORBA_WStringSeq (
      CORBA::ULong max, 
      CORBA::ULong length, 
      CORBA::WChar * *buffer, 
      CORBA::Boolean release = 0
    );
    CORBA_WStringSeq (const CORBA_WStringSeq &); // copy ctor
    ~CORBA_WStringSeq (void);
    static void _tao_any_destructor (void*);

#if !defined(__GNUC__) || !defined (ACE_HAS_GNUG_PRE_2_8)
    typedef CORBA_WStringSeq_var _var_type;
#endif /* ! __GNUC__ || g++ >= 2.8 */

  };
  
#endif /* end #if !defined */


#if !defined (_CORBA_WSTRINGSEQ___VAR_CH_)
#define _CORBA_WSTRINGSEQ___VAR_CH_

  // *************************************************************
  // class CORBA_WStringSeq_var
  // *************************************************************

  class TAO_Export CORBA_WStringSeq_var
  {
  public:
    CORBA_WStringSeq_var (void); // default constructor
    CORBA_WStringSeq_var (CORBA_WStringSeq *);
    CORBA_WStringSeq_var (const CORBA_WStringSeq_var &); // copy constructor
    ~CORBA_WStringSeq_var (void); // destructor
    
    CORBA_WStringSeq_var &operator= (CORBA_WStringSeq *);
    CORBA_WStringSeq_var &operator= (const CORBA_WStringSeq_var &);
    CORBA_WStringSeq *operator-> (void);
    const CORBA_WStringSeq *operator-> (void) const;
    
    operator const CORBA_WStringSeq &() const;
    operator CORBA_WStringSeq &();
    operator CORBA_WStringSeq &() const;
    operator CORBA_WStringSeq *&(); // variable-size base types only
    
    TAO_SeqElem_WString_Manager operator[] (CORBA::ULong index);
    
    // in, inout, out, _retn 
    const CORBA_WStringSeq &in (void) const;
    CORBA_WStringSeq &inout (void);
    CORBA_WStringSeq *&out (void);
    CORBA_WStringSeq *_retn (void);
    CORBA_WStringSeq *ptr (void) const;

  private:
    CORBA_WStringSeq *ptr_;
  };


#endif /* end #if !defined */


#if !defined (_CORBA_WSTRINGSEQ___OUT_CH_)
#define _CORBA_WSTRINGSEQ___OUT_CH_

  class TAO_Export CORBA_WStringSeq_out
  {
  public:
    CORBA_WStringSeq_out (CORBA_WStringSeq *&);
    CORBA_WStringSeq_out (CORBA_WStringSeq_var &);
    CORBA_WStringSeq_out (const CORBA_WStringSeq_out &);
    CORBA_WStringSeq_out &operator= (const CORBA_WStringSeq_out &);
    CORBA_WStringSeq_out &operator= (CORBA_WStringSeq *);
    operator CORBA_WStringSeq *&();
    CORBA_WStringSeq *&ptr (void);
    CORBA_WStringSeq *operator-> (void);
    TAO_SeqElem_WString_Manager operator[] (CORBA::ULong index);
    
  private:
    CORBA_WStringSeq *&ptr_;
    // assignment from T_var not allowed
    void operator= (const CORBA_WStringSeq_var &);
  };


#endif /* end #if !defined */

// Proxy Broker Factory function pointer declarations.

TAO_Export void operator<<= (CORBA::Any &, const CORBA_StringSeq &); // copying version
TAO_Export void operator<<= (CORBA::Any &, CORBA_StringSeq*); // noncopying version
TAO_Export CORBA::Boolean operator>>= (const CORBA::Any &, CORBA_StringSeq *&); // deprecated
TAO_Export CORBA::Boolean operator>>= (const CORBA::Any &, const CORBA_StringSeq *&);
TAO_Export void operator<<= (CORBA::Any &, const CORBA_WStringSeq &); // copying version
TAO_Export void operator<<= (CORBA::Any &, CORBA_WStringSeq*); // noncopying version
TAO_Export CORBA::Boolean operator>>= (const CORBA::Any &, CORBA_WStringSeq *&); // deprecated
TAO_Export CORBA::Boolean operator>>= (const CORBA::Any &, const CORBA_WStringSeq *&);

#ifndef __ACE_INLINE__


#if !defined _TAO_CDR_OP_CORBA_StringSeq_H_
#define _TAO_CDR_OP_CORBA_StringSeq_H_

TAO_Export CORBA::Boolean operator<< (
    TAO_OutputCDR &,
    const CORBA_StringSeq &
  );
TAO_Export CORBA::Boolean operator>> (
    TAO_InputCDR &,
    CORBA_StringSeq &
  );

#endif /* _TAO_CDR_OP_CORBA_StringSeq_H_ */


#if !defined _TAO_CDR_OP_CORBA_WStringSeq_H_
#define _TAO_CDR_OP_CORBA_WStringSeq_H_

TAO_Export CORBA::Boolean operator<< (
    TAO_OutputCDR &,
    const CORBA_WStringSeq &
  );
TAO_Export CORBA::Boolean operator>> (
    TAO_InputCDR &,
    CORBA_WStringSeq &
  );

#endif /* _TAO_CDR_OP_CORBA_WStringSeq_H_ */


#endif /* __ACE_INLINE__ */


#if defined (__ACE_INLINE__)
#include "StringSeqC.i"
#endif /* defined INLINE */

#if defined(_MSC_VER) && (_MSC_VER >= 1200)
#pragma warning(pop)
#endif /* _MSC_VER */

#if defined (__BORLANDC__)
#pragma option pop
#endif /* __BORLANDC__ */

#include "ace/post.h"
#endif /* ifndef */
