IConditionGenerator::GenerateForLeaf method (structuredquery.h)
Generates a special query expression for what would otherwise become a leaf query expression.
Syntax
HRESULT GenerateForLeaf(
[in] IConditionFactory *pConditionFactory,
[in] LPCWSTR pszPropertyName,
[in] CONDITION_OPERATION cop,
[in] LPCWSTR pszValueType,
[in] LPCWSTR pszValue,
[in] LPCWSTR pszValue2,
[in] IRichChunk *pPropertyNameTerm,
[in] IRichChunk *pOperationTerm,
[in] IRichChunk *pValueTerm,
[in] BOOL automaticWildcard,
[out] BOOL *pNoStringQuery,
[out, retval] ICondition **ppQueryExpression
);
Parameters
[in] pConditionFactory
Type: IConditionFactory*
An IConditionFactory object that can be used to create the necessary nodes.
[in] pszPropertyName
Type: LPCWSTR
Property name, or NULL if there is no property name.
[in] cop
Type: CONDITION_OPERATION
A CONDITION_OPERATION enumerated type identifying the operation.
[in] pszValueType
Type: LPCWSTR
Semantic type describing the values in pszValue and pszValue2.
[in] pszValue
Type: LPCWSTR
A string generated by IConditionGenerator::RecognizeNamedEntities that represents the value. If pszValue2 is not NULL, then this represents the beginning of the value's range.
[in] pszValue2
Type: LPCWSTR
If not NULL, a string generated by IConditionGenerator::RecognizeNamedEntities that represents the end of the value's range. If NULL, then pszValue represents a discrete value.
[in] pPropertyNameTerm
Type: IRichChunk*
Pointer to an IRichChunk object containing information about what part of an input string produced the property name.
[in] pOperationTerm
Type: IRichChunk*
Pointer to an IRichChunk object containing information about what part of an input string produced the operation.
[in] pValueTerm
Type: IRichChunk*
Pointer to an IRichChunk object containing information about what part of an input string produced the value.
[in] automaticWildcard
Type: BOOL
TRUE if the generated condition should return results that begin with the specified value, if meaningful. FALSE if the generated condition should return results matching the specified value exactly.
[out] pNoStringQuery
Type: BOOL*
VARIANT_TRUE if the condition tree in ppQueryExpression should be the full query, or VARIANT_FALSE if the full query should be a disjunction of the condition tree in ppQueryExpression and the condition tree that would have been used if this method had returned S_FALSE.
[out, retval] ppQueryExpression
Type: ICondition**
Receives a pointer to an ICondition condition tree.
Return value
Type: HRESULT
Returns one of the following, or an error value otherwise.
Return code | Description |
---|---|
|
Successfully generated a condition. |
|
A condition was not generated, and the query parser must produce one in some other way. |
Remarks
If this method returns S_FALSE, the calling query parser should generate a leaf node N with this property name, operation, and value. If this method returns S_FALSE and pNoStringQuery contains VARIANT_FALSE, the full generated query is a disjunction (OR) with the leaf node N and the condition tree in ppQueryExpression as subconditions.
If this method returns S_OK and pNoStringQuery contains VARIANT_TRUE, the condition tree in ppQueryExpression is the full query.
The value of pszValue2 is non-NULL only for a range query, such as date:1/2/2003..1/30/2006
, where pszValue contains the value for 1/2/2003 and pszValue2 contains the value for 1/30/2006. A condition generator can elect to refuse ranges by always returning S_OK when pszValue2 is not NULL.
A condition generator can safely ignore the arguments pPropertyNameTerm, pOperationTerm, and pValueTerm. However, it would use them to produce a leaf node that has correct information about the origins in the query string of the property name, the operator, and the value, by passing them on to MakeLeaf.
In many cases, a condition generator can ignore the argument automaticWildcard because it would not apply. However, if the generated condition tree does some form of string search, where both a prefix search (COP_VALUE_STARTSWITH from CONDITION_OPERATION) and a search for the exact string (COP_EQUAL from CONDITION_OPERATION) are meaningful, then the former should be generated when automaticWildcard is VARIANT_TRUE, and the latter when automaticWildcard is VARIANT_FALSE.
Requirements
Requirement | Value |
---|---|
Minimum supported client | Windows XP with SP2, Windows Vista [desktop apps only] |
Minimum supported server | Windows Server 2003 with SP1 [desktop apps only] |
Target Platform | Windows |
Header | structuredquery.h |
See also
Reference