diff options
author | Charles Chen <clchen@google.com> | 2009-06-22 16:25:25 -0700 |
---|---|---|
committer | Charles Chen <clchen@google.com> | 2009-06-22 17:14:37 -0700 |
commit | 1284d937084a20b457c280259fff59391129509a (patch) | |
tree | 5630028284c450b56a56b187d9c99cf7ebcee9cc /pico/lib/picopal.h | |
parent | f605ee98e5e03144c25a92af7e5d2a3ec33d375f (diff) | |
download | external_svox-1284d937084a20b457c280259fff59391129509a.zip external_svox-1284d937084a20b457c280259fff59391129509a.tar.gz external_svox-1284d937084a20b457c280259fff59391129509a.tar.bz2 |
Moving PicoTts plugin under the pico directory of external/svox
Diffstat (limited to 'pico/lib/picopal.h')
-rw-r--r-- | pico/lib/picopal.h | 288 |
1 files changed, 288 insertions, 0 deletions
diff --git a/pico/lib/picopal.h b/pico/lib/picopal.h new file mode 100644 index 0000000..acfc8e0 --- /dev/null +++ b/pico/lib/picopal.h @@ -0,0 +1,288 @@ +/* + * 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 picopal.h + * + * pico plattform abstraction layer + * + * Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland + * All rights reserved. + * + * History: + * - 2009-04-20 -- initial version + * + */ +/** + * @addtogroup picoos + + * <b> Operating system Platform Specific implementation module </b>\n + * +*/ +#ifndef PICOPAL_H_ +#define PICOPAL_H_ + +#include <stdio.h> +#include <stdlib.h> +#include <stdarg.h> +#include <math.h> +#include <stddef.h> +#include "picopltf.h" +#include "picodefs.h" + +#ifdef __cplusplus +extern "C" { +#endif +#if 0 +} +#endif + + +/* *********************************************************/ +/* general defines and typedefs (used to be in picodefs.h) */ +/* *********************************************************/ + +#define TRUE 1 +#define FALSE 0 + +#ifndef NULL +#define NULL 0 +#endif + +#define NULLC '\000' + + +/* "strange" defines to switch variants... */ +#define PICOPAL_DIV_USE_INV 0 + + +/*---------------Externals-----------------------*/ +/* used by picocep*/ +#if defined(PICO_DEBUG) + extern int numlongmult, numshortmult; +#endif + + +typedef signed int pico_status_t; + + +/* unfortunately, ANSI-C uses eof for results and exceptional results .. */ +/* in the context of reading from a CharBuffer, eof means "no more + input available FOR NOW" */ + +#define PICO_EOF (pico_status_t) -1 + + +/* *************************************************/ +/* constants */ +/* *************************************************/ + + + /* operating system identifications */ +#define PICOPAL_OS_NIL 0 /* just an unchangeable first value */ +#define PICOPAL_OS_WINDOWS 1 +/* ... */ +#define PICOPAL_OS_GENERIC 99 /* must always be the last value */ + +/* *************************************************/ +/* types */ +/* *************************************************/ + +typedef unsigned char picopal_uint8; +typedef unsigned short picopal_uint16; +typedef unsigned int picopal_uint32; + +typedef signed char picopal_int8; +typedef signed short picopal_int16; +typedef signed int picopal_int32; + +typedef float picopal_single; +typedef double picopal_double; + +typedef unsigned char picopal_char; + +typedef unsigned char picopal_uchar; + +typedef size_t picopal_objsize_t; +typedef ptrdiff_t picopal_ptrdiff_t; + +/* *************************************************/ +/* functions */ +/* *************************************************/ + +picopal_int32 picopal_atoi(const picopal_char *); + +picopal_int32 picopal_strcmp(const picopal_char *, const picopal_char *); +picopal_int32 picopal_strncmp(const picopal_char *a, const picopal_char *b, picopal_objsize_t siz); +picopal_objsize_t picopal_strlen(const picopal_char *); +picopal_char * picopal_strchr(const picopal_char *, picopal_char); +picopal_char * picopal_strcpy(picopal_char *d, const picopal_char *s); +picopal_char *picopal_strstr(const picopal_char *s, const picopal_char *substr); +picopal_char *picopal_strcat(picopal_char *dest, const picopal_char *src); +picopal_int16 picopal_sprintf(picopal_char * dst, const picopal_char *fmt, ...); + +/* copies 'length' bytes from 'src' to 'dest'. (regions may be overlapping) no error checks! */ +void * picopal_mem_copy(const void * src, void * dst, picopal_objsize_t length); + +/* sets 'length' bytes starting at dest[0] to 'byte_val' */ +void * picopal_mem_set(void * dest, picopal_uint8 byte_val, picopal_objsize_t length); + +/* safe versions */ +picopal_objsize_t picopal_vslprintf(picopal_char * dst, picopal_objsize_t siz, const picopal_char *fmt, va_list args); +picopal_objsize_t picopal_slprintf(picopal_char * dst, picopal_objsize_t siz, const picopal_char *fmt, /*args*/ ...); +picopal_objsize_t picopal_strlcpy(picopal_char *dst, const picopal_char *src, picopal_objsize_t siz); + +/*Fixed point computation*/ +/* +picopal_int32 picopal_fixptdiv(picopal_int32 a, picopal_int32 b, picopal_uint8 bigpow); +picopal_int32 picopal_fixptmult(picopal_int32 x, picopal_int32 y, picopal_uint8 bigpow); +picopal_int32 picopal_fixptdivORinv(picopal_int32 a, picopal_int32 b, picopal_int32 invb, picopal_uint8 bigpow); +picopal_int32 picopal_fixptmultdouble(picopal_int32 x, picopal_int32 y, picopal_uint8 bigpow); +picopal_uint8 picopal_highestBit(picopal_int32 x); +*/ + +/* *************************************************/ +/* math */ +/* *************************************************/ + +picopal_double picopal_cos (const picopal_double cos_arg); +picopal_double picopal_sin (const picopal_double sin_arg); +picopal_double picopal_fabs (const picopal_double fabs_arg); + + + + +/* *************************************************/ +/* file access */ +/* *************************************************/ + +extern picopal_char picopal_eol(void); + +#define picopal_FILE FILE + + +/* seek modes to be used with the 'FSeek' procedure */ +#define PICOPAL_SEEK_SET 0 /* absolut seek position */ +#define PICOPAL_SEEK_CUR 1 /* relative to current */ +#define PICOPAL_SEEK_END 2 /* relative to the end of the file */ + + +typedef enum {PICOPAL_BINARY_READ, PICOPAL_BINARY_WRITE, PICOPAL_TEXT_READ, PICOPAL_TEXT_WRITE} picopal_access_mode; + +typedef picopal_FILE * picopal_File; + +extern picopal_File picopal_fopen (picopal_char fileName[], picopal_access_mode mode); +/* 'FOpen' opens the file with name 'filename'. Depending on + 'mode' : + 'TextRead' : Opens an existing text file for reading. + The file is positioned at the beginning of the file. + 'TextWrite' : Opens and truncates an existing file or creates a new + text file for writing. The file is positioned at the + beginning. + 'BinaryRead' : Opens an existing binary file for reading. + The file is positioned at the beginning of the file. + 'BinaryWrite' : Opens and truncates an existing file or creates a new + binary file for writing. The file is positioned at the + beginning. + If the opening of the file is successful a file pointer is given + back. Otherwise a NIL-File is given back. +*/ + + +extern picopal_File picopal_get_fnil (void); + + +extern picopal_int8 picopal_is_fnil (picopal_File f); + + +extern pico_status_t picopal_fclose (picopal_File f); + + +extern picopal_uint32 picopal_flength (picopal_File f); + + +extern picopal_uint8 picopal_feof (picopal_File f); + + +extern pico_status_t picopal_fseek (picopal_File f, picopal_uint32 offset, picopal_int8 seekmode); + + +extern pico_status_t picopal_fget_char (picopal_File f, picopal_char * ch); + + +extern picopal_objsize_t picopal_fread_bytes (picopal_File f, void * ptr, picopal_objsize_t objsize, picopal_uint32 nobj); + +extern picopal_objsize_t picopal_fwrite_bytes (picopal_File f, void * ptr, picopal_objsize_t objsize, picopal_uint32 nobj); + + +extern pico_status_t picopal_fflush (picopal_File f); + +/* +extern pico_status_t picopal_fput_char (picopal_File f, picopal_char ch); +*/ + + +/* +extern pico_status_t picopal_remove (picopal_char filename[]); + + +extern pico_status_t picopal_rename (picopal_char oldname[], picopal_char newname[]); + +*/ + +/* *************************************************/ +/* functions for debugging/testing purposes only */ +/* *************************************************/ + +/** + * Returns a pointer to a newly allocated chunk of 'size' bytes, aligned + * to the system page size. + * Memory allocated by this routine may be protected by calling function + * picopal_mrp_protect(). + */ +void *picopal_mpr_alloc(picopal_objsize_t size); + +/** + * Releases the chunk of memory pointed to by '*p'. 'p' must be previously + * allocated by a call to picopal_mpr_alloc(). + */ +void picopal_mpr_free(void **p); + +#define PICOPAL_PROT_NONE 0 /* the memory cannot be accessed at all */ +#define PICOPAL_PROT_READ 1 /* the memory can be read */ +#define PICOPAL_PROT_WRITE 2 /* the memory can be written to */ + +/** + * Specifies the desired protection 'prot' for the memory page(s) containing + * part or all of the interval [addr, addr+len-1]. If an access is disallowed + * by the protection given it, the program receives a SIGSEGV. + */ +pico_status_t picopal_mpr_protect(void *addr, picopal_objsize_t len, picopal_int16 prot); + +/* Fast, Compact Approximation of the Exponential Function */ +picopal_double picopal_quick_exp(const picopal_double y); + +/* *************************************************/ +/* types functions for time measurement */ +/* *************************************************/ + +extern void picopal_get_timer(picopal_uint32 * sec, picopal_uint32 * usec); + +#ifdef __cplusplus +} +#endif + + +#endif /*PICOPAL_H_*/ |