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