summaryrefslogtreecommitdiffstats
path: root/pico/lib/picopal.h
diff options
context:
space:
mode:
authorCharles Chen <clchen@google.com>2009-06-22 16:25:25 -0700
committerCharles Chen <clchen@google.com>2009-06-22 17:14:37 -0700
commit1284d937084a20b457c280259fff59391129509a (patch)
tree5630028284c450b56a56b187d9c99cf7ebcee9cc /pico/lib/picopal.h
parentf605ee98e5e03144c25a92af7e5d2a3ec33d375f (diff)
downloadexternal_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.h288
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_*/