亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? reimpl2.h

?? 用于正則表達式的C++庫. 現在的版本那是2.6.4
?? H
?? 第 1 頁 / 共 4 頁
字號:

template< typename T >
type_with_size<3> allocator_picker( arena_allocator<T> const &, int );

template<> struct rebind_helper<3>
{
	template< typename, typename ElemT>
	struct inner
	{
		typedef arena_allocator<ElemT> type;
	};
};

// --------------------------------------------------------------------------
//
// Class:       sub_expr_base
//
// Description: patterns are "compiled" into a directed graph of sub_expr_base
//              structs.  Matching is accomplished by traversing this graph.
//
// Methods:     ~sub_expr_base - virt dtor so cleanup happens correctly
//              recursive_match_all      - match this sub-expression and all following
//                               sub-expression
//
// History:     8/14/2000 - ericne - Created
//
// --------------------------------------------------------------------------
template< typename IterT >
struct sub_expr_base
{
    virtual bool recursive_match_all_s( match_param<IterT> &, IterT ) const = 0; //throw() (offset 0)
    virtual bool recursive_match_all_c( match_param<IterT> &, IterT ) const = 0; //throw() (offset 4)
    virtual bool iterative_match_this_s( match_param<IterT> & ) const = 0; //throw()       (offset 8)
    virtual bool iterative_match_this_c( match_param<IterT> & ) const = 0; //throw()       (offset 12)
    virtual bool iterative_rematch_this_s( match_param<IterT> & ) const = 0; //throw()     (offset 16)
    virtual bool iterative_rematch_this_c( match_param<IterT> & ) const = 0; //throw()     (offset 20)

    virtual ~sub_expr_base() = 0;                                                       // (offset 24)

    // Use the regex_arena for memory management
    static void * operator new( size_t size, regex_arena & arena )
    {
        return arena.allocate( size );
    }
    static void operator delete( void *, regex_arena & )
    {
    }

    // Invoke the d'tor, but don't bother freeing memory. That will
    // happen automatically when the arena object gets destroyed.
    static void operator delete( void * )
    {
    }

    // For choosing an appropriate virtual function based on a compile time constant
    bool recursive_match_all( match_param<IterT> & param, IterT icur, false_t ) const //throw()
    {
        return recursive_match_all_s( param, icur );
    }
    bool recursive_match_all( match_param<IterT> & param, IterT icur, true_t ) const //throw()
    {
        return recursive_match_all_c( param, icur );
    }
    bool iterative_match_this( match_param<IterT> & param, false_t ) const //throw()
    {
        return iterative_match_this_s( param );
    }
    bool iterative_match_this( match_param<IterT> & param, true_t ) const //throw()
    {
        return iterative_match_this_c( param );
    }
    bool iterative_rematch_this( match_param<IterT> & param, false_t ) const //throw()
    {
        return iterative_rematch_this_s( param );
    }
    bool iterative_rematch_this( match_param<IterT> & param, true_t ) const //throw()
    {
        return iterative_rematch_this_c( param );
    }
private:
    // don't allocate sub-expressions directly on the heap; they should
    // be allocated from an arena
    static void * operator new( size_t size ) throw( std::bad_alloc );
    // disable all the vector new's and delete's.
    static void * operator new[]( size_t size, regex_arena & arena ) throw( std::bad_alloc );
    static void operator delete[]( void *, regex_arena & );
    static void * operator new[]( size_t size ) throw( std::bad_alloc );
    static void operator delete[]( void * );
};

template< typename IterT >
inline sub_expr_base<IterT>::~sub_expr_base()
{
}

// --------------------------------------------------------------------------
//
// Class:       subst_node
//
// Description: Substitution strings are parsed into an array of these
//              structures in order to speed up subst operations.
//
// Members:     stype         - type of this struct
//              .m_subst_string  - do a string substitution
//             .m_subst_backref - do a bacref substitution
//              op            - execute an operation
//
// History:     8/14/2000 - ericne - Created
//
// --------------------------------------------------------------------------
struct subst_node
{
    enum
    {
        PREMATCH  = -1,
        POSTMATCH = -2
    };

    enum subst_type
    {
        SUBST_STRING,
        SUBST_BACKREF,
        SUBST_OP
    };

    enum op_type
    {
        UPPER_ON   = SUBST_UPPER_ON,
        UPPER_NEXT = SUBST_UPPER_NEXT,
        LOWER_ON   = SUBST_LOWER_ON,
        LOWER_NEXT = SUBST_LOWER_NEXT,
        ALL_OFF    = SUBST_ALL_OFF
    };

