Update of /cvsroot/objecthandler/ObjectHandler/ohxl/Functions
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv10559/ohxl/Functions
Modified Files:
manual.cpp
Log Message:
implement ohDependsOn2() as a possible replacement for ohDependsOn()
Index: manual.cpp
===================================================================
RCS file: /cvsroot/objecthandler/ObjectHandler/ohxl/Functions/manual.cpp,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** manual.cpp 5 Dec 2006 11:55:18 -0000 1.10
--- manual.cpp 8 Dec 2006 14:46:13 -0000 1.11
***************
*** 59,62 ****
--- 59,72 ----
}
+ void validateReference(const XLOPER *xReference, const std::string &name) {
+ if (xReference->xltype != xltypeMissing
+ && xReference->xltype != xltypeRef
+ && xReference->xltype != xltypeSRef) {
+ std::ostringstream msg;
+ msg << "parameter '" << name << "' is not a valid range reference";
+ throw ObjHandler::Exception(msg.str());
+ }
+ }
+
XLL_DEC long *ohDependsOn(
XLOPER *dummy0,
***************
*** 85,99 ****
ObjHandler::ObjectHandlerXL::instance().resetCaller();
! // invoke the utility function
! ObjHandler::validateReference(dummy0, "dummy0");
! ObjHandler::validateReference(dummy1, "dummy1");
! ObjHandler::validateReference(dummy2, "dummy2");
! ObjHandler::validateReference(dummy3, "dummy3");
! ObjHandler::validateReference(dummy4, "dummy4");
! ObjHandler::validateReference(dummy5, "dummy5");
! ObjHandler::validateReference(dummy6, "dummy6");
! ObjHandler::validateReference(dummy7, "dummy7");
! ObjHandler::validateReference(dummy8, "dummy8");
! ObjHandler::validateReference(dummy9, "dummy9");
static std::map<std::string, long> iterators;
--- 95,108 ----
ObjHandler::ObjectHandlerXL::instance().resetCaller();
! validateReference(dummy0, "dummy0");
! validateReference(dummy1, "dummy1");
! validateReference(dummy2, "dummy2");
! validateReference(dummy3, "dummy3");
! validateReference(dummy4, "dummy4");
! validateReference(dummy5, "dummy5");
! validateReference(dummy6, "dummy6");
! validateReference(dummy7, "dummy7");
! validateReference(dummy8, "dummy8");
! validateReference(dummy9, "dummy9");
static std::map<std::string, long> iterators;
***************
*** 111,114 ****
--- 120,163 ----
}
+ void validateReference2(const XLOPER *xReference, const std::string &name) {
+ if (xReference->xltype == xltypeErr && xReference->val.err == xlerrRef) {
+ std::ostringstream msg;
+ msg << "parameter '" << name << "' is not a valid range reference";
+ throw ObjHandler::Exception(msg.str());
+ }
+ }
+
+ XLL_DEC long *ohDependsOn2(
+ XLOPER *dummy0,
+ XLOPER *dummy1,
+ XLOPER *dummy2,
+ XLOPER *dummy3,
+ XLOPER *dummy4,
+ XLOPER *dummy5,
+ XLOPER *dummy6,
+ XLOPER *dummy7,
+ XLOPER *dummy8,
+ XLOPER *dummy9) {
+ try {
+ validateReference2(dummy0, "dummy0");
+ validateReference2(dummy1, "dummy1");
+ validateReference2(dummy2, "dummy2");
+ validateReference2(dummy3, "dummy3");
+ validateReference2(dummy4, "dummy4");
+ validateReference2(dummy5, "dummy5");
+ validateReference2(dummy6, "dummy6");
+ validateReference2(dummy7, "dummy7");
+ validateReference2(dummy8, "dummy8");
+ validateReference2(dummy9, "dummy9");
+
+ static long returnValue = 0;
+ returnValue++;
+ return &returnValue;
+ } catch (const std::exception &e) {
+ ObjHandler::logMessage(e.what(), 2);
+ return 0;
+ }
+ }
+
XLL_DEC long *ohFunctionCount() {
static long returnValue = FUNCTION_COUNT;
|