📄 enumerator.c
字号:
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* * enumerator.C - * \*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/#include <stdlib.h>#include <stdio.h>#include <assert.h>#include <map>#include "enumerator.h"/*--- Constants ---*//*--- Start of Code ---*/struct ltvoidp{ bool operator()(const void * s1, const void* s2) const { return ( ((int)s1) - ((int)s2) ) < 0; }};typedef map<void *, int, ltvoidp> void_map_t;class EnumerInner {private: void_map_t vp_map; int count;public: EnumerInner() : vp_map() { count = 0; } ~EnumerInner() { count = 0; } int getID( void * ptr ) { void_map_t::const_iterator iter; assert( ptr != NULL ); iter = vp_map.find( ptr ); if ( iter != vp_map.end() ) return vp_map[ ptr ]; vp_map[ ptr ] = ++count; return vp_map[ ptr ]; } int getIDPair( void * ptr, void * ptr1 ) { void_map_t::const_iterator iter; iter = vp_map.find( ptr ); if ( iter != vp_map.end() ) return vp_map[ ptr ]; iter = vp_map.find( ptr1 ); if ( iter != vp_map.end() ) return vp_map[ ptr1 ]; vp_map[ ptr ] = ++count; return vp_map[ ptr ]; } bool isIn( void * ptr ) const { void_map_t::const_iterator iter; iter = vp_map.find( ptr ); return( iter != vp_map.end() ); } void insert( void * ptr, int id ) { vp_map[ ptr ] = id; } int size() const { return count; }};Enumerator::Enumerator() { pEnum = new EnumerInner();}Enumerator::~Enumerator() { delete pEnum; pEnum = NULL;}int Enumerator::getID( void * ptr ){ return pEnum->getID( ptr );}void Enumerator::insert( void * ptr, int id ) { pEnum->insert( ptr, id );}bool Enumerator::isIn( void * ptr ) const{ return pEnum->isIn( ptr );}int Enumerator::size() const{ return pEnum->size();}/* enumerator.C - End of File ------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -