00001 // -*- C++ -*- 00002 00003 //============================================================================= 00004 /** 00005 * @file Seq_Out_T.h 00006 * 00007 * $Id: Seq_Out_T.h 90386 2010-06-02 13:52:08Z vzykov $ 00008 * 00009 * @author Jeff Parsons 00010 */ 00011 //============================================================================= 00012 00013 #ifndef TAO_SEQ_OUT_T_H 00014 #define TAO_SEQ_OUT_T_H 00015 #include /**/ "ace/pre.h" 00016 00017 #include /**/ "tao/Versioned_Namespace.h" 00018 00019 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00020 # pragma once 00021 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00022 00023 #include "tao/Basic_Types.h" 00024 00025 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00026 00027 /** 00028 * @class TAO_Seq_Out_T 00029 * 00030 * @brief Parametrized implementation of _out class for sequences. 00031 * 00032 */ 00033 template <typename T> 00034 class TAO_Seq_Out_T 00035 { 00036 public: 00037 typedef typename T::subscript_type T_elem; 00038 typedef typename T::_var_type T_var; 00039 00040 TAO_Seq_Out_T (T *&); 00041 TAO_Seq_Out_T (T_var &); 00042 TAO_Seq_Out_T (const TAO_Seq_Out_T<T> &); 00043 00044 TAO_Seq_Out_T &operator= (const TAO_Seq_Out_T<T> &); 00045 TAO_Seq_Out_T &operator= (T *); 00046 00047 operator T *& (); 00048 T * operator-> (void); 00049 00050 T_elem operator[] (CORBA::ULong index); 00051 T *& ptr (void); 00052 00053 private: 00054 T *& ptr_; 00055 // Assignment from T_var not allowed. 00056 void operator= (const T_var &); 00057 }; 00058 00059 TAO_END_VERSIONED_NAMESPACE_DECL 00060 00061 #if defined (__ACE_INLINE__) 00062 #include "tao/Seq_Out_T.inl" 00063 #endif /* defined INLINE */ 00064 00065 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE) 00066 #include "tao/Seq_Out_T.cpp" 00067 #endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ 00068 00069 #if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) 00070 #pragma implementation ("Seq_Out_T.cpp") 00071 #endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ 00072 00073 #include /**/ "ace/post.h" 00074 #endif /* TAO_SEQ_OUT_T_H */