Code
The object and variable declarations are the following:
FdoIExpressionCapabilities * expressionCapabilities;
FdoInt32 numExpressionTypes = 0;
// this is an enumerated type
FdoExpressionType * expressionTypes;
FdoInt32 numFunctionDefinitions = 0;
FdoFunctionDefinitionCollection * functions;
FdoFunctionDefinition * functionDefinition;
FdoString * functionName;
FdoString * functionDescription;
FdoInt32 numArgumentDefinitions = 0;
FdoReadOnlyArgumentDefinitionCollection * arguments;
FdoArgumentDefinition * argumentDefinition;
FdoString * argumentName;
FdoString * argumentDescription;
FdoDataType argumentType;
The method calls are the following:
expressionCapabilities = connection->GetExpressionCapabilities();
// this returns a list of expression types
expressionTypes = expressionCapabilities->GetExpressionTypes();
// loop through the expression Types
functions = expressionCapabilities->GetFunctions();
numFunctionDefinitions = functions->GetCount();
for (int i = 0; i < numFunctionDefinitions; i++) {
functionDefinition = functions->GetItem(i);
functionName = functionDefinition->GetName();
functionDescription = functionDefinition->GetDescription();
arguments = functionDefinition->GetArguments();
numArgumentDefinitions = arguments->GetCount();
for ( int j = 0; j < numArgumentDefinitions; j++) {
argumentDefinition = arguments->GetItem(j);
argumentName = argumentDefinition->GetName();
argumentDescription = argumentDefinition->GetDescription();
argumentType = argumentDefinition->GetDataType();
}
}