    struct string_offsets
    {
        ptrdiff_t       m_rstart;
        ptrdiff_t       m_rlength;
    };

    subst_type          m_stype;

    union
    {
        string_offsets  m_subst_string;
        size_t          m_subst_backref;
        op_type         m_op;
    };
};

typedef std::list<subst_node> subst_list_type;
size_t DEFAULT_BLOCK_SIZE();

template< typename IterT >
class boyer_moore;

// --------------------------------------------------------------------------
//
// Class:       basic_rpattern_base_impl
//
// Description:
//
// Methods:     basic_rpattern_base_impl - ctor
//              flags                   - get the state of the flags
//              uses_backrefs           - true if the backrefs are referenced
//              get_first_subexpression - return ptr to first sub_expr struct
//              get_width               - get min/max nbr chars this pattern can match
//              loops                   - if false, we only need to try to match at 1st position
//              cgroups                 - number of visible groups
//              _cgroups_total          - total number of groups, including hidden ( ?: ) groups
//              get_pat                 - get string representing the pattern
//              get_subst               - get string representing the substitution string
//              get_subst_list          - get the list of subst nodes
//              _normalize_string       - perform character escaping
//
// Members:     m_fuses_backrefs        - true if subst string refers to backrefs
//              m_floop                 - false if pat only needs to be matched in one place
//              m_cgroups               - total count of groups
//              m_cgroups_visible       - count of visible groups
//              m_flags                 - the flags
//              m_nwidth                - width of this pattern
//              m_pat                   - pattern string
//              m_subst                 - substitution string
//              m_subst_list            - list of substitution nodes
//              m_pfirst                - ptr to first subexpression to match
//
// Typedefs:    char_type               -
//              string_type             -
//              size_type               -
//
// History:     8/14/2000 - ericne - Created
//
// --------------------------------------------------------------------------
template< typename IterT >
class basic_rpattern_base_impl
{
    basic_rpattern_base_impl( basic_rpattern_base_impl<IterT> const & );
    basic_rpattern_base_impl & operator=( basic_rpattern_base_impl<IterT> const & );
protected:
    typedef typename std::iterator_traits<IterT>::value_type char_type;
    typedef std::char_traits<char_type>                   traits_type;

    typedef std::basic_string<char_type>                  string_type;
    typedef size_t                                        size_type;

    typedef backref_tag<IterT>                             backref_type;
    typedef std::vector<backref_type>                     backref_vector;

    friend struct regex_access<IterT>;

    explicit basic_rpattern_base_impl
    (
        REGEX_FLAGS         flags = NOFLAGS,
        REGEX_MODE          mode  = MODE_DEFAULT,
        string_type const & pat   = string_type(),
        string_type const & subst = string_type()
    )                                               //throw()
        : m_arena( DEFAULT_BLOCK_SIZE() )
        , m_fuses_backrefs( false )
        , m_floop( true )
        , m_fok_to_recurse( true )
        , m_cgroups( 0 )
        , m_cgroups_visible( 0 )
        , m_flags( flags )
        , m_mode( mode )
        , m_nwidth( uninit_width() )
        , m_pat( new string_type( pat ) )
        , m_subst( new string_type( subst ) )
        , m_subst_list()
        , m_pfirst( 0 )
        , m_invisible_groups()
        , m_search( 0 )
    {
    }

    virtual ~basic_rpattern_base_impl()
    {
        // We're not going to be calling destructors because all allocated
        // memory associated with the parsed pattern resides in the arena.
        // The memory will be freed when the arena gets destroyed.
        //delete m_pfirst;
        reset_auto_ptr( m_pat );
        reset_auto_ptr( m_subst );
        m_arena.finalize();
    }

    regex_arena m_arena;           // The sub_expr arena

    bool        m_fuses_backrefs;  // true if the substitution uses backrefs
    bool        m_floop;           // false if m_pfirst->recursive_match_all only needs to be called once
    bool        m_fok_to_recurse;  // false if the pattern would recurse too deeply
    size_t      m_cgroups;         // number of groups ( always at least one )
    size_t      m_cgroups_visible; // number of visible groups
    REGEX_FLAGS m_flags;           // flags used to customize search/replace
    REGEX_MODE  m_mode;            // Used to pick the fast or safe algorithm
    width_type  m_nwidth;          // width of the pattern

    std::auto_ptr<string_type>   m_pat;   // contains the unparsed pattern
    std::auto_ptr<string_type>   m_subst; // contains the unparsed substitution

    subst_list_type              m_subst_list; // used to speed up substitution
    sub_expr_base<IterT> const * m_pfirst;     // first subexpression in pattern

