Update of /cvsroot/objecthandler/ObjectHandler/ohxl/Conversions
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv29381/ohxl/Conversions
Modified Files:
matrixtooper.hpp opertomatrix.hpp opertoscalar.cpp
opertoscalar.hpp opertovector.hpp scalartooper.cpp
scalartooper.hpp validations.cpp validations.hpp
vectortooper.hpp
Log Message:
1) thisToThat functions' signature changed into thisToThat(const This&, That&)
2) using iterator based vectorToOper for vectorToOper(const std::vector<T> &, OPER &)
Index: scalartooper.hpp
===================================================================
RCS file: /cvsroot/objecthandler/ObjectHandler/ohxl/Conversions/scalartooper.hpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** scalartooper.hpp 19 Nov 2006 13:08:27 -0000 1.2
--- scalartooper.hpp 4 Jan 2007 11:18:36 -0000 1.3
***************
*** 26,34 ****
namespace ObjHandler {
! DLL_API void scalarToOper(OPER &xLong, const long &value);
! DLL_API void scalarToOper(OPER &xDouble, const double &value);
! DLL_API void scalarToOper(OPER &xBoolean, const bool &value);
! DLL_API void scalarToOper(OPER &xString, const std::string &value);
! DLL_API void scalarToOper(OPER &xAny, const boost::any &value);
}
--- 26,34 ----
namespace ObjHandler {
! DLL_API void scalarToOper(const long &value, OPER &xLong);
! DLL_API void scalarToOper(const double &value, OPER &xDouble);
! DLL_API void scalarToOper(const bool &value, OPER &xBoolean);
! DLL_API void scalarToOper(const std::string &value, OPER &xString);
! DLL_API void scalarToOper(const boost::any &value, OPER &xAny);
}
Index: opertomatrix.hpp
===================================================================
RCS file: /cvsroot/objecthandler/ObjectHandler/ohxl/Conversions/opertomatrix.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** opertomatrix.hpp 3 Jan 2007 17:42:02 -0000 1.6
--- opertomatrix.hpp 4 Jan 2007 11:18:36 -0000 1.7
***************
*** 51,55 ****
for (int j=0; j<xMulti->val.array.columns; ++j) {
T value;
! operToScalar(value, xMulti->val.array.lparray[i * xMulti->val.array.columns + j]);
row.push_back(value);
}
--- 51,55 ----
for (int j=0; j<xMulti->val.array.columns; ++j) {
T value;
! operToScalar(xMulti->val.array.lparray[i * xMulti->val.array.columns + j], value);
row.push_back(value);
}
Index: opertoscalar.cpp
===================================================================
RCS file: /cvsroot/objecthandler/ObjectHandler/ohxl/Conversions/opertoscalar.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** opertoscalar.cpp 20 Nov 2006 18:32:50 -0000 1.3
--- opertoscalar.cpp 4 Jan 2007 11:18:36 -0000 1.4
***************
*** 21,25 ****
namespace ObjHandler {
! DLL_API void operToScalar(long &ret, const OPER &xScalar) {
if (xScalar.xltype == xltypeNum)
ret = xScalar.val.num;
--- 21,25 ----
namespace ObjHandler {
! DLL_API void operToScalar(const OPER &xScalar, long &ret) {
if (xScalar.xltype == xltypeNum)
ret = xScalar.val.num;
***************
*** 31,35 ****
}
! DLL_API void operToScalar(double &ret, const OPER &xScalar) {
if (xScalar.xltype == xltypeNum)
ret = xScalar.val.num;
--- 31,35 ----
}
! DLL_API void operToScalar(const OPER &xScalar, double &ret) {
if (xScalar.xltype == xltypeNum)
ret = xScalar.val.num;
***************
*** 41,45 ****
}
! DLL_API void operToScalar(bool &ret, const OPER &xScalar) {
if (xScalar.xltype == xltypeBool)
ret = xScalar.val.boolean != 0;
--- 41,45 ----
}
! DLL_API void operToScalar(const OPER &xScalar, bool &ret) {
if (xScalar.xltype == xltypeBool)
ret = xScalar.val.boolean != 0;
***************
*** 51,55 ****
}
! DLL_API void operToScalar(std::string &ret, const OPER &xScalar) {
OPER xTemp;
bool needToFree = false;
--- 51,55 ----
}
! DLL_API void operToScalar(const OPER &xScalar, std::string &ret) {
OPER xTemp;
bool needToFree = false;
Index: matrixtooper.hpp
===================================================================
RCS file: /cvsroot/objecthandler/ObjectHandler/ohxl/Conversions/matrixtooper.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** matrixtooper.hpp 3 Jan 2007 14:24:30 -0000 1.3
--- matrixtooper.hpp 4 Jan 2007 11:18:36 -0000 1.4
***************
*** 25,29 ****
template <class T>
! void matrixToOper(OPER &xMatrix, const std::vector<std::vector<T> > &vv) {
if (vv.empty() || vv[0].empty()) {
xMatrix.xltype = xltypeErr;
--- 25,29 ----
template <class T>
! void matrixToOper(const std::vector<std::vector<T> > &vv, OPER &xMatrix) {
if (vv.empty() || vv[0].empty()) {
xMatrix.xltype = xltypeErr;
***************
*** 40,44 ****
std::vector<T> v = vv[i];
for (unsigned int j=0; j<v.size(); ++j)
! scalarToOper(xMatrix.val.array.lparray[i * v.size() + j], v[j]);
}
}
--- 40,44 ----
std::vector<T> v = vv[i];
for (unsigned int j=0; j<v.size(); ++j)
! scalarToOper(v[j], xMatrix.val.array.lparray[i * v.size() + j]);
}
}
Index: opertoscalar.hpp
===================================================================
RCS file: /cvsroot/objecthandler/ObjectHandler/ohxl/Conversions/opertoscalar.hpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** opertoscalar.hpp 3 Jan 2007 20:44:16 -0000 1.5
--- opertoscalar.hpp 4 Jan 2007 11:18:36 -0000 1.6
***************
*** 25,38 ****
namespace ObjHandler {
! //NANDO why are these returning void?
!
! // If they were to return the "ret" value then they would be
! // overloaded functions differing only by return type and
! // would not compile.
!
! DLL_API void operToScalar(long &ret, const OPER &xScalar);
! DLL_API void operToScalar(double &ret, const OPER &xScalar);
! DLL_API void operToScalar(bool &ret, const OPER &xScalar);
! DLL_API void operToScalar(std::string &ret, const OPER &xScalar);
template <class T>
--- 25,32 ----
namespace ObjHandler {
! DLL_API void operToScalar(const OPER &xScalar, long &ret);
! DLL_API void operToScalar(const OPER &xScalar, double &ret);
! DLL_API void operToScalar(const OPER &xScalar, bool &ret);
! DLL_API void operToScalar(const OPER &xScalar, std::string &ret);
template <class T>
***************
*** 47,51 ****
throw Exception("input value has type=error");
T returnValue;
! operToScalar(returnValue, xScalar);
return returnValue;
} catch(const std::exception &e) {
--- 41,45 ----
throw Exception("input value has type=error");
T returnValue;
! operToScalar(xScalar, returnValue);
return returnValue;
} catch(const std::exception &e) {
Index: vectortooper.hpp
===================================================================
RCS file: /cvsroot/objecthandler/ObjectHandler/ohxl/Conversions/vectortooper.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** vectortooper.hpp 3 Jan 2007 14:24:30 -0000 1.3
--- vectortooper.hpp 4 Jan 2007 11:18:36 -0000 1.4
***************
*** 1,4 ****
--- 1,5 ----
/*
+ Copyright (C) 2007 Ferdinando Ametrano
Copyright (C) 2005, 2006 Eric Ehlers
***************
*** 26,31 ****
template <class T>
! void vectorToOper(OPER &xVector, const std::vector<T> &v) {
! if (v.empty()) {
xVector.xltype = xltypeErr;
xVector.val.err = xlerrNA;
--- 27,38 ----
template <class T>
! void vectorToOper(const std::vector<T> &v, OPER &xVector) {
! vectorToOper(v.begin(), v.end(), xVector);
! }
!
! template <class T>
! inline void vectorToOper(T begin, T end, OPER &xVector) {
! std::size_t size = end-begin;
! if (size==0) {
xVector.xltype = xltypeErr;
xVector.val.err = xlerrNA;
***************
*** 34,51 ****
if (FunctionCall::instance().getCallerDimensions() == Row) {
! xVector.val.array.columns = v.size();
xVector.val.array.rows = 1;
} else {
! xVector.val.array.rows = v.size();
xVector.val.array.columns = 1;
}
! xVector.val.array.lparray = new OPER[v.size()];
if (!xVector.val.array.lparray)
throw Exception("vectorToOper: error on call to new");
xVector.xltype = xltypeMulti | xlbitDLLFree;
! for (unsigned int i=0; i<v.size(); ++i)
! scalarToOper(xVector.val.array.lparray[i], v[i]);
}
}
--- 41,59 ----
if (FunctionCall::instance().getCallerDimensions() == Row) {
! xVector.val.array.columns = size;
xVector.val.array.rows = 1;
} else {
! xVector.val.array.rows = size;
xVector.val.array.columns = 1;
}
! xVector.val.array.lparray = new OPER[size];
if (!xVector.val.array.lparray)
throw Exception("vectorToOper: error on call to new");
xVector.xltype = xltypeMulti | xlbitDLLFree;
! for (unsigned int i=0; i<size; ++i, ++begin)
! scalarToOper(*begin, xVector.val.array.lparray[i]);
}
+
}
Index: scalartooper.cpp
===================================================================
RCS file: /cvsroot/objecthandler/ObjectHandler/ohxl/Conversions/scalartooper.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** scalartooper.cpp 3 Jan 2007 17:42:52 -0000 1.3
--- scalartooper.cpp 4 Jan 2007 11:18:36 -0000 1.4
***************
*** 26,45 ****
namespace ObjHandler {
! DLL_API void scalarToOper(OPER &xLong, const long &value) {
xLong.xltype = xltypeNum;
xLong.val.num = value;
}
! DLL_API void scalarToOper(OPER &xDouble, const double &value) {
xDouble.xltype = xltypeNum;
xDouble.val.num = value;
}
! DLL_API void scalarToOper(OPER &xBoolean, const bool &value) {
xBoolean.xltype = xltypeBool;
xBoolean.val.boolean = value;
}
! DLL_API void scalarToOper(OPER &xString, const std::string &value) {
int len = __min(XL_MAX_STR_LEN, value.length());
xString.val.str = new char[ len + 1 ];
--- 26,45 ----
namespace ObjHandler {
! DLL_API void scalarToOper(const long &value, OPER &xLong) {
xLong.xltype = xltypeNum;
xLong.val.num = value;
}
! DLL_API void scalarToOper(const double &value, OPER &xDouble) {
xDouble.xltype = xltypeNum;
xDouble.val.num = value;
}
! DLL_API void scalarToOper(const bool &value, OPER &xBoolean) {
xBoolean.xltype = xltypeBool;
xBoolean.val.boolean = value;
}
! DLL_API void scalarToOper(const std::string &value, OPER &xString) {
int len = __min(XL_MAX_STR_LEN, value.length());
xString.val.str = new char[ len + 1 ];
***************
*** 52,56 ****
}
! DLL_API void scalarToOper(OPER &xAny, const boost::any &value) {
if (value.type() == typeid(OPER)) {
OPER xTemp = boost::any_cast<OPER>(value);
--- 52,56 ----
}
! DLL_API void scalarToOper(const boost::any &value, OPER &xAny) {
if (value.type() == typeid(OPER)) {
OPER xTemp = boost::any_cast<OPER>(value);
***************
*** 73,98 ****
} else if (value.type() == typeid(std::string)) {
std::string s = boost::any_cast<std::string>(value);
! scalarToOper(xAny, s);
} else if (value.type() == typeid(std::vector<long>)) {
std::vector<long> v = boost::any_cast<std::vector<long> >(value);
! vectorToOper(xAny, v);
} else if (value.type() == typeid(std::vector<double>)) {
std::vector<double> v = boost::any_cast<std::vector<double> >(value);
! vectorToOper(xAny, v);
} else if (value.type() == typeid(std::vector<bool>)) {
std::vector<bool> v = boost::any_cast<std::vector<bool> >(value);
! vectorToOper(xAny, v);
} else if (value.type() == typeid(std::vector<std::string>)) {
std::vector<std::string> v = boost::any_cast<std::vector<std::string> >(value);
! vectorToOper(xAny, v);
} else if (value.type() == typeid(std::vector<boost::any>)) {
std::vector<boost::any> v = boost::any_cast<std::vector<boost::any> >(value);
! vectorToOper(xAny, v);
} else if (value.type() == typeid(std::vector<std::vector<long> >)) {
std::vector<std::vector<long> > vv = boost::any_cast<std::vector<std::vector<long> > >(value);
! vectorToOper(xAny, vv);
} else if (value.type() == typeid(std::vector<std::vector<double> >)) {
std::vector<std::vector<double> > vv = boost::any_cast<std::vector<std::vector<double> > >(value);
! matrixToOper(xAny, vv);
//} else if (value.type() == typeid(std::vector<std::vector<bool> >)) {
// std::vector<std::vector<bool> > vv = boost::any_cast<std::vector<std::vector<bool > > >(value);
--- 73,98 ----
} else if (value.type() == typeid(std::string)) {
std::string s = boost::any_cast<std::string>(value);
! scalarToOper(s, xAny);
} else if (value.type() == typeid(std::vector<long>)) {
std::vector<long> v = boost::any_cast<std::vector<long> >(value);
! vectorToOper(v, xAny);
} else if (value.type() == typeid(std::vector<double>)) {
std::vector<double> v = boost::any_cast<std::vector<double> >(value);
! vectorToOper(v, xAny);
} else if (value.type() == typeid(std::vector<bool>)) {
std::vector<bool> v = boost::any_cast<std::vector<bool> >(value);
! vectorToOper(v, xAny);
} else if (value.type() == typeid(std::vector<std::string>)) {
std::vector<std::string> v = boost::any_cast<std::vector<std::string> >(value);
! vectorToOper(v, xAny);
} else if (value.type() == typeid(std::vector<boost::any>)) {
std::vector<boost::any> v = boost::any_cast<std::vector<boost::any> >(value);
! vectorToOper(v, xAny);
} else if (value.type() == typeid(std::vector<std::vector<long> >)) {
std::vector<std::vector<long> > vv = boost::any_cast<std::vector<std::vector<long> > >(value);
! vectorToOper(vv, xAny);
} else if (value.type() == typeid(std::vector<std::vector<double> >)) {
std::vector<std::vector<double> > vv = boost::any_cast<std::vector<std::vector<double> > >(value);
! matrixToOper(vv, xAny);
//} else if (value.type() == typeid(std::vector<std::vector<bool> >)) {
// std::vector<std::vector<bool> > vv = boost::any_cast<std::vector<std::vector<bool > > >(value);
***************
*** 102,109 ****
} else if (value.type() == typeid(std::vector<std::vector<std::string> >)) {
std::vector<std::vector<std::string> > vv = boost::any_cast<std::vector<std::vector<std::string> > >(value);
! matrixToOper(xAny, vv);
} else if (value.type() == typeid(std::vector<std::vector<boost::any> >)) {
std::vector<std::vector<boost::any> > vv = boost::any_cast<std::vector<std::vector<boost::any> > >(value);
! matrixToOper(xAny, vv);
} else {
xAny.xltype = xltypeErr;
--- 102,109 ----
} else if (value.type() == typeid(std::vector<std::vector<std::string> >)) {
std::vector<std::vector<std::string> > vv = boost::any_cast<std::vector<std::vector<std::string> > >(value);
! matrixToOper(vv, xAny);
} else if (value.type() == typeid(std::vector<std::vector<boost::any> >)) {
std::vector<std::vector<boost::any> > vv = boost::any_cast<std::vector<std::vector<boost::any> > >(value);
! matrixToOper(vv, xAny);
} else {
xAny.xltype = xltypeErr;
Index: opertovector.hpp
===================================================================
RCS file: /cvsroot/objecthandler/ObjectHandler/ohxl/Conversions/opertovector.hpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** opertovector.hpp 3 Jan 2007 20:41:33 -0000 1.5
--- opertovector.hpp 4 Jan 2007 11:18:36 -0000 1.6
***************
*** 48,52 ****
for (int i=0; i<xMulti->val.array.rows * xMulti->val.array.columns; ++i) {
T value;
! operToScalar(value, xMulti->val.array.lparray[i]);
ret.push_back(value);
}
--- 48,52 ----
for (int i=0; i<xMulti->val.array.rows * xMulti->val.array.columns; ++i) {
T value;
! operToScalar(xMulti->val.array.lparray[i], value);
ret.push_back(value);
}
***************
*** 65,73 ****
}
- //NANDO what are FP?
-
- // FP stands for floating point and is a structure
- // defined in the Excel API.
-
template <class T>
std::vector<T> fpToVector(const FP &fpVector) {
--- 65,68 ----
Index: validations.hpp
===================================================================
RCS file: /cvsroot/objecthandler/ObjectHandler/ohxl/Conversions/validations.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** validations.hpp 8 Dec 2006 14:46:12 -0000 1.3
--- validations.hpp 4 Jan 2007 11:18:36 -0000 1.4
***************
*** 26,30 ****
DLL_API void validateRange(const OPER *xRange, const std::string &name);
! DLL_API void stringToChar(char *c, const std::string &s);
}
--- 26,30 ----
DLL_API void validateRange(const OPER *xRange, const std::string &name);
! DLL_API void stringToChar(const std::string &s, char *c);
}
Index: validations.cpp
===================================================================
RCS file: /cvsroot/objecthandler/ObjectHandler/ohxl/Conversions/validations.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** validations.cpp 3 Jan 2007 14:24:30 -0000 1.4
--- validations.cpp 4 Jan 2007 11:18:36 -0000 1.5
***************
*** 44,48 ****
}
! DLL_API void stringToChar(char *c, const std::string &value) {
int len = __min(XL_MAX_STR_LEN - 1, value.length());
strncpy(c, value.c_str(), len);
--- 44,48 ----
}
! DLL_API void stringToChar(const std::string &value, char *c) {
int len = __min(XL_MAX_STR_LEN - 1, value.length());
strncpy(c, value.c_str(), len);
|