STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Member Functions | Private Member Functions | Private Attributes | List of all members
_Builder< _FwdIt, _Elem, _RxTraits > Class Template Reference

Public Member Functions

typedef _REGEX_DIFFT (_FwdIt) _Difft
 
 _Builder (const _RxTraits &_Tr, regex_constants::syntax_option_type)
 
bool _Beg_expr () const
 
void _Setlong ()
 
void _Discard_pattern ()
 
_Node_base_Getmark () const
 
void _Add_nop ()
 
void _Add_bol ()
 
void _Add_eol ()
 
void _Add_wbound ()
 
void _Add_dot ()
 
void _Add_char (_Elem _Ch)
 
void _Add_class ()
 
void _Add_char_to_class (_Elem _Ch)
 
void _Add_range (_Elem _E0, _Elem _E1)
 
void _Add_named_class (_Regex_traits_base::char_class_type)
 
void _Add_equiv (_FwdIt, _FwdIt, _Difft)
 
void _Add_coll (_FwdIt, _FwdIt, _Difft)
 
_Node_base_Begin_group ()
 
void _End_group (_Node_base *_Back)
 
_Node_base_Begin_assert_group (bool)
 
void _End_assert_group (_Node_base *)
 
_Node_base_Begin_capture_group (unsigned int _Idx)
 
void _Add_backreference (unsigned int _Idx)
 
_Node_base_Begin_if (_Node_base *_Start)
 
void _Else_if (_Node_base *, _Node_base *)
 
void _Add_rep (int _Min, int _Max, bool _Greedy)
 
void _Negate ()
 
void _Mark_final ()
 
_Root_node_End_pattern ()
 

Private Member Functions

_Node_base_Link_node (_Node_base *)
 
_Node_base_New_node (_Node_type _Kind)
 
void _Add_str_node ()
 
bool _Beg_expr (_Node_base *) const
 
void _Add_char_to_bitmap (_Elem _Ch)
 
void _Add_char_to_array (_Elem _Ch)
 
void _Add_elts (_Node_class< _Elem, _RxTraits > *, _Regex_traits_base::char_class_type, const _RxTraits &)
 
void _Char_to_elts (_FwdIt, _FwdIt, _Difft, _Sequence< _Elem > **)
 
_Builderoperator= (const _Builder &)
 

Private Attributes

_Root_node_Root
 
_Node_base_Current
 
regex_constants::syntax_option_type _Flags
 
const _RxTraits & _Traits
 
const int _Bmax
 
const int _Tmax
 

Constructor & Destructor Documentation

template<class _FwdIt , class _Elem , class _RxTraits >
_Builder< _FwdIt, _Elem, _RxTraits >::_Builder ( const _RxTraits &  _Tr,
regex_constants::syntax_option_type  _Fx 
)
inline
3526  : _Root(new _Root_node),
3527  _Current(_Root),
3528  _Flags(_Fx),
3529  _Traits(_Tr),
3532  { // construct
3533  }
const int _Bmp_max
Definition: regex:1459
const int _Tmax
Definition: regex:1928
const int _ARRAY_THRESHOLD
Definition: regex:1466
const int _Bmax
Definition: regex:1927
_Root_node * _Root
Definition: regex:1923
regex_constants::syntax_option_type _Flags
Definition: regex:1925
_Node_base * _Current
Definition: regex:1924
Definition: regex:147
const _RxTraits & _Traits
Definition: regex:1926
Definition: regex:1658

Member Function Documentation

