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

📄 colorhash.h

📁 这是一个从音频信号里提取特征参量的程序
💻 H
字号:
// file: $isip/class/dstr/ColorHash/ColorHash.h// version: $Id: ColorHash.h,v 1.5 2001/02/06 16:26:35 alphonso Exp $//// make sure definitions are only made once://#ifndef ISIP_COLOR_HASH#define ISIP_COLOR_HASH// forward class definitions for the inner classes//class GVColor;template<class TVertex> class GVKey;// isip include files//#ifndef ISIP_HASH_TABLE#include <HashTable.h>#endif#ifndef ISIP_NAME_MAP#include <NameMap.h>#endif#ifndef ISIP_GRAPH_VERTEX#include <GraphVertex.h>#endif// ColorHash: the main function of this class is to create a one-to-one mapping// between a graph vertex pointer and the corresponding color of the vertex.// we use a separate class for this so that it is possible to have a// graph vertex without the notion of color, which would waste memory// for applications not needing color.//template<class TObject>class ColorHash : public DstrBase {    //---------------------------------------------------------------------------  //  // public constants  //  //---------------------------------------------------------------------------public:  // define the class name. also include names for the inner classes.  //  static const String CLASS_NAME;  static const String GV_KEY_CLASS_NAME;  static const String GV_COLOR_CLASS_NAME;  //----------------------------------------  //  // other important constants  //  //----------------------------------------    //----------------------------------------  //  // default values and arguments  //  //----------------------------------------  // default values  //    // default arguments to methods  //  //----------------------------------------  //  // error codes  //  //----------------------------------------  //---------------------------------------------------------------------------  //  // protected data  //  //---------------------------------------------------------------------------protected:  // define a typedef for the ColorHash template  //  typedef ColorHash<TObject> CHASH;  // define the internal hash table instance  //  HashTable<GVKey<TObject>, GVColor> hash_d;    // debugging parameters  //  static Integral::DEBUG debug_level_d;    //---------------------------------------------------------------------------  //  // required public methods  //  //---------------------------------------------------------------------------public:  // static methods:  //  static const String& name();    // method: setDebug  //  static boolean setDebug(Integral::DEBUG arg) {    debug_level_d = arg;    return true;  }  // other debug methods  //  boolean debug(const unichar* message) const;  // method: destructor  //  ~ColorHash() {}    // method: default constructor  //  ColorHash() {}    // method: copy constructor  //  ColorHash(const CHASH& arg) {    assign(arg);  }  // method: assign  //  boolean assign(const CHASH& arg) {    return hash_d.assign(arg.hash_d);  }    // method: operator=  //  CHASH operator=(const CHASH& arg) {    assign(arg);    return *this;  }  // method: eq  //  boolean eq(const CHASH& arg) const {    return hash_d.eq(arg.hash_d);  }    // i/o methods:  //  these methods are not defined for this class  //    // memory-management methods:  //  these methods are not defined for this class  //  // method: clear  //  boolean clear(Integral::CMODE cmode = Integral::DEF_CMODE) {    return hash_d.clear(cmode);  }    //---------------------------------------------------------------------------  //  // class-specific public methods:  //  hash table property methods  //  //---------------------------------------------------------------------------    // method: getNumItems  //  long getNumItems() const {    return hash_d.getNumItems();  }  // method: isEmpty  //  boolean isEmpty() const {    return hash_d.isEmpty();  }    //---------------------------------------------------------------------------  //  // class-specific public methods:  //  hash table get and set methods  //  //---------------------------------------------------------------------------    // method: get  //  Integral::COLOR get(const GraphVertex<TObject>* key) {    const GVKey<TObject> arg1(key);    GVColor* col = hash_d.get(arg1);    if (col == (GVColor*)NULL) {      Error::handle(name(), L"get", ERR, __FILE__, __LINE__);      return (Integral::COLOR)NULL;    }    return col->get();  }  // method: get  //  const Integral::COLOR get(const GraphVertex<TObject>* key) const {    const GVKey<TObject> arg1(key);    GVColor* col = hash_d.get(arg1);    if (col == (GVColor*)NULL) {      Error::handle(name(), L"get", ERR, __FILE__, __LINE__);      return (Integral::COLOR)NULL;    }    return col->get();  }  // method: set  //  boolean set(const GraphVertex<TObject>* key, Integral::COLOR value) {    const GVKey<TObject> arg1(key);    GVColor* col = hash_d.get(arg1);    if (col == (GVColor*)NULL) {      Error::handle(name(), L"set", ERR, __FILE__, __LINE__);      return (Integral::COLOR)NULL;    }    return col->assign(value);  }  //---------------------------------------------------------------------------  //  // class-specific public methods:  //  hash table insert and remove methods  //  //---------------------------------------------------------------------------    // method: insert  //  boolean insert(const GraphVertex<TObject>* key, Integral::COLOR value) {    const GVKey<TObject> arg1(key);    GVColor arg2(value);    return hash_d.insert(arg1, &arg2);  }  // method: remove  //  boolean remove(const GraphVertex<TObject>* key) {    GVKey<TObject> arg1(key);    if (!hash_d.remove(arg1)) {      return Error::handle(name(), L"remove", ERR, __FILE__, __LINE__);    }    return true;  }  //---------------------------------------------------------------------------  //  // class-specific public methods:  //  hash table contains methods  //  //---------------------------------------------------------------------------    // method: containsKey  //  boolean containsKey(const GraphVertex<TObject>* key) const {    const GVKey<TObject> arg1(key);    return hash_d.containsKey(arg1);  }  // method: containsValue  //  boolean containsValue(const Integral::COLOR value) const {    GVColor arg1(value);    return hash_d.containsValue(&arg1);  }    //---------------------------------------------------------------------------  //  // private methods  //  //---------------------------------------------------------------------------private:};  //---------------------------------------------------------------------------  //  // inner classes  //  //---------------------------------------------------------------------------// GVColor: the main function of this class is to act a wrapper for the// graph vertex class. this class stores the color values of the graph// vertices that tell us if the vertex has been previously visited.//class GVColor {    //-------------------------------------------------------------------------    //    // protected data    //    //-------------------------------------------------------------------------  protected:        // GVColor value    //    Integral::COLOR color_d;        //-------------------------------------------------------------------------    //    // public methods    //    //-------------------------------------------------------------------------  public:        // method: name    //    static const String& name() {      return ColorHash<Char>::GV_COLOR_CLASS_NAME;    }        // method: debug    //     boolean debug(const unichar* message_a) const {            // build a debug string      //      String output;      output.debugStr(name(), message_a, L"color",		      NameMap::COLOR_MAP((long)color_d));      Console::put(output);            // exit gracefully      //       return true;    }    // method: destructor    //    ~GVColor() {}        // method: default constructor    //    GVColor(Integral::COLOR arg = Integral::DEF_COLOR) {      color_d = arg;    }        // method: copy constructor    //    GVColor(GVColor& arg) {      assign(arg);    }    // method: assign    //    boolean assign(const GVColor& arg) {      color_d = arg.color_d;      return true;    }        // method: eq    //    boolean eq(const GVColor& arg) const {      return (color_d == arg.color_d);    }        // method: clear    //    boolean clear(Integral::CMODE cmode = Integral::DEF_CMODE) {      return (color_d = Integral::DEF_COLOR);    }        // method: assign    //    boolean assign(const Integral::COLOR arg) {      color_d = arg;      return true;    }          // method: get    //    Integral::COLOR get() {      return color_d;    }  };// GVKey: the main function of this class is to make pointers to the graph// vertex class hashable. this class contains a pointer to a graph vertex// and determines the hash index that corresponds to the hash index.//template<class TVertex>class GVKey : public Node<GraphVertex<TVertex > > {    //-------------------------------------------------------------------------  //  // public methods  //  //-------------------------------------------------------------------------public:    // method: name  //  static const String& name() {        // create the static name string for this class and return it    //    static String cname(ColorHash<TVertex>::GV_KEY_CLASS_NAME);    cname.clear();    cname.concat(ColorHash<TVertex>::CLASS_NAME);    cname.concat(L"<");    cname.concat(TVertex::name());    cname.concat(L">");        // return the name    //    return cname;  }    // method: debug  //  boolean debug(const unichar* message_a) const {        // build a debug string    //    String output;    String value;    value.assign(item_d);    output.debugStr(name(), message_a, L"item", value);    Console::put(output);        // exit gracefully    //     return true;  }    // method: destructor  //  ~GVKey() {}    // method: default constructor  //  GVKey() {}    // method: copy constructor  //  GVKey(GVKey<TVertex>& arg) {    item_d = arg.item_d;  }    // method: copy constructor  //  GVKey(const GraphVertex<TVertex>* arg) {    item_d = const_cast<GraphVertex<TVertex>*>(arg);  }    // method: assign  //  boolean assign(const GVKey<TVertex>& arg) {    item_d = arg.item_d;    return true;  }    // method: eq  //  boolean eq(const GVKey<TVertex>& arg) const {    return (item_d == arg.item_d);  }};//-----------------------------------------------------------------------------//// we define non-integral constants at the end of class definition for// templates (for non-templates these are defined in the default constructor)//      //-----------------------------------------------------------------------------// constants: required constants such as the class name//template <class TObject>const String ColorHash<TObject>::CLASS_NAME(L"ColorHash");template <class TObject>const String ColorHash<TObject>::GV_KEY_CLASS_NAME(L"GVKey");template <class TObject>const String ColorHash<TObject>::GV_COLOR_CLASS_NAME(L"GVColor");// static instantiations: debug level//template <class TObject>Integral::DEBUG ColorHash<TObject>::debug_level_d = Integral::NONE;// below are all the methods for the ColorHash template class////-----------------------------------------------------------------------------//// required static methods////-----------------------------------------------------------------------------// method: name//// arguments: none//// return: a static String& containing the class name//// this method returns the class name//template <class TObject>const String& ColorHash<TObject>::name() {  // create the static name string for this class and return it  //  static String cname(CLASS_NAME);  cname.clear();  cname.concat(CLASS_NAME);  cname.concat(L"<");  cname.concat(TObject::name());  cname.concat(L">");  // return the name  //  return cname;}// method: debug//// arguments://  const unichar* message: (input) information message//// return: a boolean value indicating status//// this method dumps the contents of an object to the console// template<class TObject>boolean ColorHash<TObject>::debug(const unichar* message_a) const {  // build a debug string  //  String val;  String output;  output.debugStr(name(), message_a, L"hash_d");  Console::put(output);    Console::increaseIndention();  // dump the this pointer  //  hash_d.debug(L"");    // that's it for sub-items, decrease indentation  //  Console::decreaseIndention();  // exit gracefully  //   return true;}// end of include file// #endif

⌨️ 快捷键说明

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