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