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

📄 andx_02.cc

📁 这是一个从音频信号里提取特征参量的程序
💻 CC
字号:
// file: $isip/class/asr/AnnotationIndex/andx_02.cc// version: $Id: andx_02.cc,v 1.1 2002/02/01 14:49:27 alphonso Exp $//// isip include files//#include "AnnotationIndex.h"#include <Console.h>// method: diagnose//// arguments://  Integral::DEBUG level: (input) debug level for diagnostics//// return: a boolean value indicating status//boolean AnnotationIndex::diagnose(Integral::DEBUG level_a) {  //----------------------------------------------------------------------  //  // 0. preliminaries  //  //----------------------------------------------------------------------  // output the class name  //  if (level_a > Integral::NONE) {    SysString output(L"diagnosing class ");    output.concat(CLASS_NAME);    output.concat(L": ");    Console::put(output);    Console::increaseIndention();  }  // --------------------------------------------------------------------  //  // 1. required public methods  //  // --------------------------------------------------------------------  // set indentation  //    if (level_a > Integral::NONE) {    Console::put(L"testing required public methods...\n");    Console::increaseIndention();   }    // reset indentation  //  if (level_a > Integral::NONE) {    Console::decreaseIndention();  }  // declare some id's  //  String ancr_name_00(L"Anchor1");  String ancr_name_01(L"Anchor2");  String ancr_name_02(L"Anchor3");    String ancr_name_03(L"Anchor4");   String anno_name_00(L"Annotation1");  String anno_name_01(L"Annotation2");  // declare some units  //  String unit_00(L"seconds");    // declare some types  //  String type_00(L"type1");  String type_01(L"type2");  // declare some offsets  //  float offset_00 = 2.409875;  float offset_01 = 2.649875;  float offset_02 = 2.769875;  float offset_03 = 3.273875;  // declate some feature value pairs  //  String feat_00(L"feature1");  String feat_01(L"feature2");  String value_00(L"value1");  String value_01(L"value2");    // declare some anchors  //  Anchor ancr_00(ancr_name_00, offset_00, unit_00);  Anchor ancr_01(ancr_name_01, offset_01, unit_00);  Anchor ancr_02(ancr_name_02, offset_02, unit_00);  Anchor ancr_03(ancr_name_03, offset_03, unit_00);    // declare some annotations  //  Annotation anno_00(anno_name_00, &ancr_00, &ancr_01, type_00);  Annotation anno_01(anno_name_01, &ancr_02, &ancr_03, type_01);    // declare some annotation indices  //  AnnotationIndex andx_00;    // test the add annotation method  //  if (!andx_00.add(&anno_00)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }    // test the exist annotation/anchor methods  //  if (!andx_00.existsAnnotation(anno_name_00)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  if (andx_00.existsAnnotation(anno_name_01)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }    if (!andx_00.existsAnchor(ancr_name_00)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  if (!andx_00.existsAnchor(ancr_name_01)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  if (andx_00.existsAnchor(ancr_name_02)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  if (andx_00.existsAnchor(ancr_name_03)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }      // test the add annotation method  //    if (!andx_00.add(&anno_01)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }    // test the exist annotation/anchor methods  //  if (!andx_00.existsAnnotation(anno_name_00)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  if (!andx_00.existsAnnotation(anno_name_01)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }    if (!andx_00.existsAnchor(ancr_name_00)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  if (!andx_00.existsAnchor(ancr_name_01)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  if (!andx_00.existsAnchor(ancr_name_02)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  if (!andx_00.existsAnchor(ancr_name_03)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  // test the delete annotation methods  //  if (!andx_00.deleteAnnotation(&anno_00)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }    // test the exist annotation/anchor method  //  if (andx_00.existsAnnotation(anno_name_00)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  if (!andx_00.existsAnnotation(anno_name_01)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }    if (!andx_00.existsAnchor(ancr_name_00)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  if (!andx_00.existsAnchor(ancr_name_01)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  if (!andx_00.existsAnchor(ancr_name_02)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  if (!andx_00.existsAnchor(ancr_name_03)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }    // test the nearest offset method  //  if (!Integral::almostEqual(andx_00.getNearestOffset(offset_00), offset_00)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  if (!Integral::almostEqual(andx_00.getNearestOffset(offset_01), offset_01)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }        if (!Integral::almostEqual(andx_00.getNearestOffset(offset_02), offset_02)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  if (!Integral::almostEqual(andx_00.getNearestOffset(offset_03), offset_03)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }      if (!Integral::almostEqual(andx_00.getNearestOffset(2.39), offset_00)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  if (!Integral::almostEqual(andx_00.getNearestOffset(2.41), offset_00)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }    if (!Integral::almostEqual(andx_00.getNearestOffset(2.64), offset_01)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }    if (!Integral::almostEqual(andx_00.getNearestOffset(2.65), offset_01)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  if (!Integral::almostEqual(andx_00.getNearestOffset(2.76), offset_02)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  if (!Integral::almostEqual(andx_00.getNearestOffset(2.77), offset_02)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }        if (!Integral::almostEqual(andx_00.getNearestOffset(3.12), offset_03)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }    if (!Integral::almostEqual(andx_00.getNearestOffset(3.24), offset_03)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }    // test the get offset method  //  DoubleLinkedList<Annotation> annotations(DstrBase::USER);  // this should return an empty list  //  andx_00.getByOffset(offset_00, annotations);  if (annotations.length() != 0) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  // this should return an empty list  //  andx_00.getByOffset(offset_01, annotations);  if (annotations.length() != 0) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }      // this should return a single annotation (anno_01)  //  andx_00.getByOffset(offset_02, annotations);  if (annotations.length() != 1) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  if (annotations.getFirst() != &anno_01) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }    // this should return a single annotation (anno_01)  //  andx_00.getByOffset(offset_03, annotations);    if (annotations.length() != 1) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  if (annotations.getFirst() != &anno_01) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }    // test the get annotation offset method  //  Annotation* annotation;  // this should return a null pointer  //  annotation = andx_00.getAnnotationByOffset(offset_00);    if (annotation != (Annotation*)NULL) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  // this should return a null pointer  //  annotation = andx_00.getAnnotationByOffset(offset_01);    if (annotation != (Annotation*)NULL) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }    // this should return a single annotation (anno_01)  //  annotation  = andx_00.getAnnotationByOffset(offset_02);  if (annotation != &anno_01) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }    // this should return a single annotation (anno_01)  //  annotation = andx_00.getAnnotationByOffset(offset_03);    if (annotation != &anno_01) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  // test the add/delete/exists features methods  //  AnnotationIndex andx_01;  Annotation* anno_02 = new Annotation(anno_name_00, &ancr_00,				       &ancr_01, type_00);  // add the feature-value pairs to the annotation  //  anno_02->setFeature(feat_00, value_00);  anno_02->setFeature(feat_01, value_01);      // insert an annotation  //  if (!andx_01.add(anno_02)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  // add some features to the annotation  //  if (!andx_01.addFeature(anno_02, feat_00, value_00)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  if (!andx_01.addFeature(anno_02, feat_01, value_01)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }    // check if the features exists  //  if (!andx_01.existsFeature(feat_00, value_00)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  if (!andx_01.existsFeature(feat_01, value_01)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }    // delete a feature form the index  //  if (!andx_01.deleteFeature(anno_02, feat_01)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  // test if the deletion was sucessfull  //  if (!andx_01.existsFeature(feat_00, value_00)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  if (andx_01.existsFeature(feat_01, value_01)) {    return Error::handle(name(), L"diagnose", Error::TEST, __FILE__, __LINE__);  }  // clean up memory  //  delete anno_02;    //---------------------------------------------------------------------  //  // 2. print completion message  //  //---------------------------------------------------------------------    // reset indentation  //  if (level_a > Integral::NONE) {    Console::decreaseIndention();  }    if (level_a > Integral::NONE) {    SysString output(L"diagnostics passed for class ");    output.concat(name());    output.concat(L"\n");    Console::put(output);  }  // exit gracefully  //  return true;}

⌨️ 快捷键说明

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