    std::list<size_t>           m_invisible_groups; // groups w/o backrefs

    boyer_moore<typename string_type::const_iterator>  * m_search;

    size_t _cgroups_total() const //throw()
    {
        return m_cgroups;
    }

    bool _loops() const //throw()
    {
        return m_floop;
    }

    size_t _get_next_group_nbr()
    {
        return m_cgroups++;
    }

    void _normalize_string( string_type & str ) const //throw()
    {
        if( NORMALIZE & flags() )
            process_escapes( str, true );
    }

    bool _save_backrefs() const //throw()
    {
        return m_fuses_backrefs || ! ( flags() & NOBACKREFS );
    }

    sub_expr_base<IterT> const * _get_first_subexpression() const //throw()
    {
        return m_pfirst;
    }

    REGEX_FLAGS flags() const //throw()
    {
        return m_flags;
    }

    REGEX_MODE mode() const // throw()
    {
        return m_mode;
    }

    width_type get_width() const //throw()
    {
        return m_nwidth;
    }

    size_t cgroups() const //throw()
    {
        return m_cgroups_visible;
    }

    string_type const & get_pat() const //throw()
    {
        return *m_pat;
    }

    string_type const & get_subst() const //throw()
    {
        return *m_subst;
    }

    bool _ok_to_recurse() const; //throw();

    void swap( basic_rpattern_base_impl<IterT> & that ); // throw();

    enum { npos = static_cast<size_type>( -1 ) };

    static instantiator instantiate()
    {
        typedef basic_rpattern_base_impl this_type;

        return instantiator_helper
        (
            &this_type::_ok_to_recurse,
            &this_type::swap
        );
    }
};

template< typename IterT >
struct regex_access
{
    typedef basic_rpattern_base_impl< IterT >    rpattern_type;
    typedef typename rpattern_type::size_type    size_type;
    typedef typename rpattern_type::char_type    char_type;
    typedef typename rpattern_type::traits_type  traits_type;
    typedef typename rpattern_type::backref_type backref_type;

    static bool _do_match_iterative_helper_s
    (
        sub_expr_base<IterT> const * expr,
        match_param<IterT> & param,
        IterT icur
    );

