Home | History | Annotate | Download | only in std
      1 %include <exception.i>
      2 %include <std_container.i>
      3 %include <std_alloc.i>
      4 %include <std_char_traits.i>
      5 
      6 
      7 %{
      8 #include <string>
      9 %}
     10 
     11 namespace std
     12 {
     13   %naturalvar basic_string;
     14 }
     15 
     16 
     17 namespace std {
     18 
     19   template <class _CharT, class _Traits = char_traits<_CharT>, typename _Alloc = allocator<_CharT> >
     20   class basic_string
     21   {
     22 #if !defined(SWIG_STD_MODERN_STL) || defined(SWIG_STD_NOMODERN_STL)
     23     %ignore push_back;
     24     %ignore clear;
     25     %ignore compare;
     26     %ignore append;
     27 #endif
     28 
     29   public:
     30     typedef size_t size_type;
     31     typedef ptrdiff_t difference_type;
     32     typedef _CharT value_type;
     33     typedef value_type reference;
     34     typedef value_type const_reference;
     35     typedef _Alloc allocator_type;
     36 
     37     static const size_type npos;
     38 
     39 #ifdef SWIG_EXPORT_ITERATOR_METHODS
     40   class iterator;
     41   class reverse_iterator;
     42   class const_iterator;
     43   class const_reverse_iterator;
     44 #endif
     45 
     46 
     47     %traits_swigtype(_CharT);
     48     %fragment(SWIG_Traits_frag(_CharT));
     49 
     50 
     51     basic_string(const _CharT* __s, size_type __n);
     52 
     53     // Capacity:
     54 
     55     size_type length() const;
     56 
     57     size_type max_size() const;
     58 
     59     size_type capacity() const;
     60 
     61     void reserve(size_type __res_arg = 0);
     62 
     63 
     64     // Modifiers:
     65 
     66     basic_string&
     67     append(const basic_string& __str);
     68 
     69     basic_string&
     70     append(const basic_string& __str, size_type __pos, size_type __n);
     71 
     72     basic_string&
     73     append(const _CharT* __s, size_type __n);
     74 
     75     basic_string&
     76     append(size_type __n, _CharT __c);
     77 
     78     basic_string&
     79     assign(const basic_string& __str);
     80 
     81     basic_string&
     82     assign(const basic_string& __str, size_type __pos, size_type __n);
     83 
     84     basic_string&
     85     assign(const _CharT* __s, size_type __n);
     86 
     87     basic_string&
     88     insert(size_type __pos1, const basic_string& __str);
     89 
     90     basic_string&
     91     insert(size_type __pos1, const basic_string& __str,
     92 	   size_type __pos2, size_type __n);
     93 
     94     basic_string&
     95     insert(size_type __pos, const _CharT* __s, size_type __n);
     96 
     97     basic_string&
     98     insert(size_type __pos, size_type __n, _CharT __c);
     99 
    100     basic_string&
    101     erase(size_type __pos = 0, size_type __n = npos);
    102 
    103     basic_string&
    104     replace(size_type __pos, size_type __n, const basic_string& __str);
    105 
    106     basic_string&
    107     replace(size_type __pos1, size_type __n1, const basic_string& __str,
    108 	    size_type __pos2, size_type __n2);
    109 
    110     basic_string&
    111     replace(size_type __pos, size_type __n1, const _CharT* __s,
    112 	    size_type __n2);
    113 
    114     basic_string&
    115     replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c);
    116 
    117 
    118     size_type
    119     copy(_CharT* __s, size_type __n, size_type __pos = 0) const;
    120 
    121     // String operations:
    122     const _CharT* c_str() const;
    123 
    124     size_type
    125     find(const _CharT* __s, size_type __pos, size_type __n) const;
    126 
    127     size_type
    128     find(const basic_string& __str, size_type __pos = 0) const;
    129 
    130     size_type
    131     find(_CharT __c, size_type __pos = 0) const;
    132 
    133     size_type
    134     rfind(const basic_string& __str, size_type __pos = npos) const;
    135 
    136     size_type
    137     rfind(const _CharT* __s, size_type __pos, size_type __n) const;
    138 
    139     size_type
    140     rfind(_CharT __c, size_type __pos = npos) const;
    141 
    142     size_type
    143     find_first_of(const basic_string& __str, size_type __pos = 0) const;
    144 
    145     size_type
    146     find_first_of(const _CharT* __s, size_type __pos, size_type __n) const;
    147 
    148     size_type
    149     find_first_of(_CharT __c, size_type __pos = 0) const;
    150 
    151     size_type
    152     find_last_of(const basic_string& __str, size_type __pos = npos) const;
    153 
    154     size_type
    155     find_last_of(const _CharT* __s, size_type __pos, size_type __n) const;
    156 
    157     size_type
    158     find_last_of(_CharT __c, size_type __pos = npos) const;
    159 
    160     size_type
    161     find_first_not_of(const basic_string& __str, size_type __pos = 0) const;
    162 
    163     size_type
    164     find_first_not_of(const _CharT* __s, size_type __pos,
    165 		      size_type __n) const;
    166 
    167     size_type
    168     find_first_not_of(_CharT __c, size_type __pos = 0) const;
    169 
    170     size_type
    171     find_last_not_of(const basic_string& __str, size_type __pos = npos) const;
    172 
    173     size_type
    174     find_last_not_of(const _CharT* __s, size_type __pos,
    175 		     size_type __n) const;
    176 
    177     size_type
    178     find_last_not_of(_CharT __c, size_type __pos = npos) const;
    179 
    180     basic_string
    181     substr(size_type __pos = 0, size_type __n = npos) const;
    182 
    183     int
    184     compare(const basic_string& __str) const;
    185 
    186     int
    187     compare(size_type __pos, size_type __n, const basic_string& __str) const;
    188 
    189     int
    190     compare(size_type __pos1, size_type __n1, const basic_string& __str,
    191 	    size_type __pos2, size_type __n2) const;
    192 
    193 
    194     %ignore pop_back();
    195     %ignore front() const;
    196     %ignore back() const;
    197     %ignore basic_string(size_type n);
    198     %std_sequence_methods_val(basic_string);
    199 
    200 
    201     %ignore pop();
    202 
    203 
    204 #ifdef %swig_basic_string
    205     // Add swig/language extra methods
    206     %swig_basic_string(std::basic_string<_CharT, _Traits, _Alloc >);
    207 #endif
    208 
    209 #ifdef SWIG_EXPORT_ITERATOR_METHODS
    210 
    211 
    212     class iterator;
    213     class reverse_iterator;
    214     class const_iterator;
    215     class const_reverse_iterator;
    216 
    217 
    218     void
    219     insert(iterator __p, size_type __n, _CharT __c);
    220 
    221     basic_string&
    222     replace(iterator __i1, iterator __i2, const basic_string& __str);
    223 
    224     basic_string&
    225     replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n);
    226 
    227     basic_string&
    228     replace(iterator __i1, iterator __i2, size_type __n, _CharT __c);
    229 
    230 
    231     basic_string&
    232     replace(iterator __i1, iterator __i2, const _CharT* __k1, const _CharT* __k2);
    233 
    234     basic_string&
    235     replace(iterator __i1, iterator __i2, const_iterator __k1, const_iterator __k2);
    236 #endif
    237 
    238     basic_string& operator +=(const basic_string& v);
    239 
    240     %newobject __add__;
    241     %newobject __radd__;
    242     %extend {
    243 
    244       std::basic_string<_CharT,_Traits,_Alloc >* __add__(const basic_string& v) {
    245 	std::basic_string<_CharT,_Traits,_Alloc >* res = new std::basic_string<_CharT,_Traits,_Alloc >(*self);
    246 	*res += v;
    247 	return res;
    248       }
    249 
    250       std::basic_string<_CharT,_Traits,_Alloc >* __radd__(const basic_string& v) {
    251 	std::basic_string<_CharT,_Traits,_Alloc >* res = new std::basic_string<_CharT,_Traits,_Alloc >(v);
    252 	*res += *self;
    253 	return res;
    254       }
    255 
    256       std::basic_string<_CharT,_Traits,_Alloc > __str__() {
    257 	return *self;
    258       }
    259 
    260       std::basic_ostream<_CharT, std::char_traits<_CharT> >&
    261 	__rlshift__(std::basic_ostream<_CharT, std::char_traits<_CharT> >& out) {
    262 	out << *self;
    263 	return out;
    264       }
    265     }
    266 
    267   };
    268 }
    269 
    270 
    271