1/*---------------------------------------------------------------------------* 2 * SR_SemanticProcessor.h * 3 * * 4 * Copyright 2007, 2008 Nuance Communciations, Inc. * 5 * * 6 * Licensed under the Apache License, Version 2.0 (the 'License'); * 7 * you may not use this file except in compliance with the License. * 8 * * 9 * You may obtain a copy of the License at * 10 * http://www.apache.org/licenses/LICENSE-2.0 * 11 * * 12 * Unless required by applicable law or agreed to in writing, software * 13 * distributed under the License is distributed on an 'AS IS' BASIS, * 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * 15 * See the License for the specific language governing permissions and * 16 * limitations under the License. * 17 * * 18 *---------------------------------------------------------------------------*/ 19 20#ifndef __SR_SEMANTICPROCESSOR_H 21#define __SR_SEMANTICPROCESSOR_H 22 23 24 25#include "SR_SemprocPrefix.h" 26#include "SR_SemanticGraph.h" 27#include "SR_SemanticResult.h" 28#include "pstdio.h" 29#include "ptypes.h" 30#include "ESR_ReturnCode.h" 31 32 33 34 35/** 36 * Wrapper for the eScript Semantic Processor Implementation. 37 */ 38typedef struct SR_SemanticProcessor_t 39{ 40 /** 41 * Parse a graph with the processor provided as argument. Store semantic results in the objects pointed to by each 42 * element in the array provided. In other words, each element of the array is a pointer to a SemanticResult object 43 * created (and destroyed) by the caller of the function. 44 * The size of the array must be SWIrecResultData **result_dataindicated in resultCount. If the array is not big enough, ESR_BUFFER_OVERFLOW 45 * is returned with resultCount set to the size required. 46 */ 47 ESR_ReturnCode(*checkParse)(struct SR_SemanticProcessor_t* self, SR_SemanticGraph* semgraph, const LCHAR* transcription, SR_SemanticResult** result, size_t* resultCount); 48 /** 49 * Parse a graph with the processor provided as argument. Store semantic results in the objects pointed to by each 50 * element in the array provided. In other words, each element of the array is a pointer to a SemanticResult object 51 * created (and destroyed) by the caller of the function. 52 * The size of the array must be SWIrecResultData **result_dataindicated in resultCount. If the array is not big enough, ESR_BUFFER_OVERFLOW 53 * is returned with resultCount set to the size required. 54 */ 55 ESR_ReturnCode(*checkParseByWordID)(struct SR_SemanticProcessor_t* self, SR_SemanticGraph* semgraph, wordID* wordIDs, SR_SemanticResult** result, size_t* resultCount); 56 /** 57 * Frees the memory used by the Semantic Processor. 58 * 59 * @param self SR_SemanticProcessor handle 60 */ 61 ESR_ReturnCode(*destroy)(struct SR_SemanticProcessor_t* self); 62 63 /** 64 * Set a param to be read by Semantic Processor during processing. 65 * 66 * @param self SR_SemanticProcessor handle 67 * @param key The name of the param 68 * @param value The value of the param 69 */ 70 ESR_ReturnCode(*setParam)(struct SR_SemanticProcessor_t* self, const LCHAR* key, const LCHAR* value); 71 72 /** 73 * Flush the internals of the semantic processor 74 * 75 * @param self SR_SemanticProcessor handle 76 */ 77 ESR_ReturnCode(*flush)(struct SR_SemanticProcessor_t* self); 78 79} 80SR_SemanticProcessor; 81 82 83/** 84 * Create a new Semantic Processor. 85 * 86 * @param self SR_SemanticProcessor handle 87 */ 88SREC_SEMPROC_API ESR_ReturnCode SR_SemanticProcessorCreate(SR_SemanticProcessor** self); 89/** 90 * Create a new Semantic Processor. 91 * 92 * @param self SR_SemanticProcessor handle 93 */ 94SREC_SEMPROC_API ESR_ReturnCode SR_SemanticProcessorDestroy(SR_SemanticProcessor* self); 95/** 96* Set a param to be read by Semantic Processor during processing. 97* 98* @param self SR_SemanticProcessor handle 99* @param key The name of the param 100* @param value The value of the param 101*/ 102SREC_SEMPROC_API ESR_ReturnCode SR_SemanticProcessorSetParam(SR_SemanticProcessor* self, const LCHAR* key, const LCHAR* value); 103/** 104* Flush the internals of the Semantic Processor 105* 106* @param self SR_SemanticProcessor handle 107*/ 108SREC_SEMPROC_API ESR_ReturnCode SR_SemanticProcessorFlush(SR_SemanticProcessor* self); 109 110 111 112#endif /* __SR_SEMANTICPROCESSOR_H */ 113