00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00035 #ifndef OWBI1_CIM_DETAIL_HPP_INCLUDE_GUARD_
00036 #define OWBI1_CIM_DETAIL_HPP_INCLUDE_GUARD_
00037
00038 #include "OWBI1_config.h"
00039 #include "OW_Types.hpp"
00040
00041
00042
00043 namespace OWBI1
00044 {
00045
00046 namespace detail
00047 {
00048
00049 template <typename T>
00050 struct getRepT
00051 {
00052 typedef void type;
00053 };
00054
00055 template <>
00056 struct getRepT<CIMObjectPath>
00057 {
00058 typedef CIMObjectPathRep type;
00059 };
00060
00061 template <>
00062 struct getRepT<CIMDateTime>
00063 {
00064 typedef CIMDateTimeRep type;
00065 };
00066
00067 template <>
00068 struct getRepT<CIMClass>
00069 {
00070 typedef CIMClassRep type;
00071 };
00072
00073 template <>
00074 struct getRepT<CIMInstance>
00075 {
00076 typedef CIMInstanceRep type;
00077 };
00078
00079 template <>
00080 struct getRepT<CIMFlavor>
00081 {
00082 typedef CIMFlavorRep type;
00083 };
00084
00085 template <>
00086 struct getRepT<CIMScope>
00087 {
00088 typedef CIMScopeRep type;
00089 };
00090
00091 template <>
00092 struct getRepT<CIMQualifier>
00093 {
00094 typedef CIMQualifierRep type;
00095 };
00096
00098 template <typename T1, typename T2>
00099 void unwrapArray(T1& out, const T2& in)
00100 {
00101 out.resize(in.size());
00102 for (size_t i = 0; i < in.size(); ++i)
00103 {
00104 out[i] = getOWObj(*in[i].getRep());
00105 }
00106 }
00107
00109 template <typename T1, typename T2>
00110 T1 unwrapArray(const T2& in)
00111 {
00112 T1 rv(in.size());
00113 for (size_t i = 0; i < in.size(); ++i)
00114 {
00115 rv[i] = getOWObj(*in[i].getRep());
00116 }
00117 return rv;
00118 }
00119
00121 template <typename T1, typename T2>
00122 void wrapArray(T1& out, const T2& in)
00123 {
00124 out.resize(in.size());
00125 for (size_t i = 0; i < in.size(); ++i)
00126 {
00127 typedef typename getRepT<typename T1::value_type>::type rep_t;
00128 out[i] = typename T1::value_type(new rep_t(in[i]));
00129 }
00130 }
00131
00133 template <typename T1, typename T2>
00134 T1 wrapArray(const T2& in)
00135 {
00136 T1 rv(in.size());
00137 wrapArray(rv, in);
00138 return rv;
00139 }
00140
00141 }
00142
00143 }
00144
00145 #endif
00146
00147