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

📄 sof_03.cc

📁 这是一个从音频信号里提取特征参量的程序
💻 CC
字号:
// file: $isip/class/io/Sof/sof_03.cc// version: $Id: sof_03.cc,v 1.3 2001/04/16 15:23:28 duncan Exp $//// isip include files//#include "Sof.h"// method: assign//// arguments://  const Sof& sof: (input) file object from which to copy//// return: a boolean value indicating status//// this method assigns input object to this//boolean Sof::assign(const Sof& sof_a) {  // only assign if they are of the same type  //  if (file_type_d != sof_a.file_type_d) {    return Error::handle(name(), L"assign", Error::ARG, __FILE__, __LINE__);  }    // copy the symbol table  //  if (!table_d.assign(sof_a.table_d)) {    return Error::handle(name(), L"assign", SofList::ERR_SYMB,			 __FILE__, __LINE__);  }  // copy the list of items  //  if (!index_d.assign(sof_a.index_d)) {    return Error::handle(name(), L"assign", SofList::ERR, __FILE__, __LINE__);  }    // exit gracefully  //  return true;}// method: clear//// arguments://  Integral::CMODE ctype: (input) clear mode//// return: a boolean value indicating status//// this method can be used only for writable Sof files. it deletes// all items from the sof file for all CMODE's//boolean Sof::clear(Integral::CMODE ctype_a) {    // we can not clear read only sof  //  if (!fp_d.isWritable()) {    return Error::handle(name(), L"clear", Error::MOD_READONLY,			 __FILE__, __LINE__);  }  // if we are in partial read more, error  //  if (partial_read_d) {    return Error::handle(name(), L"clear", ERR, __FILE__, __LINE__);  }    // if we are in partial write more, error  //  if (partial_write_d) {    return Error::handle(name(), L"clear", ERR, __FILE__, __LINE__);  }  // delete the index  //  if (!index_d.clear()) {    return Error::handle(name(), L"clear", SofList::ERR, __FILE__, __LINE__);  }    // delete the symbol table  //  if (!table_d.clear()) {    return Error::handle(name(), L"clear", SofSymbolTable::ERR,			 __FILE__, __LINE__);  }    // truncate the file to be the length of the header  //  if (!fp_d.truncate(end_of_header_d)) {    return Error::handle(name(), L"clear", Error::IO, __FILE__, __LINE__);  }    // seek to the beginning of the file (truncate does not do this)  //  if (!fseek(0, File::POS)) {    return Error::handle(name(), L"clear", Error::SEEK, __FILE__, __LINE__);  }    // exit gracefully  //  return true;}// method: memSize//// arguments: none//// return: long value//// find the memory size of the Sof object in bytes//long Sof::memSize() {    long size = 0;    // the scalar data  //  size += name_d.memSize();  size += expanded_name_d.memSize();  size += sizeof(file_type_d);  size += fp_d.memSize();  size += sizeof(delimiter_d);  size += sizeof(end_of_header_d);  size += sizeof(end_of_data_d);  size += sizeof(implicit_count_d);  size += sizeof(cur_data_d);  size += sizeof(disable_lock_d);  size += sizeof(lock_retry_d);  size += sizeof(lock_delay_d);  size += table_d.memSize();  size += index_d.memSize();  size += cname_d.memSize();  size += version_d.memSize();  size += magic_d.memSize();  size += sizeof(debug_level_d);  // exit gracefully  //  return (long)size;}// method: clearSpace//// arguments://  long nbytes: (input) number of bytes to clear//// return: a boolean value indicating status//// clear out this space by filling in with all 0's//boolean Sof::clearSpace(long nbytes_a) {  // use a static buffer of clear bytes  //  static byte clear_buffer[BUFFER_SIZE];  static boolean clear_flag = false;    if (!clear_flag) {    MemoryManager::memset(clear_buffer, (long)DELETE_CHAR_BINARY, BUFFER_SIZE);    clear_flag = true;  }    static byte space_buffer[BUFFER_SIZE];  static boolean space_flag = false;  if (!space_flag) {    MemoryManager::memset(space_buffer, (long)DELETE_CHAR_TEXT, BUFFER_SIZE);    space_flag = true;  }    // loop through the space  //  long pass_size;  byte* buf = clear_buffer;    if (isText()) {    nbytes_a -= NEWLINE_LENGTH;    buf = space_buffer;  }    for (long i = nbytes_a; i > 0; i -= BUFFER_SIZE) {     if (i > BUFFER_SIZE) {      pass_size = BUFFER_SIZE;    }    else {      pass_size = i;    }    // call the system function, we don't want any range checking or    // byte swapping    //    if (fp_d.write(buf, sizeof(byte), pass_size) != pass_size) {      return Error::handle(name(), L"clearSpace", Error::WRITE,			   __FILE__, __LINE__);    }    // for binary files, update position    //    if (isBinary()) {      cur_pos_d += pass_size * sizeof(byte);    }  }          if (isText()) {    if (fp_d.write(NEWLINE_BUFFER, sizeof(byte), NEWLINE_LENGTH)	!= NEWLINE_LENGTH) {      return Error::handle(name(), L"clearSpace", Error::WRITE,			   __FILE__, __LINE__);    }  }      // exit gracefully  //  return true;}// method: cleanUp//// arguments: none//// return: a boolean value indicating status//// this method frees memory space associated with an Sof object.//boolean Sof::cleanUp() {  // general information about a file  //  name_d.clear();  expanded_name_d.clear();  file_type_d = File::TEXT;    // unix I/O related variables  //  if (fp_d.isOpen()) {    fp_d.close();    cur_pos_d = DEF_POS;  }  // auxiliary information  //  delimiter_d = DEF_DELIMITER;  end_of_header_d = (long)-1;  end_of_data_d = (long)-1;  cur_data_d = (long)-1;    // linked lists used to process the object index  //  freeIndex();    // magic number processing  //  cname_d.clear();  version_d.clear();  magic_d.clear();  // debugging parameters  //  debug_level_d = Integral::NONE;    // implicit tag count  //  implicit_count_d = IMPLICIT_START;    // exit gracefully  //  return true;}// method: freeIndex//// arguments: none//// return: a boolean value indicating status//// this method frees memory space associated with an Sof index.//boolean Sof::freeIndex() {  // clear the table and list  //  if (!table_d.clear()) {    // only error if we aren't exiting    //    if (!Error::isExiting()) {      return Error::handle(name(), L"freeIndex", SofSymbolTable::ERR,			   __FILE__, __LINE__);    }  }  if (!index_d.clear()) {    // only error if we aren't exiting    //    if (!Error::isExiting()) {      return Error::handle(name(), L"freeIndex", SofList::ERR,			   __FILE__, __LINE__);    }  }  // exit gracefully  //  return true;}

⌨️ 快捷键说明

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