void unregisterEvolutiondescription(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, 16, &xDll,
            // function code name
            TempStrNoSize("\x16""qlEvolutionDescription"),
            // parameter codes
            TempStrNoSize("\x08""CCPPPPL#"),
            // function display name
            TempStrNoSize("\x16""qlEvolutionDescription"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x3D""ObjectId,RateTimes,EvolutionTimes,Permanent,Trigger,Overwrite"),
            // function type (0 = hidden, 1 = worksheet)
            TempStrNoSize("\x01""0"),
            // function category
            TempStrNoSize("\x14""QuantLib - Financial"),
            // shortcut text (command macros only)
            TempStrNoSize("\x00"""),
            // path to help file
            TempStrNoSize("\x00"""),
            // function description
            TempStrNoSize("\x43""Construct an object of class EvolutionDescription and return its id"),
            // parameter descriptions
            TempStrNoSize("\x1A""id of object to be created"),
            TempStrNoSize("\x12""rate fixing times."),
            TempStrNoSize("\x22""evolution times in the simulation."),
            TempStrNoSize("\x1D""object permanent/nonpermanent"),
            TempStrNoSize("\x1B""dependency tracking trigger"),
            TempStrNoSize("\x10""overwrite flag  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x16""qlEvolutionDescription"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 12, &xDll,
            // function code name
            TempStrNoSize("\x24""qlEvolutionDescriptionEvolutionTimes"),
            // parameter codes
            TempStrNoSize("\x04""PCP#"),
            // function display name
            TempStrNoSize("\x24""qlEvolutionDescriptionEvolutionTimes"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x10""ObjectId,Trigger"),
            // function type (0 = hidden, 1 = worksheet)
            TempStrNoSize("\x01""0"),
            // function category
            TempStrNoSize("\x14""QuantLib - Financial"),
            // shortcut text (command macros only)
            TempStrNoSize("\x00"""),
            // path to help file
            TempStrNoSize("\x00"""),
            // function description
            TempStrNoSize("\x34""evolution times for the EvolutionDescription object."),
            // parameter descriptions
            TempStrNoSize("\x34""id of existing QuantLib::EvolutionDescription object"),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x24""qlEvolutionDescriptionEvolutionTimes"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 12, &xDll,
            // function code name
            TempStrNoSize("\x24""qlEvolutionDescriptionFirstAliveRate"),
            // parameter codes
            TempStrNoSize("\x04""PCP#"),
            // function display name
            TempStrNoSize("\x24""qlEvolutionDescriptionFirstAliveRate"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x10""ObjectId,Trigger"),
            // function type (0 = hidden, 1 = worksheet)
            TempStrNoSize("\x01""0"),
            // function category
            TempStrNoSize("\x14""QuantLib - Financial"),
            // shortcut text (command macros only)
            TempStrNoSize("\x00"""),
            // path to help file
            TempStrNoSize("\x00"""),
            // function description
            TempStrNoSize("\x4C""first alive rate at each evolution time for the EvolutionDescription object."),
            // parameter descriptions
            TempStrNoSize("\x34""id of existing QuantLib::EvolutionDescription object"),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x24""qlEvolutionDescriptionFirstAliveRate"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 15, &xDll,
            // function code name
            TempStrNoSize("\x21""qlEvolutionDescriptionFromProduct"),
            // parameter codes
            TempStrNoSize("\x07""CCCPPL#"),
            // function display name
            TempStrNoSize("\x21""qlEvolutionDescriptionFromProduct"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x2C""ObjectId,Product,Permanent,Trigger,Overwrite"),
            // function type (0 = hidden, 1 = worksheet)
            TempStrNoSize("\x01""0"),
            // function category
            TempStrNoSize("\x14""QuantLib - Financial"),
            // shortcut text (command macros only)
            TempStrNoSize("\x00"""),
            // path to help file
            TempStrNoSize("\x00"""),
            // function description
            TempStrNoSize("\x43""Construct an object of class EvolutionDescription and return its id"),
            // parameter descriptions
            TempStrNoSize("\x1A""id of object to be created"),
            TempStrNoSize("\x15""ID of product object."),
            TempStrNoSize("\x1D""object permanent/nonpermanent"),
            TempStrNoSize("\x1B""dependency tracking trigger"),
            TempStrNoSize("\x10""overwrite flag  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x21""qlEvolutionDescriptionFromProduct"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 12, &xDll,
            // function code name
            TempStrNoSize("\x23""qlEvolutionDescriptionNumberOfRates"),
            // parameter codes
            TempStrNoSize("\x04""NCP#"),
            // function display name
            TempStrNoSize("\x23""qlEvolutionDescriptionNumberOfRates"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x10""ObjectId,Trigger"),
            // function type (0 = hidden, 1 = worksheet)
            TempStrNoSize("\x01""0"),
            // function category
            TempStrNoSize("\x14""QuantLib - Financial"),
            // shortcut text (command macros only)
            TempStrNoSize("\x00"""),
            // path to help file
            TempStrNoSize("\x00"""),
            // function description
            TempStrNoSize("\x34""number of rates for the EvolutionDescription object."),
            // parameter descriptions
            TempStrNoSize("\x34""id of existing QuantLib::EvolutionDescription object"),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x23""qlEvolutionDescriptionNumberOfRates"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 12, &xDll,
            // function code name
            TempStrNoSize("\x23""qlEvolutionDescriptionNumberOfSteps"),
            // parameter codes
            TempStrNoSize("\x04""NCP#"),
            // function display name
            TempStrNoSize("\x23""qlEvolutionDescriptionNumberOfSteps"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x10""ObjectId,Trigger"),
            // function type (0 = hidden, 1 = worksheet)
            TempStrNoSize("\x01""0"),
            // function category
            TempStrNoSize("\x14""QuantLib - Financial"),
            // shortcut text (command macros only)
            TempStrNoSize("\x00"""),
            // path to help file
            TempStrNoSize("\x00"""),
            // function description
            TempStrNoSize("\x34""number of steps for the EvolutionDescription object."),
            // parameter descriptions
            TempStrNoSize("\x34""id of existing QuantLib::EvolutionDescription object"),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x23""qlEvolutionDescriptionNumberOfSteps"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 12, &xDll,
            // function code name
            TempStrNoSize("\x1E""qlEvolutionDescriptionRateTaus"),
            // parameter codes
            TempStrNoSize("\x04""PCP#"),
            // function display name
            TempStrNoSize("\x1E""qlEvolutionDescriptionRateTaus"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x10""ObjectId,Trigger"),
            // function type (0 = hidden, 1 = worksheet)
            TempStrNoSize("\x01""0"),
            // function category
            TempStrNoSize("\x14""QuantLib - Financial"),
            // shortcut text (command macros only)
            TempStrNoSize("\x00"""),
            // path to help file
            TempStrNoSize("\x00"""),
            // function description
            TempStrNoSize("\x2E""rate taus for the EvolutionDescription object."),
            // parameter descriptions
            TempStrNoSize("\x34""id of existing QuantLib::EvolutionDescription object"),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x1E""qlEvolutionDescriptionRateTaus"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 12, &xDll,
            // function code name
            TempStrNoSize("\x1F""qlEvolutionDescriptionRateTimes"),
            // parameter codes
            TempStrNoSize("\x04""PCP#"),
            // function display name
            TempStrNoSize("\x1F""qlEvolutionDescriptionRateTimes"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x10""ObjectId,Trigger"),
            // function type (0 = hidden, 1 = worksheet)
            TempStrNoSize("\x01""0"),
            // function category
            TempStrNoSize("\x14""QuantLib - Financial"),
            // shortcut text (command macros only)
            TempStrNoSize("\x00"""),
            // path to help file
            TempStrNoSize("\x00"""),
            // function description
            TempStrNoSize("\x37""rates fixing times for the EvolutionDescription object."),
            // parameter descriptions
            TempStrNoSize("\x34""id of existing QuantLib::EvolutionDescription object"),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x1F""qlEvolutionDescriptionRateTimes"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 13, &xDll,
            // function code name
            TempStrNoSize("\x18""qlIsInMoneyMarketMeasure"),
            // parameter codes
            TempStrNoSize("\x05""LCPP#"),
            // function display name
            TempStrNoSize("\x18""qlIsInMoneyMarketMeasure"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x27""EvolutionDescription,Numeraires,Trigger"),
            // function type (0 = hidden, 1 = worksheet)
            TempStrNoSize("\x01""0"),
            // function category
            TempStrNoSize("\x14""QuantLib - Financial"),
            // shortcut text (command macros only)
            TempStrNoSize("\x00"""),
            // path to help file
            TempStrNoSize("\x00"""),
            // function description
            TempStrNoSize("\x67""Returns TRUE if the numeraire vector is money market measure for the given EvolutionDescription object."),
            // parameter descriptions
            TempStrNoSize("\x22""ID of EvolutionDescription object."),
            TempStrNoSize("\x15""vector of numeraires."),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x18""qlIsInMoneyMarketMeasure"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 14, &xDll,
            // function code name
            TempStrNoSize("\x1C""qlIsInMoneyMarketPlusMeasure"),
            // parameter codes
            TempStrNoSize("\x06""LCPPP#"),
            // function display name
            TempStrNoSize("\x1C""qlIsInMoneyMarketPlusMeasure"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x2E""EvolutionDescription,Numeraires,Offset,Trigger"),
            // function type (0 = hidden, 1 = worksheet)
            TempStrNoSize("\x01""0"),
            // function category
            TempStrNoSize("\x14""QuantLib - Financial"),
            // shortcut text (command macros only)
            TempStrNoSize("\x00"""),
            // path to help file
            TempStrNoSize("\x00"""),
            // function description
            TempStrNoSize("\x6C""Returns TRUE if the numeraire vector is money market measure plus for the given EvolutionDescription object."),
            // parameter descriptions
            TempStrNoSize("\x22""ID of EvolutionDescription object."),
            TempStrNoSize("\x15""vector of numeraires."),
            TempStrNoSize("\x3D""offset applied to the MoneyMarket measure. Default value = 1."),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x1C""qlIsInMoneyMarketPlusMeasure"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 13, &xDll,
            // function code name
            TempStrNoSize("\x15""qlIsInTerminalMeasure"),
            // parameter codes
            TempStrNoSize("\x05""LCPP#"),
            // function display name
            TempStrNoSize("\x15""qlIsInTerminalMeasure"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x27""EvolutionDescription,Numeraires,Trigger"),
            // function type (0 = hidden, 1 = worksheet)
            TempStrNoSize("\x01""0"),
            // function category
            TempStrNoSize("\x14""QuantLib - Financial"),
            // shortcut text (command macros only)
            TempStrNoSize("\x00"""),
            // path to help file
            TempStrNoSize("\x00"""),
            // function description
            TempStrNoSize("\x63""Returns TRUE if the numeraire vector is Terminal measure for the given EvolutionDescription object."),
            // parameter descriptions
            TempStrNoSize("\x22""ID of EvolutionDescription object."),
            TempStrNoSize("\x15""vector of numeraires."),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x15""qlIsInTerminalMeasure"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 12, &xDll,
            // function code name
            TempStrNoSize("\x14""qlMoneyMarketMeasure"),
            // parameter codes
            TempStrNoSize("\x04""PCP#"),
            // function display name
            TempStrNoSize("\x14""qlMoneyMarketMeasure"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x1C""EvolutionDescription,Trigger"),
            // function type (0 = hidden, 1 = worksheet)
            TempStrNoSize("\x01""0"),
            // function category
            TempStrNoSize("\x14""QuantLib - Financial"),
            // shortcut text (command macros only)
            TempStrNoSize("\x00"""),
            // path to help file
            TempStrNoSize("\x00"""),
            // function description
            TempStrNoSize("\x61""Returns the discretely compounded money market measure for the given EvolutionDescription object."),
            // parameter descriptions
            TempStrNoSize("\x22""ID of EvolutionDescription object."),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x14""qlMoneyMarketMeasure"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 13, &xDll,
            // function code name
            TempStrNoSize("\x18""qlMoneyMarketPlusMeasure"),
            // parameter codes
            TempStrNoSize("\x05""PCPP#"),
            // function display name
            TempStrNoSize("\x18""qlMoneyMarketPlusMeasure"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x23""EvolutionDescription,Offset,Trigger"),
            // function type (0 = hidden, 1 = worksheet)
            TempStrNoSize("\x01""0"),
            // function category
            TempStrNoSize("\x14""QuantLib - Financial"),
            // shortcut text (command macros only)
            TempStrNoSize("\x00"""),
            // path to help file
            TempStrNoSize("\x00"""),
            // function description
            TempStrNoSize("\x61""Returns the discretely compounded money market measure for the given EvolutionDescription object."),
            // parameter descriptions
            TempStrNoSize("\x22""ID of EvolutionDescription object."),
            TempStrNoSize("\x3D""offset applied to the MoneyMarket measure. Default value = 1."),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x18""qlMoneyMarketPlusMeasure"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 12, &xDll,
            // function code name
            TempStrNoSize("\x11""qlTerminalMeasure"),
            // parameter codes
            TempStrNoSize("\x04""PCP#"),
            // function display name
            TempStrNoSize("\x11""qlTerminalMeasure"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x1C""EvolutionDescription,Trigger"),
            // function type (0 = hidden, 1 = worksheet)
            TempStrNoSize("\x01""0"),
            // function category
            TempStrNoSize("\x14""QuantLib - Financial"),
            // shortcut text (command macros only)
            TempStrNoSize("\x00"""),
            // path to help file
            TempStrNoSize("\x00"""),
            // function description
            TempStrNoSize("\x47""Returns the terminal measure for the given EvolutionDescription object."),
            // parameter descriptions
            TempStrNoSize("\x22""ID of EvolutionDescription object."),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x11""qlTerminalMeasure"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);



}
Example #2
0
void unregisterPathGenerator(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, 13, &xDll,
            TempStrNoSize("\x15""createESGSingleFactor"),
            TempStrNoSize("\x05""CCCL#"),              
            TempStrNoSize("\x15""createESGSingleFactor"),
            TempStrNoSize("\x18""ObjectID,Rates,Permanent"),
            TempStrNoSize("\x01""1"),                  
            TempStrNoSize("\x9""prObjects"),         
            TempStrNoSize("\x00"""),                   
            TempStrNoSize("\x00"""),                   
            TempStrNoSize("\x4C""Construct an object of class SingleFactorGBMPathGenerator and returns its id"),
            TempStrNoSize("\x1A""ID of object to be created"),  
            TempStrNoSize("\x17""ID of Rates Environment"),
            TempStrNoSize("\x1D""object permanent/nonpermanent"));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x15""createESGSingleFactor"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 14, &xDll,
            TempStrNoSize("\x0F""getESGPathForCI"),
            TempStrNoSize("\x06""PCPBP#"),
            TempStrNoSize("\x0F""getESGPathForCI"),
            TempStrNoSize("\x28""ObjectID,Dates,ConfInt,Trigger,Permanent"),
            TempStrNoSize("\x01""1"),
            TempStrNoSize("\x9""prObjects"),
            TempStrNoSize("\x00"""),        
            TempStrNoSize("\x00"""),        
            TempStrNoSize("\x55""Returns a path of forward rates environments corresponding to the Confidence Interval"),
            TempStrNoSize("\x18""ID of the path generator"),
            TempStrNoSize("\xD""Forward dates"),            
            TempStrNoSize("\x23""Confidence interval NB 0 < c.i. < 1"),
            TempStrNoSize("\x7""Trigger"));
        
        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x0F""getESGPathForCI"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);


        Excel(xlfRegister, 0, 14, &xDll,
            TempStrNoSize("\x11""getESGPathForSpot"),
            TempStrNoSize("\x06""PCPPP#"),
            TempStrNoSize("\x11""getESGPathForSpot"),
            TempStrNoSize("\x1F""ObjectID,Dates,SpotPath,Trigger"),
            TempStrNoSize("\x01""1"),           
            TempStrNoSize("\x9""prObjects"),    
            TempStrNoSize("\x00"""),            
            TempStrNoSize("\x00"""),            
            TempStrNoSize("\x4F""Returns a path of rates environments corresponding to the input input spot path"),
            TempStrNoSize("\x18""ID of the path generator"),
            TempStrNoSize("\xD""Forward dates"),            
            TempStrNoSize("\x09""Spot Path"),
            TempStrNoSize("\x7""Trigger"));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x11""getESGPathForSpot"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);
}
Example #3
0
void unregisterCapfloor(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, 17, &xDll,
            // function code name
            TempStrNoSize("\x0A""qlCapFloor"),
            // parameter codes
            TempStrNoSize("\x09""CCCCPPPL#"),
            // function display name
            TempStrNoSize("\x0A""qlCapFloor"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x3D""ObjectId,OptionType,LegID,Strikes,Permanent,Trigger,Overwrite"),
            // function type (0 = hidden, 1 = worksheet)
            TempStrNoSize("\x01""0"),
            // function category
            TempStrNoSize("\x14""QuantLib - Financial"),
            // shortcut text (command macros only)
            TempStrNoSize("\x00"""),
            // path to help file
            TempStrNoSize("\x00"""),
            // function description
            TempStrNoSize("\x37""Construct an object of class CapFloor and return its id"),
            // parameter descriptions
            TempStrNoSize("\x1A""id of object to be created"),
            TempStrNoSize("\x1B""option type (cap or floor)."),
            TempStrNoSize("\x0E""coupon vector."),
            TempStrNoSize("\x08""strikes."),
            TempStrNoSize("\x1D""object permanent/nonpermanent"),
            TempStrNoSize("\x1B""dependency tracking trigger"),
            TempStrNoSize("\x10""overwrite flag  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x0A""qlCapFloor"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 13, &xDll,
            // function code name
            TempStrNoSize("\x11""qlCapFloorAtmRate"),
            // parameter codes
            TempStrNoSize("\x05""ECCP#"),
            // function display name
            TempStrNoSize("\x11""qlCapFloorAtmRate"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x1B""ObjectId,YieldCurve,Trigger"),
            // function type (0 = hidden, 1 = worksheet)
            TempStrNoSize("\x01""0"),
            // function category
            TempStrNoSize("\x14""QuantLib - Financial"),
            // shortcut text (command macros only)
            TempStrNoSize("\x00"""),
            // path to help file
            TempStrNoSize("\x00"""),
            // function description
            TempStrNoSize("\x3C""Returns the at-the-money rate for the given CapFloor object."),
            // parameter descriptions
            TempStrNoSize("\x28""id of existing QuantLib::CapFloor object"),
            TempStrNoSize("\x29""discounting YieldTermStructure object ID."),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x11""qlCapFloorAtmRate"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 12, &xDll,
            // function code name
            TempStrNoSize("\x12""qlCapFloorCapRates"),
            // parameter codes
            TempStrNoSize("\x04""PCP#"),
            // function display name
            TempStrNoSize("\x12""qlCapFloorCapRates"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x10""ObjectId,Trigger"),
            // function type (0 = hidden, 1 = worksheet)
            TempStrNoSize("\x01""0"),
            // function category
            TempStrNoSize("\x14""QuantLib - Financial"),
            // shortcut text (command macros only)
            TempStrNoSize("\x00"""),
            // path to help file
            TempStrNoSize("\x00"""),
            // function description
            TempStrNoSize("\x34""Returns the cap rates for the given CapFloor object."),
            // parameter descriptions
            TempStrNoSize("\x28""id of existing QuantLib::CapFloor object"),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x12""qlCapFloorCapRates"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 12, &xDll,
            // function code name
            TempStrNoSize("\x14""qlCapFloorFloorRates"),
            // parameter codes
            TempStrNoSize("\x04""PCP#"),
            // function display name
            TempStrNoSize("\x14""qlCapFloorFloorRates"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x10""ObjectId,Trigger"),
            // function type (0 = hidden, 1 = worksheet)
            TempStrNoSize("\x01""0"),
            // function category
            TempStrNoSize("\x14""QuantLib - Financial"),
            // shortcut text (command macros only)
            TempStrNoSize("\x00"""),
            // path to help file
            TempStrNoSize("\x00"""),
            // function description
            TempStrNoSize("\x36""Returns the floor rates for the given CapFloor object."),
            // parameter descriptions
            TempStrNoSize("\x28""id of existing QuantLib::CapFloor object"),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x14""qlCapFloorFloorRates"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 20, &xDll,
            // function code name
            TempStrNoSize("\x1B""qlCapFloorImpliedVolatility"),
            // parameter codes
            TempStrNoSize("\x0C""ECECPPPPPPP#"),
            // function display name
            TempStrNoSize("\x1B""qlCapFloorImpliedVolatility"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x53""ObjectId,Price,YieldCurve,Guess,Accuracy,MaxIter,MinVol,MaxVol,Displacement,Trigger"),
            // function type (0 = hidden, 1 = worksheet)
            TempStrNoSize("\x01""0"),
            // function category
            TempStrNoSize("\x14""QuantLib - Financial"),
            // shortcut text (command macros only)
            TempStrNoSize("\x00"""),
            // path to help file
            TempStrNoSize("\x00"""),
            // function description
            TempStrNoSize("\x50""Returns the volatility implied by the given price for the given CapFloor object."),
            // parameter descriptions
            TempStrNoSize("\x28""id of existing QuantLib::CapFloor object"),
            TempStrNoSize("\x2B""Price used to infer the implied volatility."),
            TempStrNoSize("\x29""discounting YieldTermStructure object ID."),
            TempStrNoSize("\x27""Volatility guess. Default value = 0.10."),
            TempStrNoSize("\x28""solver accuracy. Default value = 1.0e-6."),
            TempStrNoSize("\x2B""solver max iterations. Default value = 100."),
            TempStrNoSize("\x3E""Minimum volatility, no lower solution. Default value = 1.0e-7."),
            TempStrNoSize("\x3C""Maximum volatility, no higher solution. Default value = 4.0."),
            TempStrNoSize("\x41""displacement in a displaced diffusion model. Default value = 0.0."),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x1B""qlCapFloorImpliedVolatility"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 13, &xDll,
            // function code name
            TempStrNoSize("\x15""qlCapFloorLegAnalysis"),
            // parameter codes
            TempStrNoSize("\x05""PCPP#"),
            // function display name
            TempStrNoSize("\x15""qlCapFloorLegAnalysis"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x1A""ObjectId,AfterDate,Trigger"),
            // function type (0 = hidden, 1 = worksheet)
            TempStrNoSize("\x01""0"),
            // function category
            TempStrNoSize("\x14""QuantLib - Financial"),
            // shortcut text (command macros only)
            TempStrNoSize("\x00"""),
            // path to help file
            TempStrNoSize("\x00"""),
            // function description
            TempStrNoSize("\x3D""Returns the cash flow analysis for the given CapFloor object."),
            // parameter descriptions
            TempStrNoSize("\x2D""id of existing QuantLibAddin::CapFloor object"),
            TempStrNoSize("\x47""Shows only cashflows after given date Default value = QuantLib::Date()."),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x15""qlCapFloorLegAnalysis"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 12, &xDll,
            // function code name
            TempStrNoSize("\x16""qlCapFloorMaturityDate"),
            // parameter codes
            TempStrNoSize("\x04""NCP#"),
            // function display name
            TempStrNoSize("\x16""qlCapFloorMaturityDate"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x10""ObjectId,Trigger"),
            // function type (0 = hidden, 1 = worksheet)
            TempStrNoSize("\x01""0"),
            // function category
            TempStrNoSize("\x14""QuantLib - Financial"),
            // shortcut text (command macros only)
            TempStrNoSize("\x00"""),
            // path to help file
            TempStrNoSize("\x00"""),
            // function description
            TempStrNoSize("\x4C""Returns the maturity (i.e. last payment) date for the given CapFloor object."),
            // parameter descriptions
            TempStrNoSize("\x28""id of existing QuantLib::CapFloor object"),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x16""qlCapFloorMaturityDate"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 12, &xDll,
            // function code name
            TempStrNoSize("\x13""qlCapFloorStartDate"),
            // parameter codes
            TempStrNoSize("\x04""NCP#"),
            // function display name
            TempStrNoSize("\x13""qlCapFloorStartDate"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x10""ObjectId,Trigger"),
            // function type (0 = hidden, 1 = worksheet)
            TempStrNoSize("\x01""0"),
            // function category
            TempStrNoSize("\x14""QuantLib - Financial"),
            // shortcut text (command macros only)
            TempStrNoSize("\x00"""),
            // path to help file
            TempStrNoSize("\x00"""),
            // function description
            TempStrNoSize("\x4A""Returns the start (i.e. first accrual) date for the given CapFloor object."),
            // parameter descriptions
            TempStrNoSize("\x28""id of existing QuantLib::CapFloor object"),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x13""qlCapFloorStartDate"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 12, &xDll,
            // function code name
            TempStrNoSize("\x0E""qlCapFloorType"),
            // parameter codes
            TempStrNoSize("\x04""CCP#"),
            // function display name
            TempStrNoSize("\x0E""qlCapFloorType"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x10""ObjectId,Trigger"),
            // function type (0 = hidden, 1 = worksheet)
            TempStrNoSize("\x01""0"),
            // function category
            TempStrNoSize("\x14""QuantLib - Financial"),
            // shortcut text (command macros only)
            TempStrNoSize("\x00"""),
            // path to help file
            TempStrNoSize("\x00"""),
            // function description
            TempStrNoSize("\x41""Returns the type (e.g. Cap, Floor) for the given CapFloor object."),
            // parameter descriptions
            TempStrNoSize("\x28""id of existing QuantLib::CapFloor object"),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x0E""qlCapFloorType"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 20, &xDll,
            // function code name
            TempStrNoSize("\x0E""qlMakeCapFloor"),
            // parameter codes
            TempStrNoSize("\x0C""CCCCCPCCPPL#"),
            // function display name
            TempStrNoSize("\x0E""qlMakeCapFloor"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x64""ObjectId,OptionType,Length,IborIndex,Strike,ForwardStart,PricingEngineID,Permanent,Trigger,Overwrite"),
            // function type (0 = hidden, 1 = worksheet)
            TempStrNoSize("\x01""0"),
            // function category
            TempStrNoSize("\x14""QuantLib - Financial"),
            // shortcut text (command macros only)
            TempStrNoSize("\x00"""),
            // path to help file
            TempStrNoSize("\x00"""),
            // function description
            TempStrNoSize("\x37""Construct an object of class CapFloor and return its id"),
            // parameter descriptions
            TempStrNoSize("\x1A""id of object to be created"),
            TempStrNoSize("\x1B""option type (Cap or Floor)."),
            TempStrNoSize("\x15""as period (e.g. 10Y)."),
            TempStrNoSize("\x1D""floating IborIndex object ID."),
            TempStrNoSize("\x39""strike. Default value = QuantLib::Null<QuantLib::Rate>()."),
            TempStrNoSize("\x35""as period (if zero days the first caplet is removed)."),
            TempStrNoSize("\x21""CapFloor PricingEngine object ID."),
            TempStrNoSize("\x1D""object permanent/nonpermanent"),
            TempStrNoSize("\x1B""dependency tracking trigger"),
            TempStrNoSize("\x10""overwrite flag  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x0E""qlMakeCapFloor"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);



}
void unregisterGarbagecollection(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, 12, &xDll,
            // function code name
            TempStrNoSize("\x1A""ohRepositoryCollectGarbage"),
            // parameter codes
            TempStrNoSize("\x04""LPP#"),
            // function display name
            TempStrNoSize("\x1A""ohRepositoryCollectGarbage"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x17""DeletePermanent,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("\x28""delete orphaned objects from repository."),
            // parameter descriptions
            TempStrNoSize("\x35""also delete permanent objects. Default value = false."),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x1A""ohRepositoryCollectGarbage"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 12, &xDll,
            // function code name
            TempStrNoSize("\x1C""ohRepositoryDeleteAllObjects"),
            // parameter codes
            TempStrNoSize("\x04""LPP#"),
            // function display name
            TempStrNoSize("\x1C""ohRepositoryDeleteAllObjects"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x17""DeletePermanent,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("\x23""delete all objects from repository."),
            // parameter descriptions
            TempStrNoSize("\x35""also delete permanent objects. Default value = false."),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x1C""ohRepositoryDeleteAllObjects"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 12, &xDll,
            // function code name
            TempStrNoSize("\x18""ohRepositoryDeleteObject"),
            // parameter codes
            TempStrNoSize("\x04""LPP#"),
            // function display name
            TempStrNoSize("\x18""ohRepositoryDeleteObject"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x10""ObjectId,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("\x1E""delete object from repository."),
            // parameter descriptions
            TempStrNoSize("\x1B""ID of object to be deleted."),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x18""ohRepositoryDeleteObject"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 12, &xDll,
            // function code name
            TempStrNoSize("\x19""ohRepositoryListObjectIDs"),
            // parameter codes
            TempStrNoSize("\x04""PCP#"),
            // function display name
            TempStrNoSize("\x19""ohRepositoryListObjectIDs"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x0D""Regex,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("\x35""list the IDs of objects in repository matching regex."),
            // parameter descriptions
            TempStrNoSize("\x3A""optional matching pattern in UNIX format (wildcard is .*)."),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x19""ohRepositoryListObjectIDs"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 11, &xDll,
            // function code name
            TempStrNoSize("\x19""ohRepositoryLogAllObjects"),
            // parameter codes
            TempStrNoSize("\x03""LP#"),
            // function display name
            TempStrNoSize("\x19""ohRepositoryLogAllObjects"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x07""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("\x2A""write all object descriptions to log file."),
            // parameter descriptions
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x19""ohRepositoryLogAllObjects"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 12, &xDll,
            // function code name
            TempStrNoSize("\x15""ohRepositoryLogObject"),
            // parameter codes
            TempStrNoSize("\x04""LCP#"),
            // function display name
            TempStrNoSize("\x15""ohRepositoryLogObject"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x10""ObjectId,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("\x25""write object description to log file."),
            // parameter descriptions
            TempStrNoSize("\x1A""ID of object to be logged."),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x15""ohRepositoryLogObject"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 11, &xDll,
            // function code name
            TempStrNoSize("\x17""ohRepositoryObjectCount"),
            // parameter codes
            TempStrNoSize("\x03""NP#"),
            // function display name
            TempStrNoSize("\x17""ohRepositoryObjectCount"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x07""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("\x18""#/objects in repository."),
            // parameter descriptions
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x17""ohRepositoryObjectCount"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);



}
void unregisterEnumerations(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, 12, &xDll,
            // function code name
            TempStrNoSize("\x11""ohEnumeratedClass"),
            // parameter codes
            TempStrNoSize("\x04""PCP#"),
            // function display name
            TempStrNoSize("\x11""ohEnumeratedClass"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x0E""EnumId,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("\x2F""return the members of a given enumerated class."),
            // parameter descriptions
            TempStrNoSize("\x18""name of enumerated type."),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x11""ohEnumeratedClass"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 12, &xDll,
            // function code name
            TempStrNoSize("\x10""ohEnumeratedPair"),
            // parameter codes
            TempStrNoSize("\x04""PCP#"),
            // function display name
            TempStrNoSize("\x10""ohEnumeratedPair"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x0E""EnumId,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("\x2E""return the members of a given enumerated pair."),
            // parameter descriptions
            TempStrNoSize("\x18""name of enumerated type."),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x10""ohEnumeratedPair"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 12, &xDll,
            // function code name
            TempStrNoSize("\x10""ohEnumeratedType"),
            // parameter codes
            TempStrNoSize("\x04""PCP#"),
            // function display name
            TempStrNoSize("\x10""ohEnumeratedType"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x0E""EnumId,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("\x2E""return the members of a given enumerated type."),
            // parameter descriptions
            TempStrNoSize("\x18""name of enumerated type."),
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x10""ohEnumeratedType"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 11, &xDll,
            // function code name
            TempStrNoSize("\x17""ohListEnumeratedClasses"),
            // parameter codes
            TempStrNoSize("\x03""PP#"),
            // function display name
            TempStrNoSize("\x17""ohListEnumeratedClasses"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x07""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("\x22""list supported enumerated classes."),
            // parameter descriptions
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x17""ohListEnumeratedClasses"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 11, &xDll,
            // function code name
            TempStrNoSize("\x15""ohListEnumeratedPairs"),
            // parameter codes
            TempStrNoSize("\x03""PP#"),
            // function display name
            TempStrNoSize("\x15""ohListEnumeratedPairs"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x07""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("\x20""list supported enumerated pairs."),
            // parameter descriptions
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x15""ohListEnumeratedPairs"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);

        Excel(xlfRegister, 0, 11, &xDll,
            // function code name
            TempStrNoSize("\x15""ohListEnumeratedTypes"),
            // parameter codes
            TempStrNoSize("\x03""PP#"),
            // function display name
            TempStrNoSize("\x15""ohListEnumeratedTypes"),
            // comma-delimited list of parameter names
            TempStrNoSize("\x07""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("\x20""list supported enumerated types."),
            // parameter descriptions
            TempStrNoSize("\x1D""dependency tracking trigger  "));

        Excel4(xlfRegisterId, &xlRegID, 2, &xDll,
            TempStrNoSize("\x15""ohListEnumeratedTypes"));
        Excel4(xlfUnregister, 0, 1, &xlRegID);



}