    static bool _do_match_iterative_helper_c
    (
        sub_expr_base<IterT> const * expr,
        match_param<IterT> & param,
        IterT icur
    );

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产乱子伦视频一区二区三区 | 香蕉成人啪国产精品视频综合网| 欧美日本高清视频在线观看| 国产91精品欧美| 青青国产91久久久久久| 亚洲免费观看高清完整版在线观看 | 欧美高清视频不卡网| av电影在线观看不卡| 麻豆精品久久久| 午夜视频一区在线观看| 亚洲欧洲在线观看av| 久久久久99精品国产片| 91精品国产欧美一区二区成人 | 精品国产免费视频| 欧美日本一区二区在线观看| av亚洲产国偷v产偷v自拍| 精品一区二区三区久久| 亚洲午夜激情av| 亚洲人一二三区| 亚洲国产精品99久久久久久久久| 日韩午夜激情电影| 4438x亚洲最大成人网| 欧美午夜精品久久久久久孕妇 | 精品日韩在线观看| 久久影院视频免费| 在线亚洲人成电影网站色www| 日韩精品一二三| 国产午夜精品久久| 色www精品视频在线观看| 无吗不卡中文字幕| 久久久久久久久一| 欧美视频一区二区三区四区| 三级精品在线观看| 久久久国产综合精品女国产盗摄| 国产91在线观看丝袜| 久久机这里只有精品| 免费在线视频一区| 麻豆成人久久精品二区三区红| 日韩精品色哟哟| 五月激情综合婷婷| 青青草国产成人av片免费| 日产精品久久久久久久性色| 亚洲大片免费看| 亚洲va国产天堂va久久en| 视频一区二区不卡| 毛片一区二区三区| 激情亚洲综合在线| 国产精品一线二线三线| 波多野结衣中文字幕一区| 91亚洲精华国产精华精华液| 色婷婷精品大在线视频| 欧美另类videos死尸| 91精品久久久久久久99蜜桃 | 成人一区在线观看| 91亚洲资源网| 精品视频一区二区三区免费| 欧美一区二区三区公司| 久久久综合激的五月天| 国产蜜臀97一区二区三区| 亚洲日本一区二区| 亚洲国产精品一区二区久久恐怖片 | gogo大胆日本视频一区| 99视频精品全部免费在线| 在线视频欧美区| 91精品国产色综合久久久蜜香臀| 欧美大黄免费观看| 国产欧美视频在线观看| 亚洲精品中文在线| 日韩高清国产一区在线| 国产精品一区二区黑丝| 色婷婷国产精品| 日韩午夜激情av| 国产精品的网站| 肉色丝袜一区二区| 国产99精品国产| 欧美天堂一区二区三区| 久久一区二区三区国产精品| 中文字幕在线一区免费| 天天做天天摸天天爽国产一区| 激情五月播播久久久精品| 色综合一区二区| 91精品国产福利在线观看| 国产偷国产偷亚洲高清人白洁 | 久久人人爽爽爽人久久久| 亚洲美女屁股眼交3| 奇米色一区二区三区四区| 不卡欧美aaaaa| 欧美一级国产精品| 国产精品久久99| 看片网站欧美日韩| 在线精品国精品国产尤物884a| 精品久久五月天| 亚洲一区二区欧美日韩 | 9l国产精品久久久久麻豆| 91精品欧美久久久久久动漫 | 精品精品国产高清a毛片牛牛| 中文字幕在线观看一区| 蜜桃久久精品一区二区| 一本久久精品一区二区| 久久久亚洲午夜电影| 亚洲地区一二三色| 波多野结衣在线aⅴ中文字幕不卡| 91精品福利在线一区二区三区| 国产精品成人一区二区艾草| 免费不卡在线观看| 在线视频国内自拍亚洲视频| 国产精品女主播av| 国内精品国产三级国产a久久 | 国产精品对白交换视频| 韩国成人在线视频| 4438成人网| 亚洲成人一区二区在线观看| 成人国产精品免费观看动漫| 精品处破学生在线二十三| 午夜精品久久久久久久99水蜜桃| 成人激情午夜影院| 久久久亚洲欧洲日产国码αv| 奇米亚洲午夜久久精品| 欧美日韩在线播放三区| 亚洲欧美国产三级| 成人精品国产免费网站| 久久久国产一区二区三区四区小说| 午夜影院在线观看欧美| 欧美主播一区二区三区美女| 日韩理论在线观看| 成人v精品蜜桃久久一区| 欧美极品aⅴ影院| 国产乱子轮精品视频| 精品国产1区2区3区| 久久国内精品自在自线400部| 91精品国产91久久综合桃花| 日韩成人免费在线| 91精品国产麻豆| 蜜桃av噜噜一区| 日韩视频123| 久久99热狠狠色一区二区| 91精品欧美一区二区三区综合在| 日日夜夜一区二区| 制服丝袜亚洲色图| 久久激五月天综合精品| 久久蜜桃一区二区| 成人一区二区三区视频在线观看| 国产三级久久久| 成人一区二区三区中文字幕| 国产精品久久久久久久久久久免费看 | 麻豆成人免费电影| www久久精品| 国产一本一道久久香蕉| 中文av一区特黄| aaa欧美色吧激情视频| 亚洲精选视频在线| 欧美高清视频在线高清观看mv色露露十八| 亚洲大片精品永久免费| 日韩精品专区在线影院观看| 国产剧情在线观看一区二区| 国产精品欧美精品| 欧美性感一类影片在线播放| 日韩黄色片在线观看| 337p日本欧洲亚洲大胆精品| 成人性生交大片免费看在线播放| 亚洲视频一区在线| 欧美久久久一区| 国产麻豆精品theporn| 亚洲人成伊人成综合网小说| 欧美精品久久一区| 国产精品一区三区| 亚洲免费成人av| 这里只有精品电影| 国产一区免费电影| 亚洲人成精品久久久久| 7777精品伊人久久久大香线蕉完整版| 麻豆精品在线播放| 亚洲人精品一区| 精品久久国产字幕高潮| 99热精品一区二区| 蜜桃视频在线观看一区二区| 国产精品久线在线观看| 欧美三级电影网| 丁香婷婷深情五月亚洲| 亚洲一区二区免费视频| 久久综合久久鬼色| 欧美性做爰猛烈叫床潮| 国产一区二区三区四区在线观看| 一区二区三区四区视频精品免费| 欧美一级片在线| 99国产精品久久| 国内精品视频666| 亚洲v日本v欧美v久久精品| 中文字幕乱码日本亚洲一区二区| 欧美日韩中文国产| 波多野结衣亚洲一区| 日产国产高清一区二区三区| 91亚洲永久精品| 日韩你懂的电影在线观看| 国产精品18久久久久| 亚洲精品第一国产综合野| 精品国产三级电影在线观看| 欧美在线观看视频一区二区| 国产成人在线视频播放| 日韩在线一二三区|