template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_Add_backreference ( unsigned int  _Idx)
inline
3923  { // add back reference node
3924  _Link_node(new _Node_back(_Idx));
3925  }
_Node_base * _Link_node(_Node_base *)
Definition: regex:3590
Definition: regex:1718
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_Add_bol ( )
inline
3625  { // add bol node
3626  _New_node(_N_bol);
3627  }
_Node_base * _New_node(_Node_type _Kind)
Definition: regex:3607
Definition: regex:1496
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_Add_char ( _Elem  _Ch)
inline
3665  { // append character
3666  if (_Current->_Kind != _N_str || _Current->_Flags & _Fl_final)
3667  _Add_str_node();
3669  _Ch = _Traits.translate_nocase(_Ch);
3670  else if (_Flags & regex_constants::collate)
3671  _Ch = _Traits.translate(_Ch);
3673  _Node->_Data._Insert(_Ch);
3674  }
Definition: regex:1500
_Buf< _Elem > _Data
Definition: regex:1741
Definition: regex:1732
Definition: regex:1473
void _Add_str_node()
Definition: regex:3656
Definition: regex:144
_In_ size_t _In_ unsigned int _Ch
Definition: mbstring.h:161
_Node_flags _Flags
Definition: regex:1635
_Node_type _Kind
Definition: regex:1634
regex_constants::syntax_option_type _Flags
Definition: regex:1925
_Node_base * _Current
Definition: regex:1924
Definition: regex:147
const _RxTraits & _Traits
Definition: regex:1926
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_Add_char_to_array ( _Elem  _Ch)
inlineprivate
3702  { // append character to character array
3704  _Ch = _Traits.translate_nocase(_Ch);
3707  if (!_Node->_Large)
3708  _Node->_Large = new _Buf<_Elem>;
3709  _Node->_Large->_Insert(_Ch);
3710  }
Definition: regex:1746
Definition: regex:1520
Definition: regex:144
_In_ size_t _In_ unsigned int _Ch
Definition: mbstring.h:161
regex_constants::syntax_option_type _Flags
Definition: regex:1925
_Node_base * _Current
Definition: regex:1924
_Buf< _Elem > * _Large
Definition: regex:1777
const _RxTraits & _Traits
Definition: regex:1926
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_Add_char_to_bitmap ( _Elem  _Ch)
inlineprivate
3688  { // add character to accelerator table
3690  _Ch = _Traits.translate_nocase(_Ch);
3693  if (!_Node->_Small)
3694  _Node->_Small = new _Bitmap;
3695  _Node->_Small->_Mark(_Ch);
3696  }
Definition: regex:1746
void _Mark(unsigned int _Ch)
Definition: regex:1597
_Bitmap * _Small
Definition: regex:1776
Definition: regex:144
Definition: regex:1590
_In_ size_t _In_ unsigned int _Ch
Definition: mbstring.h:161
regex_constants::syntax_option_type _Flags
Definition: regex:1925
_Node_base * _Current
Definition: regex:1924
const _RxTraits & _Traits
Definition: regex:1926
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_Add_char_to_class ( _Elem  _Ch)
inline
3716  { // add character to bracket expression
3717  static int _Max = _Bmp_max; // to quiet diagnostics
3718  static int _Min = 0;
3719 
3720  if (_Min <= _Ch && _Ch < _Max)
3722  else
3724  }
const int _Bmp_max
Definition: regex:1459
void _Add_char_to_bitmap(_Elem _Ch)
Definition: regex:3687
void _Add_char_to_array(_Elem _Ch)
Definition: regex:3701
_In_ size_t _In_ unsigned int _Ch
Definition: mbstring.h:161
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_Add_class ( )
inline
3680  { // add bracket expression node
3682  }
Definition: regex:1746
_Node_base * _Link_node(_Node_base *)
Definition: regex:3590
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_Add_coll ( _FwdIt  _First,
_FwdIt  _Last,
_Difft  _Diff 
)
inline
3847  { // add collation element to bracket expression
3850  _Sequence<_Elem> **_Cur = &_Node->_Coll;
3851  _Char_to_elts(_First, _Last, _Diff, _Cur);
3852  }
Definition: regex:1746
_Sequence< _Elem > * _Coll
Definition: regex:1775
Definition: regex:1613
_Node_base * _Current
Definition: regex:1924
void _Char_to_elts(_FwdIt, _FwdIt, _Difft, _Sequence< _Elem > **)
Definition: regex:3798
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_Add_dot ( )
inline
3649  { // add dot node
3650  _New_node(_N_dot);
3651  }
Definition: regex:1499
_Node_base * _New_node(_Node_type _Kind)
Definition: regex:3607
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_Add_elts ( _Node_class< _Elem, _RxTraits > *  _Node,
_Regex_traits_base::char_class_type  _Cl,
const _RxTraits &  _Traits 
)
inlineprivate
3769  { // add characters in named class to set
3770  for (int _Ch = 0; _Ch < _Bmp_max; ++_Ch)
3771  if (_Traits.isctype((_Elem)_Ch, _Cl))
3772  { // add contents of named class to accelerator table
3773  if (!_Node->_Small)
3774  _Node->_Small = new _Bitmap;
3775  _Node->_Small->_Mark(_Ch);
3776  }
3777  }
const int _Bmp_max
Definition: regex:1459
void _Mark(unsigned int _Ch)
Definition: regex:1597
_Bitmap * _Small
Definition: regex:1776
Definition: regex:1590
_In_ size_t _In_ unsigned int _Ch
Definition: mbstring.h:161
const _RxTraits & _Traits
Definition: regex:1926
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_Add_eol ( )
inline
3633  { // add eol node
3634  _New_node(_N_eol);
3635  }
Definition: regex:1497
_Node_base * _New_node(_Node_type _Kind)
Definition: regex:3607
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_Add_equiv ( _FwdIt  _First,
_FwdIt  _Last,
_Difft  _Diff 
)
inline
3818  { // add elements of equivalence class to bracket expression
3819  static int _Max = _Bmp_max; // to quiet diagnostics
3820 
3823  typename _RxTraits::string_type _Str =
3824  _Traits.transform_primary(_First, _Last);
3825  for (int _Ch = 0; _Ch < _Max; ++_Ch)
3826  { // add elements
3827  _Elem _Ex = (_Elem)_Ch;
3828  if (_Traits.transform_primary(&_Ex, &_Ex + 1) == _Str)
3829  { // insert equivalent character into bitmap
3830  if (!_Node->_Small)
3831  _Node->_Small = new _Bitmap;
3832  _Node->_Small->_Mark(_Ch);
3833  }
3834  }
3835  if (_Max < (numeric_limits<_Elem>::max)())
3836  { // map range
3837  _Sequence<_Elem> **_Cur = &_Node->_Equiv;
3838  _Char_to_elts(_First, _Last, _Diff, _Cur);
3839  }
3840  }
const int _Bmp_max
Definition: regex:1459
Definition: regex:1746
_Sequence< _Elem > * _Equiv
Definition: regex:1780
void _Mark(unsigned int _Ch)
Definition: regex:1597
_Bitmap * _Small
Definition: regex:1776
Definition: regex:1590
_In_ size_t _In_ unsigned int _Ch
Definition: mbstring.h:161
Definition: regex:1613
_Node_base * _Current
Definition: regex:1924
const _RxTraits & _Traits
Definition: regex:1926
void _Char_to_elts(_FwdIt, _FwdIt, _Difft, _Sequence< _Elem > **)
Definition: regex:3798
_FwdIt _Last
Definition: algorithm:1936
Definition: limits:79
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_Add_named_class ( _Regex_traits_base::char_class_type  _Cl)
inline
3784  { // add contents of named class to bracket expression
3785  static int _Max = _Bmp_max; // to quiet diagnostics
3786 
3789  _Add_elts(_Node, _Cl, _Traits);
3790  if (_Max < (numeric_limits<_Elem>::max)())
3791  _Node->_Classes =
3793  }
void _Add_elts(_Node_class< _Elem, _RxTraits > *, _Regex_traits_base::char_class_type, const _RxTraits &)
Definition: regex:3766
const int _Bmp_max
Definition: regex:1459
Definition: regex:1746
ctype_base::mask char_class_type
Definition: regex:290
_RxTraits::char_class_type _Classes
Definition: regex:1779
_Node_base * _Current
Definition: regex:1924
const _RxTraits & _Traits
Definition: regex:1926
Definition: limits:79
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_Add_nop ( )
inline
3617  { // add nop node
3618  _New_node(_N_nop);
3619  }
_Node_base * _New_node(_Node_type _Kind)
Definition: regex:3607
Definition: regex:1495
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_Add_range ( _Elem  _E0,
_Elem  _E1 
)
inline
3730  { // add character range to set
3732  { // change to lowercase range
3733  _E0 = _Traits.translate_nocase(_E0);
3734  _E1 = _Traits.translate_nocase(_E1);
3735  }
3738  if (0 <= _E0)
3739  for (; _E0 <= _E1 && _E1 < _Bmax; ++_E0)
3740  { // set a bit
3741  if (!_Node->_Small)
3742  _Node->_Small = new _Bitmap;
3743  _Node->_Small->_Mark(_E0);
3744  if (_E0 == _E1)
3745  break;
3746  }
3747  if (0 <= _E0 && _E1 - _E0 < _Tmax)
3748  for (; _E0 <= _E1; ++_E0)
3749  { // add to list of elements
3750  _Add_char_to_array(_E0);
3751  if (_E0 == _E1)
3752  break;
3753  }
3754  else
3755  { // store remaining range as pair
3756  if (!_Node->_Ranges)
3757  _Node->_Ranges = new _Buf<_Elem>;
3758  _Node->_Ranges->_Insert(_E0);
3759  _Node->_Ranges->_Insert(_E1);
3760  }
3761  }
Definition: regex:1746
Definition: regex:1520
const int _Tmax
Definition: regex:1928
void _Add_char_to_array(_Elem _Ch)
Definition: regex:3701
const int _Bmax
Definition: regex:1927
void _Mark(unsigned int _Ch)
Definition: regex:1597
_Buf< _Elem > * _Ranges
Definition: regex:1778
_Bitmap * _Small
Definition: regex:1776
Definition: regex:144
Definition: regex:1590
regex_constants::syntax_option_type _Flags
Definition: regex:1925
_Node_base * _Current
Definition: regex:1924
const _RxTraits & _Traits
Definition: regex:1926
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_Add_rep ( int  _Min,
int  _Max,
bool  _Greedy 
)
inline
3972  { // add repeat node
3973  if (_Current->_Kind == _N_str
3974  && ((_Node_str<_Elem> *)_Current)->_Data._Size() != 1)
3975  { // move final character to new string node
3977  _Add_char(_Node->_Data._Del());
3978  }
3979  _Node_base *_Pos = _Current;
3980  _Node_end_rep *_Node0 = new _Node_end_rep();
3981  _Node_rep *_Nx =
3982  new _Node_rep(_Greedy, _Min, _Max, _Node0, _Root->_Loops++);
3983  _Node0->_Begin_rep = _Nx;
3984  _Link_node(_Node0);
3985  if (_Pos->_Kind == _N_end_group
3986  || _Pos->_Kind == _N_end_capture)
3987  _Pos = ((_Node_end_group *)_Pos)->_Back;
3988  _Pos->_Prev->_Next = _Nx;
3989  _Nx->_Prev = _Pos->_Prev;
3990  _Pos->_Prev = _Nx;
3991  _Nx->_Next = _Pos;
3992  }
Definition: regex:1500
_Node_base * _Next
Definition: regex:1636
_Buf< _Elem > _Data
Definition: regex:1741
Definition: regex:1732
_Root_node * _Root
Definition: regex:1923
_Node_rep * _Begin_rep
Definition: regex:1833
Definition: regex:1503
_Node_base * _Prev
Definition: regex:1637
_Node_base * _Link_node(_Node_base *)
Definition: regex:3590
void _Add_char(_Elem _Ch)
Definition: regex:3664
Definition: regex:1674
_Node_type _Kind
Definition: regex:1634
unsigned int _Loops
Definition: regex:1668
Definition: regex:1508
Definition: regex:1823
_Node_base * _Current
Definition: regex:1924
Definition: regex:1847
Definition: regex:1626
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_Add_str_node ( )
inlineprivate
3657  { // add string node
3659  }
Definition: regex:1732
_Node_base * _Link_node(_Node_base *)
Definition: regex:3590
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_Add_wbound ( )
inline
3641  { // add wbound node
3643  }
Definition: regex:1498
_Node_base * _New_node(_Node_type _Kind)
Definition: regex:3607
template<class _FwdIt , class _Elem , class _RxTraits >
bool _Builder< _FwdIt, _Elem, _RxTraits >::_Beg_expr ( ) const
inline
3582  { // test for beginning of expression or subexpression
3583  return (_Beg_expr(_Current)
3584  || (_Current->_Kind == _N_bol && _Beg_expr(_Current->_Prev)));
3585  }
bool _Beg_expr() const
Definition: regex:3581
_Node_base * _Prev
Definition: regex:1637
_Node_type _Kind
Definition: regex:1634
_Node_base * _Current
Definition: regex:1924
Definition: regex:1496
template<class _FwdIt , class _Elem , class _RxTraits >
bool _Builder< _FwdIt, _Elem, _RxTraits >::_Beg_expr ( _Node_base _Nx) const
inlineprivate
3572  { // test for beginning of expression or subexpression
3573  return (_Nx->_Kind == _N_begin
3574  || _Nx->_Kind == _N_group
3575  || _Nx->_Kind == _N_capture);
3576  }
Definition: regex:1502
Definition: regex:1514
_Node_type _Kind
Definition: regex:1634
Definition: regex:1507
template<class _FwdIt , class _Elem , class _RxTraits >
_Node_base * _Builder< _FwdIt, _Elem, _RxTraits >::_Begin_assert_group ( bool  _Neg)
inline
3880  { // add assert node
3881  _Node_assert *_Node1 = new _Node_assert(_Neg
3882  ? _N_neg_assert : _N_assert);
3883 
3884  _Node_base *_Node2;
3885  _TRY_BEGIN
3886  _Node2 = new _Node_base(_N_nop);
3887  _CATCH_ALL
3888  delete _Node1;
3889  _RERAISE;
3890  _CATCH_END
3891 
3892  _Link_node(_Node1);
3893  _Node1->_Child = _Node2;
3894  _Node2->_Prev = _Node1;
3895  _Current = _Node2;
3896  return (_Node1);
3897  }
#define _TRY_BEGIN
Definition: xstddef:60
#define _CATCH_END
Definition: xstddef:63
Definition: regex:1505
Definition: regex:1504
_Node_base * _Link_node(_Node_base *)
Definition: regex:3590
#define _CATCH_ALL
Definition: xstddef:62
_Node_base * _Current
Definition: regex:1924
#define _RERAISE
Definition: xstddef:74
Definition: regex:1495
Definition: regex:1687
Definition: regex:1626
template<class _FwdIt , class _Elem , class _RxTraits >
_Node_base * _Builder< _FwdIt, _Elem, _RxTraits >::_Begin_capture_group ( unsigned int  _Idx)
inline
3914  { // add capture group node
3915  return (_Link_node(new _Node_capture(_Idx)));
3916  }
Definition: regex:1705
_Node_base * _Link_node(_Node_base *)
Definition: regex:3590
template<class _FwdIt , class _Elem , class _RxTraits >
_Node_base * _Builder< _FwdIt, _Elem, _RxTraits >::_Begin_group ( void  )
inline
3858  { // add group node
3859  return (_New_node(_N_group));
3860  }
Definition: regex:1502
_Node_base * _New_node(_Node_type _Kind)
Definition: regex:3607
template<class _FwdIt , class _Elem , class _RxTraits >
_Node_base * _Builder< _FwdIt, _Elem, _RxTraits >::_Begin_if ( _Node_base _Start)
inline
3932  { // add if node
3933  /* append endif node */
3934  _Node_base *_Res = new _Node_endif;
3935  _Link_node(_Res);
3936 
3937  /* insert if_node */
3938  _Node_if *_Node1 = new _Node_if(_Res);
3939  _Node_base *_Pos = _Start->_Next;
3940  _Node1->_Prev = _Pos->_Prev;
3941  _Pos->_Prev->_Next = _Node1;
3942  _Node1->_Next = _Pos;
3943  _Pos->_Prev = _Node1;
3944  return (_Res);
3945  }
_Node_base * _Next
Definition: regex:1636
Definition: regex:1795
_Node_base * _Prev
Definition: regex:1637
_Node_base * _Link_node(_Node_base *)
Definition: regex:3590
Definition: regex:1784
Definition: regex:1626
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_Char_to_elts ( _FwdIt  _First,
_FwdIt  _Last,
_Difft  _Diff,
_Sequence< _Elem > **  _Cur 
)
inlineprivate
3801  { // add collation element to element sequence
3802  while (*_Cur && (unsigned int)_Diff < (*_Cur)->_Sz)
3803  _Cur = &(*_Cur)->_Next;
3804  if (!(*_Cur) || (unsigned int)_Diff != (*_Cur)->_Sz)
3805  { // add new sequence holding elements of the same length
3806  _Sequence<_Elem> *_Node = *_Cur;
3807  *_Cur = new _Sequence<_Elem>((unsigned int)_Diff);
3808  (*_Cur)->_Next = _Node;
3809  }
3810  (*_Cur)->_Data._Insert(_First, _Last);
3811  }
_CRTIMP _In_opt_z_ const wchar_t _In_opt_z_ const wchar_t unsigned int
Definition: crtdefs.h:642
_Sequence * _Next
Definition: regex:1622
Definition: regex:1613
unsigned int _Sz
Definition: regex:1620
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_Discard_pattern ( )
inline
4007  { // free memory
4009  _Root = 0;
4010  }
void _Destroy_node(_Node_base *_Nx, _Node_base *_Ne=0)
Definition: regex:1645
_Root_node * _Root
Definition: regex:1923
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_Else_if ( _Node_base _Start,
_Node_base _End 
)
inline
3952  { // add else node
3953  _Node_if *_Parent = (_Node_if *)_Start->_Next;
3954  _Node_base *_First = _End->_Next;
3955  _End->_Next = 0;
3957  _Current = _End;
3958  _End->_Next = 0;
3959  _Last->_Next = _End;
3960  while (_Parent->_Child)
3961  _Parent = _Parent->_Child;
3962  _Parent->_Child = new _Node_if(_End);
3963  _Parent->_Child->_Next = _First;
3964  _First->_Prev = _Parent->_Child;
3965  }
_Node_base * _Next
Definition: regex:1636
Definition: regex:1795
while(_First< _Pfirst &&!_STLCLRDB_LT(*(_Pfirst-1),*_Pfirst)&&!(*_Pfirst< *(_Pfirst-1)))--_Pfirst
_Node_base * _Prev
Definition: regex:1637
_Node_if * _Child
Definition: regex:1817
_Node_base * _Current
Definition: regex:1924
_FwdIt _Last
Definition: algorithm:1936
Definition: regex:1626
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_End_assert_group ( _Node_base _Nx)
inline
3904  { // add end of assert node
3905  _End_group(_Nx);
3906  _Current = _Nx;
3907  }
void _End_group(_Node_base *_Back)
Definition: regex:3865
_Node_base * _Current
Definition: regex:1924
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_End_group ( _Node_base _Back)
inline
3867  { // add end of group node
3868  _Node_type _Elt = _Back->_Kind == _N_group ? _N_end_group
3869  : _Back->_Kind == _N_assert ? _N_end_assert
3870  : _Back->_Kind == _N_neg_assert ? _N_end_assert
3871  : _N_end_capture;
3872  _Link_node(new _Node_end_group(_Elt, _Fl_none, _Back));
3873  }
Definition: regex:1470
_Node_type
Definition: regex:1492
Definition: regex:1506
Definition: regex:1502
Definition: regex:1505
Definition: regex:1504
Definition: regex:1503
_Node_base * _Link_node(_Node_base *)
Definition: regex:3590
Definition: regex:1674
_Node_type _Kind
Definition: regex:1634
Definition: regex:1508
template<class _FwdIt , class _Elem , class _RxTraits >
_Root_node * _Builder< _FwdIt, _Elem, _RxTraits >::_End_pattern ( void  )
inline
3998  { // wrap up
3999  _New_node(_N_end);
4000  return (_Root);
4001  }
_Root_node * _Root
Definition: regex:1923
Definition: regex:1515
_Node_base * _New_node(_Node_type _Kind)
Definition: regex:3607
template<class _FwdIt , class _Elem , class _RxTraits >
_Node_base * _Builder< _FwdIt, _Elem, _RxTraits >::_Getmark ( ) const
inline
3563  { // return current node
3564  return (_Current);
3565  }
_Node_base * _Current
Definition: regex:1924
template<class _FwdIt , class _Elem , class _RxTraits >
_Node_base * _Builder< _FwdIt, _Elem, _RxTraits >::_Link_node ( _Node_base _Nx)
inlineprivate
3592  { // insert _Nx at current location
3593  _Nx->_Prev = _Current;
3594  if (_Current->_Next)
3595  { // set back pointer
3596  _Nx->_Next = _Current->_Next;
3597  _Current->_Next->_Prev = _Nx;
3598  }
3599  _Current->_Next = _Nx;
3600  _Current = _Nx;
3601  return (_Nx);
3602  }
_Node_base * _Next
Definition: regex:1636
_Node_base * _Prev
Definition: regex:1637
_Node_base * _Current
Definition: regex:1924
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_Mark_final ( )
inline
3555  { // set flag
3557  }
Definition: regex:1473
_Node_flags _Flags
Definition: regex:1635
_Node_base * _Current
Definition: regex:1924
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_Negate ( )
inline
3547  { // set flag
3549  }
Definition: regex:1471
_Node_flags _Flags
Definition: regex:1635
_Node_base * _Current
Definition: regex:1924
template<class _FwdIt , class _Elem , class _RxTraits >
_Node_base * _Builder< _FwdIt, _Elem, _RxTraits >::_New_node ( _Node_type  _Kind)
inlineprivate
3609  { // allocate and link simple node
3610  return (_Link_node(new _Node_base(_Kind)));
3611  }
_Node_base * _Link_node(_Node_base *)
Definition: regex:3590
Definition: regex:1626
template<class _FwdIt , class _Elem , class _RxTraits >
typedef _Builder< _FwdIt, _Elem, _RxTraits >::_REGEX_DIFFT ( _FwdIt  )
template<class _FwdIt , class _Elem , class _RxTraits >
void _Builder< _FwdIt, _Elem, _RxTraits >::_Setlong ( )
inline
3539  { // set flag
3540  _Root->_Flags |= _Fl_longest;
3541  }
Definition: regex:1474
_Root_node * _Root
Definition: regex:1923
_Node_flags _Flags
Definition: regex:1635
template<class _FwdIt , class _Elem , class _RxTraits >
_Builder& _Builder< _FwdIt, _Elem, _RxTraits >::operator= ( const _Builder< _FwdIt, _Elem, _RxTraits > &  )
private

Member Data Documentation

template<class _FwdIt , class _Elem , class _RxTraits >
const int _Builder< _FwdIt, _Elem, _RxTraits >::_Bmax
private
template<class _FwdIt , class _Elem , class _RxTraits >
_Node_base* _Builder< _FwdIt, _Elem, _RxTraits >::_Current
private
template<class _FwdIt , class _Elem , class _RxTraits >
regex_constants::syntax_option_type _Builder< _FwdIt, _Elem, _RxTraits >::_Flags
private
template<class _FwdIt , class _Elem , class _RxTraits >
_Root_node* _Builder< _FwdIt, _Elem, _RxTraits >::_Root
private
template<class _FwdIt , class _Elem , class _RxTraits >
const int _Builder< _FwdIt, _Elem, _RxTraits >::_Tmax
private
template<class _FwdIt , class _Elem , class _RxTraits >
const _RxTraits& _Builder< _FwdIt, _Elem, _RxTraits >::_Traits
private

The documentation for this class was generated from the following file: