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

📄 cpol_05.cc

📁 这是一个从音频信号里提取特征参量的程序
💻 CC
字号:
// file: $isip/class/search/ContextPool/cpol_05.cc// version: $Id: cpol_05.cc,v 1.2 2003/01/23 20:00:25 alphonso Exp $//// isip include files//#include "ContextPool.h"// method: assign//// arguments://  const ContextPool& copy_node: (input) node to copy//// return: logical error status//// assign ContextPool from the copy//boolean ContextPool::assign(const ContextPool& copy_node_a) {  // clear the contents  //  clear();    // set the allocation mode  //  return pool_d.assign(copy_node_a.pool_d);}// method: clear//// arguments://  Integral::CMODE cmode: (input) clear mode//// return: logical error status//// clear the contents of the ContextPool//boolean ContextPool::clear(Integral::CMODE cmode_a) {  // declare local variables  //  Vector<Context> keys;  Context* ptr = (Context*)NULL;    // free the allocated context objects  //  pool_d.keys(keys);  for (long i=0; i < keys.length(); i++) {    pool_d.remove(keys(i), ptr);    delete ptr;    ptr = (Context*)NULL;  }  // clear the pool  //  pool_d.clear(cmode_a);  // set the allocation mode  //  pool_d.setAllocationMode(DstrBase::USER);  // set the context pool capacity  //  pool_d.setCapacity(DEF_CAPACITY);    // exit gracefully  //  return true;}// method: eq//// arguments://  const ContextPool& compare_node: (input) ContextPool to compare//// return: true if the ContextPools are equivalent, else false//// compare two ContextPools. they are equivalent if they have equivalent history// objects//boolean ContextPool::eq(const ContextPool& compare_node_a) const {    // compare the address  //  return (pool_d.eq(compare_node_a.pool_d));}// method: initAndAllocate//// arguments: none//// return: logical error status//// method creates a new context object and inserts it in the existing pool//Context* ContextPool::initAndAllocate() {  // declare local variables  //  Context* ptr = (Context*)NULL;    Context* new_obj = (Context*)NULL;  // allocate memory for the new object  //  new_obj = new Context();  // check and see if this object exists in the pool  //  if ((ptr = pool_d.get(*new_obj)) != (Context*)NULL) {    delete new_obj;    new_obj = ptr;  }  // insert the new object into the pool if it is not there already  //  else {        pool_d.insert(*new_obj, new_obj);  }    // return the object  //  return new_obj;}// method: shiftAndAllocate//// arguments://  const Context* obj: (input) old context object//  GraphVertex<SearchNode>* ver: (input) vertex to be shifted in the context//// return: logical error status//// method creates a new context object and inserts it in the existing pool//Context* ContextPool::shiftAndAllocate(const Context* obj_a,				       GraphVertex<SearchNode>* ver_a) {    // declare local variables  //  Context* ptr = (Context*)NULL;    Context* new_obj = (Context*)NULL;  // allocate memory for the new object  //  new_obj = new Context(*obj_a);    // shift the input value into the context  //  new_obj->assignAndAdvance((ulong)ver_a);    // check and see if this object exists in the pool  //  if ((ptr = pool_d.get(*new_obj)) != (Context*)NULL) {        delete new_obj;    new_obj = ptr;  }    // insert the new object into the pool if it is not there already  //  else {        pool_d.insert(*new_obj, new_obj);  }        // return the object  //  return new_obj;}// method: foldAndAllocate//// arguments://  const Context* obj: (input) context object//// return: unique reference to the object//// returns a pointer to the input object//Context* ContextPool::foldAndAllocate(const Context* obj_a) {  // declare local variables  //  Context* ptr = (Context*)NULL;    // check and see if this object exists in the pool  //  Context* new_obj = new Context(*obj_a);  new_obj->fold();    if ((ptr = pool_d.get(*new_obj)) != (Context*)NULL) {    delete new_obj;    new_obj = ptr;  } else {    pool_d.insert(*new_obj, new_obj);      }    // exit gracefully  //  return new_obj;}// method: extendAndAllocate//// arguments://  const Context* obj: (input) context object//  GraphVertex<SearchNode>* ver: (input) vertex to extended with//// return: unique reference to the object//// returns a pointer to the input object//Context* ContextPool::extendAndAllocate(const Context* obj_a,					GraphVertex<SearchNode>* ver_a) {  // declare local variables  //  Context* ptr = (Context*)NULL;    // check and see if this object exists in the pool  //  Context* new_obj = new Context(*obj_a);  new_obj->extend(ver_a);    if ((ptr = pool_d.get(*new_obj)) != (Context*)NULL) {    delete new_obj;    new_obj = ptr;  } else {    pool_d.insert(*new_obj, new_obj);      }    // exit gracefully  //  return new_obj;}// method: get//// arguments://  const Context& obj: (input) context object//// return: unique reference to the object//// returns a pointer to the input object//Context* ContextPool::get(const Context& obj_a) {  // declare local variables  //  Context* ptr = (Context*)NULL;    // check and see if this object exists in the pool  //  if ((ptr = pool_d.get(obj_a)) == (Context*)NULL) {    ptr = new Context(obj_a);    pool_d.insert(obj_a, ptr);      }    // exit gracefully  //  return ptr;}// method: setCentralAndAllocate//// arguments://  const Context* obj: (input) old context object//  GraphVertex<SearchNode>* ver: (input) vertex to be shifted in the context//// return: logical error status//// method creates a new context object and inserts it in the existing pool//Context* ContextPool::setCentralAndAllocate(const Context* obj_a,					    GraphVertex<SearchNode>* ver_a) {    // declare local variables  //  Context* ptr = (Context*)NULL;    Context* new_obj = (Context*)NULL;  // allocate memory for the new object  //  new_obj = new Context(*obj_a);    // shift the input value into the context  //  new_obj->setCentralVertex((ulong)ver_a);    // check and see if this object exists in the pool  //  if ((ptr = pool_d.get(*new_obj)) != (Context*)NULL) {        delete new_obj;    new_obj = ptr;  }    // insert the new object into the pool if it is not there already  //  else {        pool_d.insert(*new_obj, new_obj);  }        // return the object  //  return new_obj;}// method: setLastAndAllocate//// arguments://  const Context* obj: (input) old context object//  GraphVertex<SearchNode>* ver: (input) vertex to be shifted in the context//// return: logical error status//// method creates a new context object and inserts it in the existing pool//Context* ContextPool::setLastAndAllocate(const Context* obj_a,					    GraphVertex<SearchNode>* ver_a) {    // declare local variables  //  Context* ptr = (Context*)NULL;    Context* new_obj = (Context*)NULL;  // allocate memory for the new object  //  new_obj = new Context(*obj_a);    // shift the input value into the context  //  new_obj->setLastVertex((ulong)ver_a);    // check and see if this object exists in the pool  //  if ((ptr = pool_d.get(*new_obj)) != (Context*)NULL) {        delete new_obj;    new_obj = ptr;  }    // insert the new object into the pool if it is not there already  //  else {        pool_d.insert(*new_obj, new_obj);  }        // return the object  //  return new_obj;}

⌨️ 快捷键说明

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