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

📄 file_03.cc

📁 这是一个从音频信号里提取特征参量的程序
💻 CC
字号:
// file: $isip/class/system/File/file_03.cc// version: $Id: file_03.cc,v 1.4 2001/05/07 18:53:36 duncan Exp $//// isip include files//#include "File.h"#include <MemoryManager.h>#include <SysChar.h>#include <SysString.h> // declare some static memory//static unichar* buf = (unichar*)NULL;static long buf_len = 0;// method: swap//// arguments://  File& arg: (input) source file pointer//// return: a boolean value indicating status//// this swap method serves as File's assignment method. we don't// ever want multiple file pointers on the same file, so if you// assign a pointer to another the source loses it's data//boolean File::swap(File& arg_a) {  // save this object as temporary  //  FILE* tmp_fp = fp_d;  MODE tmp_mode = mode_d;  TYPE tmp_type = type_d;    boolean tmp_lock = lock_d;  BMODE tmp_byte_mode = byte_mode_d;  boolean tmp_byte_swap = byte_swap_d;  long tmp_indent_level = indent_level_d;  long tmp_line_wrap = line_wrap_d;  long tmp_column_position = column_position_d;  long tmp_open_retry = open_retry_d;  long tmp_open_delay = open_delay_d;    // copy over internal data from the other object into this object  //  fp_d = arg_a.fp_d;  mode_d = arg_a.mode_d;  type_d = arg_a.type_d;  lock_d = arg_a.lock_d;  byte_mode_d = arg_a.byte_mode_d;  byte_swap_d = arg_a.byte_swap_d;  indent_level_d = arg_a.indent_level_d;  line_wrap_d = arg_a.line_wrap_d;  column_position_d = arg_a.column_position_d;  open_retry_d = arg_a.open_retry_d;  open_delay_d = arg_a.open_delay_d;    // copy temporary data into other object  //  arg_a.fp_d = tmp_fp;  arg_a.mode_d = tmp_mode;  arg_a.type_d = tmp_type;    arg_a.lock_d = tmp_lock;  arg_a.byte_mode_d = tmp_byte_mode;  arg_a.byte_swap_d = tmp_byte_swap;  arg_a.indent_level_d = tmp_indent_level;  arg_a.line_wrap_d = tmp_line_wrap;  arg_a.column_position_d = tmp_column_position;  arg_a.open_retry_d = tmp_open_retry;  arg_a.open_delay_d = tmp_open_delay;    // exit gracefully  //  return true;}// method: get//// arguments://  SysChar& chr: (output) a character being read//  // return: a boolean value indicating status//// get a char from the file//boolean File::get(SysChar& chr_a) {    // null file pointer, error  //  if ((fp_d == (FILE*)NULL) || (mode_d == WRITE_ONLY)) {    return Error::handle(name(), L"get", Error::READ_CLOSED,			 __FILE__, __LINE__);  }    // read the character  //  unichar chr = SysString::isip_fgetwc(fp_d);    // make sure this is not the WEOF  //  if ((wint_t)chr == (wint_t)WEOF) {        // nothing has been read    //    return false;  }    // assign the value and return  //  return chr_a.assign(chr);}// method: get//// arguments://  SysString& str: (output) string of data read//  long len: (input) maximum length to read//  // return: a boolean value indicating status//// get a string from the file//boolean File::get(SysString& str_a, long len_a) {    // clear the output string  //  str_a.clear();  // check the file pointer and the mode  //  if ((fp_d == (FILE*)NULL) || (mode_d == WRITE_ONLY)) {    return Error::handle(name(), L"get", Error::READ_CLOSED,			 __FILE__, __LINE__);  }    // increase buffer size if necessary  //  if (len_a > buf_len) {    if (buf != (unichar*)NULL) {      // unregister and delete the memory      //      MemoryManager::deleteStatic(buf);    }    buf_len = len_a;        // allocate and register the memory    //    buf = (unichar*)MemoryManager::newStatic((buf_len + 1) * sizeof(unichar));  }  // clear out the buffer  //  MemoryManager::memset(buf, 0, (len_a + 1) * sizeof(unichar));    // read the string  //  if (SysString::isip_fgetws(buf, len_a, fp_d) == (unichar*)NULL) {        // nothing has been read    //    return false;  }    // assign the output buffer  //  str_a.assign(buf);  // strip newlines from the end of the string  //  static SysString newline(L"\n");  str_a.trimRight(newline);    // exit gracefully  //  return true;}// method: memSize//// arguments: none//  // return: a long number//// return the memory size of the class in bytes//long File::memSize() const {  // start with the file pointer size  //  long s = sizeof(fp_d);    // add the size of each data member  //  s += sizeof(mode_d);  s += sizeof(type_d);  s += sizeof(lock_d);  s += sizeof(byte_mode_d);  s += sizeof(byte_swap_d);  s += sizeof(indent_level_d);  s += sizeof(line_wrap_d);  s += sizeof(column_position_d);  s += sizeof(open_retry_d);  s += sizeof(open_delay_d);      // return the size  //  return s;}

⌨️ 快捷键说明

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