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

📄 landmarkt.hh

📁 Click is a modular router toolkit. To use it you ll need to know how to compile and install the sof
💻 HH
字号:
#ifndef CLICKTOOL_LANDMARKT_HH#define CLICKTOOL_LANDMARKT_HH 1#include <click/string.hh>#include <click/vector.hh>class LandmarkSetT;class LandmarkT { public:    inline LandmarkT();    inline LandmarkT(const String &filename, unsigned lineno);    //inline LandmarkT(LandmarkSetT *lset, unsigned offset);    inline LandmarkT(LandmarkSetT *lset, unsigned offset1, unsigned offset2);    inline LandmarkT(const LandmarkT &o);    inline ~LandmarkT();    static void static_initialize();    static const LandmarkT &empty_landmark();    typedef String (LandmarkT::*unspecified_bool_type)() const;    inline operator unspecified_bool_type() const;    String str() const;    operator String() const;    String decorated_str() const;    unsigned offset1() const		{ return _offset1; }    unsigned offset2() const		{ return _offset2; }    inline LandmarkT &operator=(const LandmarkT &o);    enum { noffset = (unsigned) -1 };  private:    LandmarkSetT *_lset;    unsigned _offset1;    unsigned _offset2;    static LandmarkT *empty;};class LandmarkSetT { public:    LandmarkSetT();    LandmarkSetT(const String &filename, unsigned lineno);    inline void ref();    inline void unref();    String offset_to_string(unsigned offset) const;    String offset_to_decorated_string(unsigned offset1, unsigned offset2) const;    void new_line(unsigned offset, const String &filename, unsigned lineno);    struct LandmarkInfo {	unsigned end_offset;	int filename;	unsigned lineno;	LandmarkInfo(unsigned o, int f, unsigned l)	    : end_offset(o), filename(f), lineno(l) {	}    };  private:    int _refcount;    Vector<LandmarkInfo> _linfo;    Vector<String> _fnames;    LandmarkSetT(const LandmarkSetT &);    ~LandmarkSetT();    LandmarkSetT &operator=(const LandmarkSetT &);    static LandmarkSetT *the_empty_set;    friend class LandmarkT;};inline voidLandmarkSetT::ref(){    assert(_refcount >= 1);    ++_refcount;}inline voidLandmarkSetT::unref(){    assert(_refcount >= 1);    if (--_refcount == 0)	delete this;}inlineLandmarkT::LandmarkT()    : _lset(empty->_lset), _offset1(noffset), _offset2(noffset){    _lset->ref();}inlineLandmarkT::LandmarkT(const String &filename, unsigned lineno = 0)    : _lset(new LandmarkSetT(filename, lineno)), _offset1(noffset), _offset2(noffset){}#if 0inlineLandmarkT::LandmarkT(LandmarkSetT *lset, unsigned offset)    : _lset(lset), _offset1(offset), _offset2(offset){    _lset->ref();}#endifinlineLandmarkT::LandmarkT(LandmarkSetT *lset, unsigned offset1, unsigned offset2)    : _lset(lset), _offset1(offset1), _offset2(offset2){    _lset->ref();}inlineLandmarkT::LandmarkT(const LandmarkT &lm)    : _lset(lm._lset), _offset1(lm._offset1), _offset2(lm._offset2){    _lset->ref();}inlineLandmarkT::~LandmarkT(){    _lset->unref();}inline const LandmarkT &LandmarkT::empty_landmark(){    assert(empty);    return *empty;}inline LandmarkT &LandmarkT::operator=(const LandmarkT &lm){    lm._lset->ref();    _lset->unref();    _lset = lm._lset;    _offset1 = lm._offset1;    _offset2 = lm._offset2;    return *this;}inlineLandmarkT::operator unspecified_bool_type() const{    return _lset != empty->_lset ? &LandmarkT::str : 0;}inline StringLandmarkT::str() const{    return _lset->offset_to_string(_offset1);}inlineLandmarkT::operator String() const{    return _lset->offset_to_string(_offset1);}inline StringLandmarkT::decorated_str() const{    return _lset->offset_to_decorated_string(_offset1, _offset2);}#endif

⌨️ 快捷键说明

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