SphinxBase 0.6
include/sphinxbase/strfuncs.h
Go to the documentation of this file.
00001 /* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
00002 /* ====================================================================
00003  * Copyright (c) 1995-2004 Carnegie Mellon University.  All rights
00004  * reserved.
00005  *
00006  * Redistribution and use in source and binary forms, with or without
00007  * modification, are permitted provided that the following conditions
00008  * are met:
00009  *
00010  * 1. Redistributions of source code must retain the above copyright
00011  *    notice, this list of conditions and the following disclaimer. 
00012  *
00013  * 2. Redistributions in binary form must reproduce the above copyright
00014  *    notice, this list of conditions and the following disclaimer in
00015  *    the documentation and/or other materials provided with the
00016  *    distribution.
00017  *
00018  * This work was supported in part by funding from the Defense Advanced 
00019  * Research Projects Agency and the National Science Foundation of the 
00020  * United States of America, and the CMU Sphinx Speech Consortium.
00021  *
00022  * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND 
00023  * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
00024  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00025  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
00026  * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
00027  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
00028  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
00029  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
00030  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
00031  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
00032  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00033  *
00034  * ====================================================================
00035  *
00036  */
00042 #ifndef __SB_STRFUNCS_H__
00043 #define __SB_STRFUNCS_H__
00044 
00045 #include <stdarg.h>
00046 
00047 /* Win32/WinCE DLL gunk */
00048 #include <sphinxbase/sphinxbase_export.h>
00049 #include <sphinxbase/prim_type.h>
00050 
00051 
00052 #ifdef __cplusplus
00053 extern "C" {
00054 #endif
00055 #if 0
00056 /* Fool Emacs. */
00057 }
00058 #endif
00059 
00064 SPHINXBASE_EXPORT
00065 char *string_join(const char *base, ...);
00066 
00070 enum string_edge_e {
00071     STRING_START,       
00072     STRING_END,         
00073     STRING_BOTH         
00074 };
00075 
00082 SPHINXBASE_EXPORT
00083 char *string_trim(char *string, enum string_edge_e which);
00084 
00092 SPHINXBASE_EXPORT
00093 double atof_c(char const *str);
00094 
00095 SPHINXBASE_EXPORT
00096 uint32 utf8_decode(uint32 *state, uint32 *codep, uint32 *byte);
00097 
00098 /* FIXME: Both of these string splitting functions basically suck.  I
00099  have attempted to fix them as best I can.  (dhuggins@cs, 20070808) */
00100 
00108 SPHINXBASE_EXPORT
00109 int32 str2words (char *line,    
00113                  char **wptr,   
00125                  int32 n_wptr   
00127         );
00128 
00142 SPHINXBASE_EXPORT
00143 int32 nextword (char *line, 
00145                 const char *delim, 
00148                 char **word,
00151                 char *delimfound 
00154         );
00155 
00156 #ifdef __cplusplus
00157 }
00158 #endif
00159 
00160 
00161 #endif /* __SB_STRFUNCS_H__ */