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

📄 sc_hash.h

📁 system C源码 一种替代verilog的语言
💻 H
📖 第 1 页 / 共 2 页
字号:
        return sc_phash_base::remove_by_contents(c, kfree);    }    int remove_by_contents(bool (*predicate)(const void*, void*), void* arg, void (*kfree)(void*))    {        return sc_phash_base::remove_by_contents(predicate, arg, kfree);    }    int lookup(K k, C* pc) const    {        return sc_phash_base::lookup((const void*) k, (void**) pc);    }    bool contains(K k) const    {        return sc_phash_base::contains((const void*) k);    }    C operator[](K k) const    {        return (C) sc_phash_base::operator[]((const void*) k);    }};template< class K, class C >class sc_phash_iter : public sc_phash_base_iter {public:    sc_phash_iter(sc_phash<K,C>* t) : sc_phash_base_iter(t) { }    sc_phash_iter(sc_phash<K,C>& t) : sc_phash_base_iter(t) { }    ~sc_phash_iter() { }    void reset(sc_phash<K,C>* t) { sc_phash_base_iter::reset(t); }    void reset(sc_phash<K,C>& t) { sc_phash_base_iter::reset(t); }    K key()      const { return (K) sc_phash_base_iter::key();      }    C contents() const { return (C) sc_phash_base_iter::contents(); }    C set_contents(C c)    {        return (C) sc_phash_base_iter::set_contents((void*) c);    }};template< class K, class C >class sc_pdhash : public sc_phash_base {    friend class sc_pdhash_iter<K,C>;private:    void* (*kdup)(const void*); //eliminated braces around void* -- Amit    void (*kfree)(void*);public:    typedef sc_pdhash_iter<K,C> iterator;    sc_pdhash( C def = (C) 0,              int size    = PHASH_DEFAULT_INIT_TABLE_SIZE,              int density = PHASH_DEFAULT_MAX_DENSITY,              double grow = PHASH_DEFAULT_GROW_FACTOR,              bool reorder = PHASH_DEFAULT_REORDER_FLAG,              hash_fn_t hash_fn = (hash_fn_t) 0, // defaults added --              cmpr_fn_t cmpr_fn = (cmpr_fn_t) 0, // Amit              void* (*kdup_fn)(const void*) = 0,              void (*kfree_fn)(void*)  = 0 )        : sc_phash_base((void*) def, size, density, grow, reorder, hash_fn, cmpr_fn)    {        kdup = kdup_fn;        kfree = kfree_fn;    }    ~sc_pdhash()    {        erase();    }    void erase()    {        sc_phash_base::erase(kfree);    }    void copy(const sc_pdhash<K,C>& b) { sc_phash_base::copy(b, kdup, kfree); }    int insert(K k, C c) { return sc_phash_base::insert((void*) k, (void*) c, kdup); }    int insert(K k) { return sc_phash_base::insert((void*) k, default_value, kdup); }    int insert_if_not_exists(K k, C c)    {        return sc_phash_base::insert_if_not_exists((void*) k, (void*) c, kdup);    }    int insert_if_not_exists(K k)    {        return sc_phash_base::insert_if_not_exists((void*) k, default_value, kdup);    }    int remove(K k) { return sc_phash_base::remove((const void*) k, kfree); }    int remove(K k, K* pk, C* pc)    {        return sc_phash_base::remove((const void*) k, (void**) pk, (void**) pc);    }    int remove_by_contents(C c)    {        return sc_phash_base::remove_by_contents((const void*) c, kfree);    }    int remove_by_contents(bool (*predicate)(const void*, void*), void* arg)    {        return sc_phash_base::remove_by_contents(predicate, arg, kfree);    }    int lookup(K k, C* pc) const    {        return sc_phash_base::lookup((const void*) k, (void**) pc);    }    bool contains(K k) const    {        return sc_phash_base::contains((const void*) k);    }    C operator[](K k) const    {        return (C) sc_phash_base::operator[]((const void*) k);    }};template< class K, class C >class sc_pdhash_iter : public sc_phash_base_iter {public:    sc_pdhash_iter(sc_pdhash<K,C>* t) : sc_phash_base_iter(t) { }    sc_pdhash_iter(sc_pdhash<K,C>& t) : sc_phash_base_iter(t) { }    ~sc_pdhash_iter() { }    void reset(sc_pdhash<K,C>* t) { sc_phash_base_iter::reset(t); }    void reset(sc_pdhash<K,C>& t) { sc_phash_base_iter::reset(t); }    void remove() { sc_phash_base_iter::remove(((sc_pdhash<K,C>*) table)->kfree); }    K key()      const { return (K) sc_phash_base_iter::key();      }    C contents() const { return (C) sc_phash_base_iter::contents(); }    C set_contents(C c)    {        return (C) sc_phash_base_iter::set_contents((void*) c);    }};extern int sc_strhash_cmp( const void*, const void* );extern void sc_strhash_kfree(void*);extern void* sc_strhash_kdup(const void*);template< class C >      // template class decl.class sc_strhash_iter;   // --Amittemplate< class C >class sc_strhash : public sc_phash_base {    friend class sc_strhash_iter<C>;public:    typedef sc_strhash_iter<C> iterator;    sc_strhash( C def = (C) 0,                int size    = PHASH_DEFAULT_INIT_TABLE_SIZE,                int density = PHASH_DEFAULT_MAX_DENSITY,                double grow = PHASH_DEFAULT_GROW_FACTOR,                bool reorder = PHASH_DEFAULT_REORDER_FLAG,                unsigned (*hash_fn)(const void*) = default_str_hash_fn,                int (*cmpr_fn)(const void*, const void*) = sc_strhash_cmp )        : sc_phash_base((void*) def, size, density, grow, reorder, hash_fn, cmpr_fn)    {    }    ~sc_strhash()    {        erase();    }    void erase() { sc_phash_base::erase(sc_strhash_kfree); }    void copy(const sc_strhash<C>* b) { sc_phash_base::copy(*b, sc_strhash_kdup, sc_strhash_kfree); }    void copy(const sc_strhash<C>& b) { sc_phash_base::copy(b, sc_strhash_kdup, sc_strhash_kfree); }    int insert(char* k, C c) { return sc_phash_base::insert((void*) k, (void*) c, sc_strhash_kdup); }    int insert(char* k) { return sc_phash_base::insert((void*) k, default_value, sc_strhash_kdup); }    int insert_if_not_exists(char* k, C c)    {        return sc_phash_base::insert_if_not_exists((void*) k, (void*) c, sc_strhash_kdup);    }    int insert_if_not_exists(char* k)    {        return sc_phash_base::insert_if_not_exists((void*) k, default_value, sc_strhash_kdup);    }    int remove(const char* k) { return sc_phash_base::remove((const void*) k, sc_strhash_kfree); }    int remove(const char* k, char** pk, C* pc)    {        return sc_phash_base::remove((const void*) k, (void**) pk, (void**) pc);    }    int remove_by_contents(C c)    {        return sc_phash_base::remove_by_contents((const void*) c, sc_strhash_kfree);    }    int remove_by_contents(bool (*predicate)(const void*, void*), void* arg)    {        return sc_phash_base::remove_by_contents(predicate, arg, sc_strhash_kfree);    }    int lookup(const char* k, C* pc) const    {        return sc_phash_base::lookup((const void*) k, (void** )pc);    }    bool contains(const char* k) const    {        return sc_phash_base::contains((const void*) k);    }    C operator[](const char* k) const    {        return (C) sc_phash_base::operator[]((const void*) k);    }};template<class C>class sc_strhash_iter : public sc_phash_base_iter {public:    sc_strhash_iter ( sc_strhash<C>* t ) : sc_phash_base_iter(t) { }    sc_strhash_iter ( sc_strhash<C>& t ) : sc_phash_base_iter(t) { }    ~sc_strhash_iter() { }    void reset ( sc_strhash<C>* t ) { sc_phash_base_iter::reset(t); }    void reset ( sc_strhash<C>& t ) { sc_phash_base_iter::reset(t); }    void remove() { sc_phash_base_iter::remove(sc_strhash_kfree); }    const char* key()   { return (const char*) sc_phash_base_iter::key(); }    C contents()  { return (C) sc_phash_base_iter::contents(); }    C set_contents(C c)    {        return (C) sc_phash_base_iter::set_contents((void*) c);    }};} // namespace sc_core#endif

⌨️ 快捷键说明

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