summaryrefslogtreecommitdiff
path: root/tnet_io/KaldiLib/Common.h
diff options
context:
space:
mode:
authorDeterminant <[email protected]>2015-06-25 12:56:45 +0800
committerDeterminant <[email protected]>2015-06-25 12:56:45 +0800
commita74183ddb4ab8383bfe214b3745eb8a0a99ee47a (patch)
treed5e69cf8c4c2db2e3a4722778352fc3c95953bb2 /tnet_io/KaldiLib/Common.h
parentb6301089cde20f4c825c7f5deaf179082aad63da (diff)
let HTK I/O implementation be a single package
Diffstat (limited to 'tnet_io/KaldiLib/Common.h')
-rw-r--r--tnet_io/KaldiLib/Common.h233
1 files changed, 0 insertions, 233 deletions
diff --git a/tnet_io/KaldiLib/Common.h b/tnet_io/KaldiLib/Common.h
deleted file mode 100644
index 9cd9658..0000000
--- a/tnet_io/KaldiLib/Common.h
+++ /dev/null
@@ -1,233 +0,0 @@
-#ifndef TNet_Common_h
-#define TNet_Common_h
-
-#include <cstdlib>
-#include <string.h> // C string stuff like strcpy
-#include <string>
-#include <sstream>
-#include <stdexcept>
-
-/* Alignment of critical dynamic data structure
- *
- * Not all platforms support memalign so we provide a stk_memalign wrapper
- * void *stk_memalign( size_t align, size_t size, void **pp_orig )
- * *pp_orig is the pointer that has to be freed afterwards.
- */
-#ifdef HAVE_POSIX_MEMALIGN
-# define stk_memalign(align,size,pp_orig) \
- ( !posix_memalign( pp_orig, align, size ) ? *(pp_orig) : NULL )
-# ifdef STK_MEMALIGN_MANUAL
-# undef STK_MEMALIGN_MANUAL
-# endif
-#elif defined(HAVE_MEMALIGN)
- /* Some systems have memalign() but no declaration for it */
- //void * memalign( size_t align, size_t size );
-# define stk_memalign(align,size,pp_orig) \
- ( *(pp_orig) = memalign( align, size ) )
-# ifdef STK_MEMALIGN_MANUAL
-# undef STK_MEMALIGN_MANUAL
-# endif
-#else /* We don't have any choice but to align manually */
-# define stk_memalign(align,size,pp_orig) \
- (( *(pp_orig) = malloc( size + align - 1 )) ? \
- (void *)( (((unsigned long)*(pp_orig)) + 15) & ~0xFUL ) : NULL )
-# define STK_MEMALIGN_MANUAL
-#endif
-
-
-#define swap8(a) { \
- char t=((char*)&a)[0]; ((char*)&a)[0]=((char*)&a)[7]; ((char*)&a)[7]=t;\
- t=((char*)&a)[1]; ((char*)&a)[1]=((char*)&a)[6]; ((char*)&a)[6]=t;\
- t=((char*)&a)[2]; ((char*)&a)[2]=((char*)&a)[5]; ((char*)&a)[5]=t;\
- t=((char*)&a)[3]; ((char*)&a)[3]=((char*)&a)[4]; ((char*)&a)[4]=t;}
-#define swap4(a) { \
- char t=((char*)&a)[0]; ((char*)&a)[0]=((char*)&a)[3]; ((char*)&a)[3]=t;\
- t=((char*)&a)[1]; ((char*)&a)[1]=((char*)&a)[2]; ((char*)&a)[2]=t;}
-#define swap2(a) { \
- char t=((char*)&a)[0]; ((char*)&a)[0]=((char*)&a)[1]; ((char*)&a)[1]=t;}
-
-
-namespace TNet
-{
- /** **************************************************************************
- ** **************************************************************************
- * @brief Aligns a number to a specified base
- * @param n Number of type @c _T to align
- * @return Aligned value of type @c _T
- */
- template<size_t _align, typename _T>
- inline _T
- align(const _T n)
- {
- const _T x(_align - 1);
- return (n + x) & ~(x);
- }
-
-
- /**
- * @brief Returns true if architecture is big endian
- */
- bool
- IsBigEndian();
-
-
- /**
- * @brief Returns true if two numbers are close enough to each other
- *
- * @param f1 First operand
- * @param f2 Second operand
- * @param nRounds Expected number of operations prior to this comparison
- */
- bool
- CloseEnough(const float f1, const float f2, const float nRounds);
-
-
- /**
- * @brief Returns true if two numbers are close enough to each other
- *
- * @param f1 First operand
- * @param f2 Second operand
- * @param nRounds Expected number of operations prior to this comparison
- */
- bool
- CloseEnough(const double f1, const double f2, const double nRounds);
-
-
- /**
- * @brief Parses a HTK-style string into a C++ std::string readable
- *
- * @param rIn HTK input string
- * @param rOut output parsed string
- */
- void
- ParseHTKString(const std::string & rIn, std::string & rOut);
-
-
- /**
- * @brief Synthesize new file name based on name, path, and extension
- *
- * @param pOutFileName full ouptut file name
- * @param pInFileName file name
- * @param pOutDir directory
- * @param pOutExt extension
- */
- void
- MakeHtkFileName(char *pOutFileName, const char* pInFileName, const char *pOutDir,
- const char *pOutExt);
-
-
- /**
- * @brief Removes the leading and trailing white chars
- *
- * @param rStr Refference to the string to be processed
- * @return Refference to the original string
- *
- * The white characters are determined by the @c WHITE_CHARS macro defined
- * above.
- */
- std::string&
- Trim(std::string& rStr);
-
-
- char*
- StrToUpper(char* pStr);
-
- char*
- ExpandHtkFilterCmd(const char *command, const char *filename, const char* pFilter);
-
-
- template <class T>
- std::string to_string(const T& val)
- {
- std::stringstream ss;
- ss << val;
- return ss.str();
- }
-
- inline void
- ExpectKeyword(std::istream &i_stream, const char *kwd)
- {
- std::string token;
- i_stream >> token;
- if (token != kwd) {
- throw std::runtime_error(std::string(kwd) + " expected");
- }
- }
-
- extern const int MATRIX_IOS_FORMAT_IWORD;
-
- enum MatrixVectorIostreamControlBits {
- ACCUMULATE_INPUT = 1,
-// BINARY_OUTPUT = 2
- };
-
- class MatrixVectorIostreamControl
- {
- public:
- MatrixVectorIostreamControl(enum MatrixVectorIostreamControlBits bitsToBeSet, bool valueToBeSet)
- : mBitsToBeSet(bitsToBeSet), mValueToBeSet(valueToBeSet) {}
-
- static long Flags(std::ios_base &rIos, enum MatrixVectorIostreamControlBits bits)
- { return rIos.iword(MATRIX_IOS_FORMAT_IWORD); }
-
- long mBitsToBeSet;
- bool mValueToBeSet;
-
- friend std::ostream & operator <<(std::ostream &rOs, const MatrixVectorIostreamControl modifier)
- {
- if(modifier.mValueToBeSet) {
- rOs.iword(MATRIX_IOS_FORMAT_IWORD) |= modifier.mBitsToBeSet;
- } else {
- rOs.iword(MATRIX_IOS_FORMAT_IWORD) &= ~modifier.mBitsToBeSet;
- }
- return rOs;
- }
-
- friend std::istream & operator >>(std::istream &rIs, const MatrixVectorIostreamControl modifier)
- {
- if(modifier.mValueToBeSet) {
- rIs.iword(MATRIX_IOS_FORMAT_IWORD) |= modifier.mBitsToBeSet;
- } else {
- rIs.iword(MATRIX_IOS_FORMAT_IWORD) &= ~modifier.mBitsToBeSet;
- }
- return rIs;
- }
- };
-
-
-
-
-} // namespace TNet
-
-#ifdef __ICC
-#pragma warning (disable: 383) // ICPC remark we don't want.
-#pragma warning (disable: 810) // ICPC remark we don't want.
-#pragma warning (disable: 981) // ICPC remark we don't want.
-#pragma warning (disable: 1418) // ICPC remark we don't want.
-#pragma warning (disable: 444) // ICPC remark we don't want.
-#pragma warning (disable: 869) // ICPC remark we don't want.
-#pragma warning (disable: 1287) // ICPC remark we don't want.
-#pragma warning (disable: 279) // ICPC remark we don't want.
-#pragma warning (disable: 981) // ICPC remark we don't want.
-#endif
-
-//#ifdef CYGWIN
-#if 1
-#undef assert
-#ifndef NDEBUG
-#define assert(e) ((e) ? (void)0 : assertf(__FILE__, __LINE__, #e))
-#else
-#define assert(e) ((void)0)
-#endif
-void assertf(const char *c, int i, const char *msg); // Just make it possible to break into assert on gdb-- has some kind of bug on cygwin.
-#else
-#include <cassert>
-#endif
-
-#define assert_throw(e) ((e) ? (void)0 : assertf_throw(__FILE__, __LINE__, #e))
-void assertf_throw(const char *c, int i, const char *msg);
-
-#define DAN_STYLE_IO
-
-#endif // ifndef TNet_Common_h
-