diff options
author | Determinant <[email protected]> | 2015-06-25 12:56:45 +0800 |
---|---|---|
committer | Determinant <[email protected]> | 2015-06-25 12:56:45 +0800 |
commit | a74183ddb4ab8383bfe214b3745eb8a0a99ee47a (patch) | |
tree | d5e69cf8c4c2db2e3a4722778352fc3c95953bb2 /tnet_io/KaldiLib/Common.cc | |
parent | b6301089cde20f4c825c7f5deaf179082aad63da (diff) |
let HTK I/O implementation be a single package
Diffstat (limited to 'tnet_io/KaldiLib/Common.cc')
-rw-r--r-- | tnet_io/KaldiLib/Common.cc | 277 |
1 files changed, 0 insertions, 277 deletions
diff --git a/tnet_io/KaldiLib/Common.cc b/tnet_io/KaldiLib/Common.cc deleted file mode 100644 index 40909ee..0000000 --- a/tnet_io/KaldiLib/Common.cc +++ /dev/null @@ -1,277 +0,0 @@ -#include <string> -#include <stdexcept> -#include <cmath> -#include <cfloat> -#include <cstdio> - -#include "Common.h" -#include "MathAux.h" - - -/// Defines the white chars for string trimming -#if !defined(WHITE_CHARS) -# define WHITE_CHARS " \t" -#endif - -namespace TNet { - -#include <ios> - - // Allocating stream variable used by stream modifier MatrixVectorIostreamControl - const int MATRIX_IOS_FORMAT_IWORD = std::ios_base::xalloc(); - - //*************************************************************************** - //*************************************************************************** - int getHTKstr(char *str) - { - char termChar = '\0'; - char *chrptr = str; - - while (std::isspace(*chrptr)) ++chrptr; - - if (*chrptr == '\'' || *chrptr == '"') { - termChar = *chrptr; - chrptr++; - } - - for (; *chrptr; chrptr++) { - if (*chrptr == '\'' || *chrptr == '"') { - if (termChar == *chrptr) { - termChar = '\0'; - chrptr++; - break; - } - } - - if (std::isspace(*chrptr) && !termChar) { - break; - } - - if (*chrptr == '\\') { - ++chrptr; - if (*chrptr == '\0' || (*chrptr >= '0' && *chrptr <= '7' && - (*++chrptr < '0' || *chrptr > '7' || - *++chrptr < '0' || *chrptr > '7'))) { - return -1; - } - - if (*chrptr >= '0' && *chrptr <= '7') { - *chrptr = (char)((*chrptr - '0') + (chrptr[-1] - '0') * 8 + (chrptr[-2] - '0') * 64); - } - } - *str++ = *chrptr; - } - - if (termChar) { - return -2; - } - - *str = '\0'; - - return 0; - } - - - //***************************************************************************** - //***************************************************************************** - void - ParseHTKString(const std::string & rIn, std::string & rOut) - { - int ret_val; - - // the new string will be at most as long as the original, so we allocate - // space - char* new_str = new char[rIn.size() + 1]; - - char* p_htk_str = new_str; - - strcpy(p_htk_str, rIn.c_str()); - ret_val = getHTKstr(p_htk_str); - - // call the function - if (!ret_val) { - rOut = p_htk_str; - } - - delete [] new_str; - - if (ret_val) { - throw std::runtime_error("Error parsing HTK string"); - } - } - - - - //*************************************************************************** - //*************************************************************************** - bool - IsBigEndian() - { - int a = 1; - return (bool) ((char *) &a)[0] != 1; - } - - - //*************************************************************************** - //*************************************************************************** - void - MakeHtkFileName(char* pOutFileName, const char* inFileName, - const char* out_dir, const char* out_ext) - { - const char* base_name; - const char* bname_end = NULL; - const char* chrptr; - - // if (*inFileName == '*' && *++inFileName == '/') ++inFileName; - - // we don't do anything if file is stdin/out - if (!strcmp(inFileName, "-")) - { - pOutFileName[0] = '-'; - pOutFileName[1] = '\0'; - return; - } - - base_name = strrchr(inFileName, '/'); - base_name = base_name != NULL ? base_name + 1 : inFileName; - - if (out_ext) bname_end = strrchr(base_name, '.'); - if (!bname_end) bname_end = base_name + strlen(base_name); - - - if ((chrptr = strstr(inFileName, "/./")) != NULL) - { - // what is in path after /./ serve as base name - base_name = chrptr + 3; - } - /* else if (*inFileName != '/') - { - // if inFileName isn't absolut path, don't forget directory structure - base_name = inFileName; - }*/ - - *pOutFileName = '\0'; - if (out_dir) - { - if (*out_dir) - { - strcat(pOutFileName, out_dir); - strcat(pOutFileName, "/"); - } - strncat(pOutFileName, base_name, bname_end-base_name); - } - else - { - strncat(pOutFileName, inFileName, bname_end-inFileName); - } - - if (out_ext && *out_ext) - { - strcat(pOutFileName, "."); - strcat(pOutFileName, out_ext); - } - } - - - //**************************************************************************** - //**************************************************************************** - bool - CloseEnough(const float f1, const float f2, const float nRounds) - { - bool ret_val = (_ABS((f1 - f2) / (f2 == 0.0f ? 1.0f : f2)) - < (nRounds * FLT_EPSILON)); - - return ret_val; - } - - - //**************************************************************************** - //**************************************************************************** - bool - CloseEnough(const double f1, const double f2, const double nRounds) - { - bool ret_val = (_ABS((f1 - f2) / (f2 == 0.0 ? 1.0 : f2)) - < (nRounds * DBL_EPSILON)); - - return ret_val; - } - - - //**************************************************************************** - //**************************************************************************** - char* - ExpandHtkFilterCmd(const char *command, const char *filename, const char* pFilter) - { - - char *out, *outend; - const char *chrptr = command; - int ndollars = 0; - int fnlen = strlen(filename); - - while (*chrptr++) ndollars += (*chrptr == *pFilter); - - out = (char*) malloc(strlen(command) - ndollars + ndollars * fnlen + 1); - - outend = out; - - for (chrptr = command; *chrptr; chrptr++) { - if (*chrptr == *pFilter) { - strcpy(outend, filename); - outend += fnlen; - } else { - *outend++ = *chrptr; - } - } - *outend = '\0'; - return out; - } - - //*************************************************************************** - //*************************************************************************** - char * - StrToUpper(char *str) - { - char *chptr; - for (chptr = str; *chptr; chptr++) { - *chptr = (char)toupper(*chptr); - } - return str; - } - - - //**************************************************************************** - //**************************************************************************** - std::string& - Trim(std::string& rStr) - { - // WHITE_CHARS is defined in common.h - std::string::size_type pos = rStr.find_last_not_of(WHITE_CHARS); - if(pos != std::string::npos) - { - rStr.erase(pos + 1); - pos = rStr.find_first_not_of(WHITE_CHARS); - if(pos != std::string::npos) rStr.erase(0, pos); - } - else - rStr.erase(rStr.begin(), rStr.end()); - - return rStr; - } - - -} // namespace TNet - -//#ifdef CYGWIN - -void assertf(const char *c, int i, const char *msg){ - printf("Assertion \"%s\" failed: file \"%s\", line %d\n", msg?msg:"(null)", c?c:"(null)", i); - abort(); -} - - -void assertf_throw(const char *c, int i, const char *msg){ - char buf[2000]; - snprintf(buf, 1999, "Assertion \"%s\" failed, throwing exception: file \"%s\", line %d\n", msg?msg:"(null)", c?c:"(null)", i); - throw std::runtime_error((std::string)buf); -} -//#endif |