1*80ee5cbfSDavid du Colombier /* 2*80ee5cbfSDavid du Colombier * hre_internal.h: Internal Interface for Recognizer. 3*80ee5cbfSDavid du Colombier * Author: James Kempf 4*80ee5cbfSDavid du Colombier * Created On: Thu Nov 5 10:54:18 1992 5*80ee5cbfSDavid du Colombier * Last Modified By: James Kempf 6*80ee5cbfSDavid du Colombier * Last Modified On: Fri Sep 23 13:51:15 1994 7*80ee5cbfSDavid du Colombier * Update Count: 99 8*80ee5cbfSDavid du Colombier * Copyright (c) 1994 by Sun Microsystems Computer Company 9*80ee5cbfSDavid du Colombier * All rights reserved. 10*80ee5cbfSDavid du Colombier * 11*80ee5cbfSDavid du Colombier * Use and copying of this software and preparation of 12*80ee5cbfSDavid du Colombier * derivative works based upon this software are permitted. 13*80ee5cbfSDavid du Colombier * Any distribution of this software or derivative works 14*80ee5cbfSDavid du Colombier * must comply with all applicable United States export control 15*80ee5cbfSDavid du Colombier * laws. 16*80ee5cbfSDavid du Colombier * 17*80ee5cbfSDavid du Colombier * This software is made available as is, and Sun Microsystems 18*80ee5cbfSDavid du Colombier * Computer Company makes no warranty about the software, its 19*80ee5cbfSDavid du Colombier * performance, or its conformity to any specification 20*80ee5cbfSDavid du Colombier */ 21*80ee5cbfSDavid du Colombier 22*80ee5cbfSDavid du Colombier /*Avoids forward reference problem.*/ 23*80ee5cbfSDavid du Colombier 24*80ee5cbfSDavid du Colombier /* 25*80ee5cbfSDavid du Colombier * Internal view of wordset. The recognition engine uses this view to 26*80ee5cbfSDavid du Colombier * maintain information about which recognizer object this wordset 27*80ee5cbfSDavid du Colombier * belongs to, which file (in case it needs to be saved), and internal 28*80ee5cbfSDavid du Colombier * data structures. 29*80ee5cbfSDavid du Colombier */ 30*80ee5cbfSDavid du Colombier 31*80ee5cbfSDavid du Colombier struct _wordset { 32*80ee5cbfSDavid du Colombier char* ws_pathname; /*Path name to word set file.*/ 33*80ee5cbfSDavid du Colombier recognizer ws_recognizer; /*To whom it belongs.*/ 34*80ee5cbfSDavid du Colombier void* ws_internal; /*Internal data structures.*/ 35*80ee5cbfSDavid du Colombier }; 36*80ee5cbfSDavid du Colombier 37*80ee5cbfSDavid du Colombier /* 38*80ee5cbfSDavid du Colombier * Internal view of the recognizer struct. This view is only available 39*80ee5cbfSDavid du Colombier * to OEM clients who implement a recognizer shared library. Clients 40*80ee5cbfSDavid du Colombier * of the recognizer itself see it as an opaque data type. The struct 41*80ee5cbfSDavid du Colombier * contains a function pointer for each function in the client API. 42*80ee5cbfSDavid du Colombier */ 43*80ee5cbfSDavid du Colombier 44*80ee5cbfSDavid du Colombier struct _Recognizer { 45*80ee5cbfSDavid du Colombier uint recognizer_magic; 46*80ee5cbfSDavid du Colombier char *recognizer_version; 47*80ee5cbfSDavid du Colombier 48*80ee5cbfSDavid du Colombier rec_info *recognizer_info; 49*80ee5cbfSDavid du Colombier void *recognizer_specific; 50*80ee5cbfSDavid du Colombier int (*recognizer_load_state)(struct _Recognizer*, char*, char*); 51*80ee5cbfSDavid du Colombier int (*recognizer_save_state)(struct _Recognizer*, char*, char*); 52*80ee5cbfSDavid du Colombier char* (*recognizer_error)(struct _Recognizer*); 53*80ee5cbfSDavid du Colombier wordset (*recognizer_load_dictionary)(struct _Recognizer*, char*, char*); 54*80ee5cbfSDavid du Colombier int (*recognizer_save_dictionary)(struct _Recognizer*, char*, char*, wordset); 55*80ee5cbfSDavid du Colombier 56*80ee5cbfSDavid du Colombier int (*recognizer_free_dictionary)(struct _Recognizer*, wordset); 57*80ee5cbfSDavid du Colombier int (*recognizer_add_to_dictionary)(struct _Recognizer*, letterset*, wordset); 58*80ee5cbfSDavid du Colombier int (*recognizer_delete_from_dictionary)(struct _Recognizer*, letterset*, wordset); 59*80ee5cbfSDavid du Colombier int (*recognizer_set_context)(struct _Recognizer*,rc*); 60*80ee5cbfSDavid du Colombier rc* (*recognizer_get_context)(struct _Recognizer*); 61*80ee5cbfSDavid du Colombier 62*80ee5cbfSDavid du Colombier int (*recognizer_clear)(struct _Recognizer*, bool); 63*80ee5cbfSDavid du Colombier int (*recognizer_get_buffer)(struct _Recognizer*, uint*, Stroke**); 64*80ee5cbfSDavid du Colombier 65*80ee5cbfSDavid du Colombier int (*recognizer_set_buffer)(struct _Recognizer*, uint, Stroke*); 66*80ee5cbfSDavid du Colombier int (*recognizer_translate)(struct _Recognizer*, uint, Stroke*, bool, int*, rec_alternative**); 67*80ee5cbfSDavid du Colombier rec_fn* (*recognizer_get_extension_functions)(struct _Recognizer*); 68*80ee5cbfSDavid du Colombier char** (*recognizer_get_gesture_names)(struct _Recognizer*); 69*80ee5cbfSDavid du Colombier xgesture (*recognizer_set_gesture_action)(struct _Recognizer*, char*, xgesture, void*); 70*80ee5cbfSDavid du Colombier uint recognizer_end_magic; 71*80ee5cbfSDavid du Colombier }; 72*80ee5cbfSDavid du Colombier 73*80ee5cbfSDavid du Colombier /* 74*80ee5cbfSDavid du Colombier * recognizer_internal_initialize - Allocate and initialize the recognizer 75*80ee5cbfSDavid du Colombier * object. The recognition shared library has the responsibility for filling 76*80ee5cbfSDavid du Colombier * in all the function pointers for the recognition functions. This 77*80ee5cbfSDavid du Colombier * function must be defined as a global function within the shared 78*80ee5cbfSDavid du Colombier * library, so it can be accessed using dlsym() when the recognizer 79*80ee5cbfSDavid du Colombier * shared library is loaded. It returns NULL if an error occured and 80*80ee5cbfSDavid du Colombier * sets errno to indicate what. 81*80ee5cbfSDavid du Colombier */ 82*80ee5cbfSDavid du Colombier 83*80ee5cbfSDavid du Colombier typedef recognizer (*recognizer_internal_initialize)(rec_info* ri); 84*80ee5cbfSDavid du Colombier 85*80ee5cbfSDavid du Colombier /*Function header definition for recognizer internal initializer.*/ 86*80ee5cbfSDavid du Colombier 87*80ee5cbfSDavid du Colombier #define RECOGNIZER_INITIALIZE(_a) \ 88*80ee5cbfSDavid du Colombier recognizer __recognizer_internal_initialize(rec_info* _a) 89*80ee5cbfSDavid du Colombier 90*80ee5cbfSDavid du Colombier /* 91*80ee5cbfSDavid du Colombier * recognizer_internal_finalize - Deallocate and deinitialize the recognizer 92*80ee5cbfSDavid du Colombier * object. If the recognizer has allocated any additional storage, it should 93*80ee5cbfSDavid du Colombier * be deallocated as well. Returns 0 if successful, -1 if the argument 94*80ee5cbfSDavid du Colombier * wasn't a recognizer or wasn't a recognizer handled by this library. 95*80ee5cbfSDavid du Colombier */ 96*80ee5cbfSDavid du Colombier 97*80ee5cbfSDavid du Colombier typedef int (*recognizer_internal_finalize)(recognizer r); 98*80ee5cbfSDavid du Colombier 99*80ee5cbfSDavid du Colombier #define RECOGNIZER_FINALIZE(_a) \ 100*80ee5cbfSDavid du Colombier int __recognizer_internal_finalize(recognizer _a) 101*80ee5cbfSDavid du Colombier 102*80ee5cbfSDavid du Colombier /* 103*80ee5cbfSDavid du Colombier * The following are for creating HRE structures. 104*80ee5cbfSDavid du Colombier */ 105*80ee5cbfSDavid du Colombier 106*80ee5cbfSDavid du Colombier recognizer make_recognizer(rec_info* ri); 107*80ee5cbfSDavid du Colombier void delete_recognizer(recognizer rec); 108*80ee5cbfSDavid du Colombier 109*80ee5cbfSDavid du Colombier RECOGNIZER_FINALIZE(_a); 110*80ee5cbfSDavid du Colombier rec_alternative* make_rec_alternative_array(uint size); 111*80ee5cbfSDavid du Colombier rec_correlation* make_rec_correlation(char type, uint size, void* trans, rec_confidence conf, uint ps_size); 112*80ee5cbfSDavid du Colombier 113*80ee5cbfSDavid du Colombier rec_fn* 114*80ee5cbfSDavid du Colombier make_rec_fn_array(uint size); 115*80ee5cbfSDavid du Colombier void 116*80ee5cbfSDavid du Colombier delete_rec_fn_array(rec_fn* rf); 117*80ee5cbfSDavid du Colombier 118*80ee5cbfSDavid du Colombier gesture* 119*80ee5cbfSDavid du Colombier initialize_gesture(gesture* g, 120*80ee5cbfSDavid du Colombier char* name, 121*80ee5cbfSDavid du Colombier uint nhs, 122*80ee5cbfSDavid du Colombier pen_point* hspots, 123*80ee5cbfSDavid du Colombier pen_rect bbox, 124*80ee5cbfSDavid du Colombier xgesture cback, 125*80ee5cbfSDavid du Colombier void* wsinfo); 126*80ee5cbfSDavid du Colombier gesture* 127*80ee5cbfSDavid du Colombier make_gesture_array(uint size); 128*80ee5cbfSDavid du Colombier void 129*80ee5cbfSDavid du Colombier delete_gesture_array(uint size,gesture* ga,bool delete_points_p); 130*80ee5cbfSDavid du Colombier 131*80ee5cbfSDavid du Colombier Stroke* 132*80ee5cbfSDavid du Colombier concatenate_Strokes(int nstrokes1, 133*80ee5cbfSDavid du Colombier Stroke* strokes1, 134*80ee5cbfSDavid du Colombier int nstrokes2, 135*80ee5cbfSDavid du Colombier Stroke* strokes2, 136*80ee5cbfSDavid du Colombier int* nstrokes3, 137*80ee5cbfSDavid du Colombier Stroke** strokes3); 138*80ee5cbfSDavid du Colombier 139*80ee5cbfSDavid du Colombier rec_alternative* initialize_rec_alternative(rec_alternative* ra, uint); 140*80ee5cbfSDavid du Colombier 141*80ee5cbfSDavid du Colombier rec_element* initialize_rec_element(rec_element*, char, uint, void*, rec_confidence); 142*80ee5cbfSDavid du Colombier 143*80ee5cbfSDavid du Colombier /* 144*80ee5cbfSDavid du Colombier * Pathnames, etc. 145*80ee5cbfSDavid du Colombier */ 146*80ee5cbfSDavid du Colombier 147*80ee5cbfSDavid du Colombier #define REC_DEFAULT_LOCALE "C" 148*80ee5cbfSDavid du Colombier #define RECHOME "RECHOME" 149*80ee5cbfSDavid du Colombier #define LANG "LANG" 150