/* * Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * @file picorsrc.h * * Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland * All rights reserved. * * History: * - 2009-04-20 -- initial version * */ /** * @addtogroup picorsrc * * Pico Resource Management module \n * */ #ifndef PICORSRC_H_ #define PICORSRC_H_ #include "picodefs.h" #include "picoos.h" #include "picoknow.h" #ifdef __cplusplus extern "C" { #endif #if 0 } #endif #define PICORSRC_MAX_RSRC_NAME_SIZ PICO_MAX_RESOURCE_NAME_SIZE /* including terminating NULLC */ #define PICORSRC_MAX_NUM_VOICES 64 /* size of kb array of a voice */ #define PICORSRC_KB_ARRAY_SIZE 64 typedef picoos_char picorsrc_resource_name_t[PICORSRC_MAX_RSRC_NAME_SIZ]; typedef enum picorsrc_resource_type { PICORSRC_TYPE_NULL, PICORSRC_TYPE_TEXTANA, PICORSRC_TYPE_SIGGEN, PICORSRC_TYPE_USER_LEX, PICORSRC_TYPE_USER_PREPROC, PICORSRC_TYPE_OTHER } picorsrc_resource_type_t; #define PICORSRC_FIELD_VALUE_TEXTANA (picoos_char *) "TEXTANA" #define PICORSRC_FIELD_VALUE_SIGGEN (picoos_char *) "SIGGEN" #define PICORSRC_FIELD_VALUE_USERLEX (picoos_char *) "USERLEX" #define PICORSRC_FIELD_VALUE_USERTPP (picoos_char *) "USERTPP" typedef struct picorsrc_resource_manager * picorsrc_ResourceManager; typedef struct picorsrc_voice * picorsrc_Voice; typedef struct picorsrc_resource * picorsrc_Resource; /* ************************************************************************** * * file name extensions * ****************************************************************************/ #define PICO_BIN_EXTENSION ".bin" #define PICO_INPLACE_EXTENSION ".inp" /* ************************************************************************** * * construct/destruct resource manager * ****************************************************************************/ /* create resource manager, given a config file name (or default name, if empty) */ picorsrc_ResourceManager picorsrc_newResourceManager(picoos_MemoryManager mm, picoos_Common common /* , picoos_char * configFile */); void picorsrc_disposeResourceManager(picoos_MemoryManager mm, picorsrc_ResourceManager * this); /* ************************************************************************** * * resources * ****************************************************************************/ /** * Returns non-zero if 'resource' is a valid resource handle, zero otherwise. */ picoos_int16 picoctrl_isValidResourceHandle(picorsrc_Resource resource); /* load resource file. the type of resource file, magic numbers, checksum etc. are in the header, then follows the directory * (with fixed structure per resource type), then the knowledge bases themselves (as byte streams) */ pico_status_t picorsrc_loadResource(picorsrc_ResourceManager this, picoos_char * fileName, picorsrc_Resource * resource); /* unload resource file. (warn if resource file is busy) */ pico_status_t picorsrc_unloadResource(picorsrc_ResourceManager this, picorsrc_Resource * rsrc); pico_status_t picorsrc_createDefaultResource(picorsrc_ResourceManager this /*, picorsrc_Resource * resource */); pico_status_t picorsrc_rsrcGetName(picorsrc_Resource resource, picoos_char * name, picoos_uint32 maxlen); /* ************************************************************************** * * voice definitions * ****************************************************************************/ pico_status_t picorsrc_createVoiceDefinition(picorsrc_ResourceManager this, picoos_char * voiceName); pico_status_t picorsrc_releaseVoiceDefinition(picorsrc_ResourceManager this, picoos_char * voiceName); pico_status_t picorsrc_addResourceToVoiceDefinition(picorsrc_ResourceManager this, picoos_char * voiceName, picoos_char * resourceName); /* ************************************************************************** * * voices * ****************************************************************************/ /** object : Voice * shortcut : voice * */ typedef struct picorsrc_voice { picorsrc_Voice next; picoknow_KnowledgeBase kbArray[PICORSRC_KB_ARRAY_SIZE]; picoos_uint8 numResources; picorsrc_Resource resourceArray[PICO_MAX_NUM_RSRC_PER_VOICE]; } picorsrc_voice_t; /* create voice, given a voice name. the corresponding lock counts are incremented */ pico_status_t picorsrc_createVoice(picorsrc_ResourceManager this, const picoos_char * voiceName, picorsrc_Voice * voice); /* dispose voice. the corresponding lock counts are decremented. */ pico_status_t picorsrc_releaseVoice(picorsrc_ResourceManager this, picorsrc_Voice * voice); #ifdef __cplusplus } #endif #endif /*PICORSRC_H_*/