summaryrefslogtreecommitdiff
path: root/TAO/tao/Var_Size_Argument_T.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/Var_Size_Argument_T.cpp')
-rw-r--r--TAO/tao/Var_Size_Argument_T.cpp101
1 files changed, 101 insertions, 0 deletions
diff --git a/TAO/tao/Var_Size_Argument_T.cpp b/TAO/tao/Var_Size_Argument_T.cpp
new file mode 100644
index 00000000000..0445fa652f3
--- /dev/null
+++ b/TAO/tao/Var_Size_Argument_T.cpp
@@ -0,0 +1,101 @@
+// $Id$
+
+#ifndef TAO_VAR_SIZE_ARGUMENT_T_C
+#define TAO_VAR_SIZE_ARGUMENT_T_C
+
+#include "tao/Var_Size_Argument_T.h"
+#include "tao/Dynamic_ParameterC.h"
+
+#if !defined (__ACE_INLINE__)
+#include "tao/Var_Size_Argument_T.inl"
+#endif /* __ACE_INLINE__ */
+
+ACE_RCSID (tao,
+ Var_Size_Argument_T,
+ "$Id$")
+
+template<typename S>
+CORBA::Boolean
+TAO::In_Var_Size_Argument_T<S>::marshal (TAO_OutputCDR & cdr)
+{
+ return cdr << *this->x_;
+}
+
+template<typename S>
+void
+TAO::In_Var_Size_Argument_T<S>::interceptor_param (Dynamic::Parameter & p)
+{
+ p.argument <<= *this->x_;
+ p.mode = CORBA::PARAM_IN;
+}
+
+// ===========================================================
+
+template<typename S>
+CORBA::Boolean
+TAO::Inout_Var_Size_Argument_T<S>::marshal (TAO_OutputCDR & cdr)
+{
+ return cdr << *this->x_;
+}
+
+template<typename S>
+CORBA::Boolean
+TAO::Inout_Var_Size_Argument_T<S>::demarshal (TAO_InputCDR & cdr)
+{
+ return cdr >> *this->x_;
+}
+
+template<typename S>
+void
+TAO::Inout_Var_Size_Argument_T<S>::interceptor_param (Dynamic::Parameter & p)
+{
+ p.argument <<= *this->x_;
+ p.mode = CORBA::PARAM_INOUT;
+}
+
+// ==============================================================
+
+template<typename S, typename S_out>
+CORBA::Boolean
+TAO::Out_Var_Size_Argument_T<S,S_out>::demarshal (TAO_InputCDR & cdr)
+{
+ this->x_ = new S;
+
+ /*ACE_NEW_RETURN (this->x_,
+ S,
+ 0); */
+ return cdr >> *this->x_;
+}
+
+template<typename S, typename S_out>
+void
+TAO::Out_Var_Size_Argument_T<S,S_out>::interceptor_param (
+ Dynamic::Parameter & p
+ )
+{
+ p.argument <<= *this->x_;
+ p.mode = CORBA::PARAM_OUT;
+}
+
+// ============================================================
+
+template<typename S, typename S_var>
+CORBA::Boolean
+TAO::Ret_Var_Size_Argument_T<S,S_var>::demarshal (TAO_InputCDR & cdr)
+{
+ S * tmp = 0;
+ ACE_NEW_RETURN (tmp,
+ S (),
+ 0);
+ this->x_ = tmp;
+ return cdr >> this->x_.inout ();
+}
+
+template<typename S, typename S_var>
+void
+TAO::Ret_Var_Size_Argument_T<S,S_var>::interceptor_result (CORBA::Any * any)
+{
+ (*any) <<= this->x_.in ();
+}
+
+#endif /* TAO_VAR_SIZE_ARGUMENT_T_C */