Update of /cvsroot/objecthandler/ObjectHandler/ohxl/Register
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv31124/ohxl/Register
Modified Files:
.cvsignore
Added Files:
register_manual.cpp
Log Message:
cleaner implementation for ohPack/ohParseFields
Index: .cvsignore
===================================================================
RCS file: /cvsroot/objecthandler/ObjectHandler/ohxl/Register/.cvsignore,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** .cvsignore 2 Oct 2006 12:31:17 -0000 1.1
--- .cvsignore 3 Oct 2006 09:32:37 -0000 1.2
***************
*** 1 ****
! *.*
--- 1,3 ----
! addin.cpp
! register_all.hpp
! register_functions.cpp
--- NEW FILE: register_manual.cpp ---
/*
Copyright (C) 2006 Eric Ehlers
This file is part of QuantLib, a free-software/open-source library
for financial quantitative analysts and developers - http://quantlib.org/
QuantLib is free software: you can redistribute it and/or modify it under the
terms of the QuantLib license. You should have received a copy of the
license along with this program; if not, please email qua...@li...
The license is also available online at http://quantlib.org/html/license.html
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the license for more details.
*/
// Excel functions coded by hand, to be registered with Excel
// alongside the autogenerated functions.
#include <xlsdk/xlsdkdefines.hpp>
void registerOhManual(const XLOPER &xDll) {
Excel(xlfRegister, 0, 21, &xDll,
// function code name
TempStrNoSize("\x0B""ohDependsOn"),
// parameter codes
TempStrNoSize("\x0D""NPPPPPPPPPPP#"),
// function display name
TempStrNoSize("\x0B""ohDependsOn"),
// comma-delimited list of parameter names
TempStrNoSize("\x4D""dummy0,dummy1,dummy2,dummy3,dummy4,dummy5,dummy6,dummy7,dummy8,dummy9,trigger"),
// function type (0 = hidden, 1 = worksheet)
TempStrNoSize("\x01""1"),
// function category
TempStrNoSize("\x0D""ObjectHandler"),
// shortcut text (command macros only)
TempStrNoSize("\x00"""),
// path to help file
TempStrNoSize("\x00"""),
// function description
TempStrNoSize("\x48""forces a dependency between two functions and returns the update counter"),
TempStrNoSize("\x06""dummy0"),
TempStrNoSize("\x06""dummy1"),
TempStrNoSize("\x06""dummy2"),
TempStrNoSize("\x06""dummy3"),
TempStrNoSize("\x06""dummy4"),
TempStrNoSize("\x06""dummy5"),
TempStrNoSize("\x06""dummy6"),
TempStrNoSize("\x06""dummy7"),
TempStrNoSize("\x06""dummy8"),
TempStrNoSize("\x06""dummy9"),
TempStrNoSize("\x09""trigger "));
Excel(xlfRegister, 0, 10, &xDll,
// function code name
TempStrNoSize("\x0F""ohFunctionCount"),
// parameter codes
TempStrNoSize("\x02""N#"),
// function display name
TempStrNoSize("\x0F""ohFunctionCount"),
// comma-delimited list of parameter names
TempStrNoSize("\x00"""),
// function type (0 = hidden, 1 = worksheet)
TempStrNoSize("\x01""1"),
// function category
TempStrNoSize("\x0D""ObjectHandler"),
// shortcut text (command macros only)
TempStrNoSize("\x00"""),
// path to help file
TempStrNoSize("\x00"""),
// function description
TempStrNoSize("\x2F""returns the number of functions in this addin "));
Excel(xlfRegister, 0, 11, &xDll,
TempStrNoSize("\x06""ohPack"), // function code name
TempStrNoSize("\x03""RP#"), // parameter codes
TempStrNoSize("\x06""ohPack"), // function display name
TempStrNoSize("\x10""inputRange"), // comma-delimited list of parameter names
TempStrNoSize("\x01""1"), // function type (1 = worksheet function)
TempStrNoSize("\x0D""ObjectHandler"), // function category
TempStrNoSize("\x00"""), // shortcut text (command macros only)
TempStrNoSize("\x00"""), // path to help file
TempStrNoSize("\x3D""trim #ERR/empty values from bottom/right edges of input range"), // function description
TempStrNoSize("\x1D""range of cells to be packed ")); // description of parameter 1
Excel(xlfRegister, 0, 14, &xDll,
TempStrNoSize("\x0C""ohParseField"), // function code name
TempStrNoSize("\x06""RCNCP#"), // parameter codes
TempStrNoSize("\x0C""ohParseField"), // function display name
TempStrNoSize("\x19""line,index,type,delimiter"), // comma-delimited list of parameter names
TempStrNoSize("\x01""1"), // function type (1 = worksheet function)
TempStrNoSize("\x0D""ObjectHandler"), // function category
TempStrNoSize("\x00"""), // shortcut text (command macros only)
TempStrNoSize("\x00"""), // path to help file
TempStrNoSize("\x41""Extract the ith number from a whitespace-delimited list of fields"), // function description
TempStrNoSize("\x11""text to be parsed"), // description of parameter 1
TempStrNoSize("\x20""index (1-based) of desired field"), // description of parameter 2
TempStrNoSize("\x21""required datatype (string/number)"), // description of parameter 3
TempStrNoSize("\x29""field delimiter (default is whitespace) ")); // description of parameter 3
}
void unregisterOhManual(const XLOPER &xDll) {
XLOPER xlRegID;
// Unregister each function. Due to a bug in Excel's C API this is a
// two-step process. Thanks to Laurent Longre for discovering the
// workaround implemented here.
Excel(xlfRegister, 0, 21, &xDll,
// function code name
TempStrNoSize("\x0B""ohDependsOn"),
// parameter codes
TempStrNoSize("\x0D""NPPPPPPPPPPP#"),
// function display name
TempStrNoSize("\x0B""ohDependsOn"),
// comma-delimited list of parameter names
TempStrNoSize("\x4D""dummy0,dummy1,dummy2,dummy3,dummy4,dummy5,dummy6,dummy7,dummy8,dummy9,trigger"),
// function type (0 = hidden, 1 = worksheet)
TempStrNoSize("\x01""0"),
// function category
TempStrNoSize("\x0D""ObjectHandler"),
// shortcut text (command macros only)
TempStrNoSize("\x00"""),
// path to help file
TempStrNoSize("\x00"""),
// function description
TempStrNoSize("\x48""forces a dependency between two functions and returns the update counter"),
TempStrNoSize("\x06""dummy0"),
TempStrNoSize("\x06""dummy1"),
TempStrNoSize("\x06""dummy2"),
TempStrNoSize("\x06""dummy3"),
TempStrNoSize("\x06""dummy4"),
TempStrNoSize("\x06""dummy5"),
TempStrNoSize("\x06""dummy6"),
TempStrNoSize("\x06""dummy7"),
TempStrNoSize("\x06""dummy8"),
TempStrNoSize("\x06""dummy9"),
TempStrNoSize("\x09""trigger "));
Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
TempStrNoSize("\x0B""ohDependsOn"));
Excel4(xlfUnregister, 0, 1, &xlRegID);
Excel(xlfRegister, 0, 10, &xDll,
// function code name
TempStrNoSize("\x0F""ohFunctionCount"),
// parameter codes
TempStrNoSize("\x02""N#"),
// function display name
TempStrNoSize("\x0F""ohFunctionCount"),
// comma-delimited list of parameter names
TempStrNoSize("\x00"""),
// function type (0 = hidden, 1 = worksheet)
TempStrNoSize("\x01""0"),
// function category
TempStrNoSize("\x0D""ObjectHandler"),
// shortcut text (command macros only)
TempStrNoSize("\x00"""),
// path to help file
TempStrNoSize("\x00"""),
// function description
TempStrNoSize("\x2F""returns the number of functions in this addin "));
Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
TempStrNoSize("\x0F""ohFunctionCount"));
Excel4(xlfUnregister, 0, 1, &xlRegID);
Excel(xlfRegister, 0, 11, &xDll,
TempStrNoSize("\x06""ohPack"), // function code name
TempStrNoSize("\x03""RP#"), // parameter codes
TempStrNoSize("\x06""ohPack"), // function display name
TempStrNoSize("\x10""inputRange"), // comma-delimited list of parameter names
TempStrNoSize("\x01""0"), // function type (0 = hidden function)
TempStrNoSize("\x0D""ObjectHandler"), // function category
TempStrNoSize("\x00"""), // shortcut text (command macros only)
TempStrNoSize("\x00"""), // path to help file
TempStrNoSize("\x3D""trim #ERR/empty values from bottom/right edges of input range"), // function description
TempStrNoSize("\x1D""range of cells to be packed ")); // description of parameter 1
Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
TempStrNoSize("\x06""ohPack")); // function code name
Excel4(xlfUnregister, 0, 1, &xlRegID);
Excel(xlfRegister, 0, 14, &xDll,
TempStrNoSize("\x0C""ohParseField"), // function code name
TempStrNoSize("\x06""RCNCP#"), // parameter codes
TempStrNoSize("\x0C""ohParseField"), // function display name
TempStrNoSize("\x19""line,index,type,delimiter"), // comma-delimited list of parameter names
TempStrNoSize("\x01""0"), // function type (0 = hidden function)
TempStrNoSize("\x0D""ObjectHandler"), // function category
TempStrNoSize("\x00"""), // shortcut text (command macros only)
TempStrNoSize("\x00"""), // path to help file
TempStrNoSize("\x41""Extract the ith number from a whitespace-delimited list of fields"), // function description
TempStrNoSize("\x11""text to be parsed"), // description of parameter 1
TempStrNoSize("\x20""index (1-based) of desired field"), // description of parameter 2
TempStrNoSize("\x21""required datatype (string/number)"), // description of parameter 3
TempStrNoSize("\x29""field delimiter (default is whitespace) ")); // description of parameter 3
Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
TempStrNoSize("\x0C""ohParseField")); // function code name
Excel4(xlfUnregister, 0, 1, &xlRegID);
}
|