summaryrefslogtreecommitdiff
path: root/tnet_io/KaldiLib/Common.cc
diff options
context:
space:
mode:
authorDeterminant <ted.sybil@gmail.com>2015-06-25 12:56:45 +0800
committerDeterminant <ted.sybil@gmail.com>2015-06-25 12:56:45 +0800
commita74183ddb4ab8383bfe214b3745eb8a0a99ee47a (patch)
treed5e69cf8c4c2db2e3a4722778352fc3c95953bb2 /tnet_io/KaldiLib/Common.cc
parentb6301089cde20f4c825c7f5deaf179082aad63da (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.cc277
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