⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sofsymboltable.h

📁 这是一个从音频信号里提取特征参量的程序
💻 H
字号:
// file: $isip/class/io/SofSymbolTable/SofSymbolTable.h// version: $Id: SofSymbolTable.h,v 1.14 2000/09/15 19:14:22 zhao Exp $//// make sure definitions are only made once//#ifndef ISIP_SOF_SYMBOL_TABLE#define ISIP_SOF_SYMBOL_TABLE// isip include files//#ifndef ISIP_SYS_STRING#include <SysString.h>#endif// SofSymbolTable: a class to be used under Sof. the symbol table is an//  array of SysStrings which are the symbol names. it is used to//  keep track of a symbol table for Sof's use. //class SofSymbolTable {    //---------------------------------------------------------------------------  //  // public constants  //  //---------------------------------------------------------------------------public:    // define the class name  //  static const SysString CLASS_NAME;    //----------------------------------------  //  // other important constants  //  //----------------------------------------      // maximum length of a symbol  //  static const long MAX_SYM_LENGTH = 64;  // the size to grow the symbol array by each time  //  static const long GROW_SIZE = 256;    // invalid characters within symbol names  //  static const SysString INVALID_CHARS;  // constants for efficiency measure  //  static const long MAX_WASTED_SPACE = 1024;    //----------------------------------------  //  // default values and arguments  //  //----------------------------------------      // dummy index for a non-exist symbol in the table  //  static const long NO_SYMB = -1;  //----------------------------------------  //  // error codes  //  //----------------------------------------    // class general error  //  static const long ERR = 10200;    // error code indicating failure to add a symbol into the symbol table  //  static const long ERR_ADD = 10201;    // error code indicating failure to find a symbol in the symbol table  //  static const long ERR_NOTFND = 10202;  // error code indicating no transform vector  //  static const long ERR_NOVECT = 10203;    // error code indicating symbol index out of range   //  static const long ERR_SYMB = 10204;    //---------------------------------------------------------------------------  //  // protected data  //  //---------------------------------------------------------------------------protected:    // an array of string symbols  //  SysString* table_d;    // number of references to symbols  //  long* ref_count_d;			    // current length of the symbol table (some entries may be empty)  //  long table_size_d;    // number of non-empty entries in the symbol table  //  long num_syms_d;    // capacity of the symbol table, it can be grown dynamically  //  long table_capacity_d;    // parameters used to transform between tables  //  long* transform_d;		  long transform_size_d;    // debugging parameters  //  Integral::DEBUG debug_level_d;  //---------------------------------------------------------------------------  //  // required public methods  //  //---------------------------------------------------------------------------public:  // method: name  //  static const SysString& name() {    return CLASS_NAME;  }    // other static methods  //  static boolean diagnose(Integral::DEBUG debug_level);    // method: setDebug  //  boolean setDebug(Integral::DEBUG level) {    debug_level_d = level;    return true;  }  // other debug methods  //  boolean debug(const unichar* msg) const;   // destructor/constructor(s)  //  ~SofSymbolTable();  SofSymbolTable();  SofSymbolTable(const SofSymbolTable& arg);  // assign methods  //  boolean assign(const SofSymbolTable& arg);    // method: operator=  //  SofSymbolTable& operator=(const SofSymbolTable& arg) {    if (!assign(arg)) {      Error::handle(name(), L"operator=", Error::ARG,                    __FILE__, __LINE__);    }          return *this;  }    // i/o methods:  //  these methods are omitted because SofSymbolTable can not write itself  //  to an sof file  //  // equality methods:  //  these methods are omitted because they are not useful for  //  SofSymbolTable objects  //  // memory management methods:  //  new and delete are omitted because memory for SofSymbolTable objects is  //  not managed by the MemoryManager class. the clear method does not  //  accept FREE mode, so the user is forced to use the destructor for  //  handling the SofSymbolTable. Sof files could easily be corrupted  //  if the memory of SofSymbolTable is improperly freed.  //  boolean clear(Integral::CMODE ctype_a = Integral::DEF_CMODE);  //---------------------------------------------------------------------------  //  // class-specific public methods:  //  extensions to the required public methods  //  //---------------------------------------------------------------------------  // assign methods  //  boolean assignCompact(const SofSymbolTable& arg);    // memory size methods  //  long memSize() const;  //---------------------------------------------------------------------------  //  // class-specific public methods:  //  symbol table manipulation methods  //  //---------------------------------------------------------------------------    // symbol retrieval methods  //  long getIndex(const SysString& name) const;  boolean getSymbol(SysString& name, long num) const;  long getRefCount(const SysString& name) const;  long getRefCount(long index) const;  // method: getCount  //  long getCount() const {    return num_syms_d;  }    // symbol entry manipulation methods  //  long add(const SysString& name);  boolean add(long index, long refs, const SysString& name);    boolean remove(const SysString& name);  boolean remove(long index);  // checkName methods:  //  this method checks if a symbol name is valid  //  boolean checkName(const SysString& name) const;  // method: isEfficient  //  this method checks if the symbol table is used efficiently by checking  //  the number of unused slots   //  boolean isEfficient() const {        // if few spaces are wasted, it is efficient    //    return ((table_size_d - num_syms_d) < MAX_WASTED_SPACE);      }  //---------------------------------------------------------------------------  //  // class-specific public methods:  //  symbol table conversion methods  //  //---------------------------------------------------------------------------  // convert methods:  //  these methods get the index of a symbol in this table given its index  //  in the old table  //  long convert(const SofSymbolTable& old, long index) const;  long convert(long index) const;  // transform methods:  //  these methods are for manipulating the transform vector between the  //  old symbol table and this symbol table  //  boolean transformInit(const SofSymbolTable& old);  boolean transformDelete();  //---------------------------------------------------------------------------  //  // private methods  //  //---------------------------------------------------------------------------private:  // add new symbol methods  //  long addNew(const SysString& name);    // grow table capacity methods  //  boolean growCapacity();    // release memory methods  //  boolean freeMem();};// end of include file// #endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -