annotate DEPENDENCIES/generic/include/boost/python/str.hpp @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents 2665513ce2d3
children
rev   line source
Chris@16 1 // Copyright David Abrahams 2002.
Chris@16 2 // Distributed under the Boost Software License, Version 1.0. (See
Chris@16 3 // accompanying file LICENSE_1_0.txt or copy at
Chris@16 4 // http://www.boost.org/LICENSE_1_0.txt)
Chris@16 5 #ifndef STR_20020703_HPP
Chris@16 6 #define STR_20020703_HPP
Chris@16 7
Chris@16 8 # include <boost/python/detail/prefix.hpp>
Chris@16 9
Chris@16 10 #include <boost/python/object.hpp>
Chris@16 11 #include <boost/python/list.hpp>
Chris@16 12 #include <boost/python/converter/pytype_object_mgr_traits.hpp>
Chris@16 13
Chris@16 14 // disable defines in <cctype> provided by some system libraries
Chris@16 15 #undef isspace
Chris@16 16 #undef islower
Chris@16 17 #undef isalpha
Chris@16 18 #undef isdigit
Chris@16 19 #undef isalnum
Chris@16 20 #undef isupper
Chris@16 21
Chris@16 22 namespace boost { namespace python {
Chris@16 23
Chris@16 24 class str;
Chris@16 25
Chris@16 26 namespace detail
Chris@16 27 {
Chris@16 28 struct BOOST_PYTHON_DECL str_base : object
Chris@16 29 {
Chris@16 30 str capitalize() const;
Chris@16 31
Chris@16 32 str center(object_cref width) const;
Chris@16 33
Chris@16 34 long count(object_cref sub) const;
Chris@16 35
Chris@16 36 long count(object_cref sub, object_cref start) const;
Chris@16 37
Chris@16 38 long count(object_cref sub, object_cref start, object_cref end) const;
Chris@16 39
Chris@16 40 #if PY_VERSION_HEX < 0x03000000
Chris@16 41 object decode() const;
Chris@16 42 object decode(object_cref encoding) const;
Chris@16 43
Chris@16 44 object decode(object_cref encoding, object_cref errors) const;
Chris@16 45 #endif
Chris@16 46
Chris@16 47 object encode() const;
Chris@16 48 object encode(object_cref encoding) const;
Chris@16 49 object encode(object_cref encoding, object_cref errors) const;
Chris@16 50
Chris@16 51 bool endswith(object_cref suffix) const;
Chris@16 52
Chris@16 53 bool endswith(object_cref suffix, object_cref start) const;
Chris@16 54 bool endswith(object_cref suffix, object_cref start, object_cref end) const;
Chris@16 55
Chris@16 56 str expandtabs() const;
Chris@16 57 str expandtabs(object_cref tabsize) const;
Chris@16 58
Chris@16 59 long find(object_cref sub) const;
Chris@16 60 long find(object_cref sub, object_cref start) const;
Chris@16 61
Chris@16 62 long find(object_cref sub, object_cref start, object_cref end) const;
Chris@16 63
Chris@16 64 long index(object_cref sub) const;
Chris@16 65
Chris@16 66 long index(object_cref sub, object_cref start) const;
Chris@16 67 long index(object_cref sub, object_cref start, object_cref end) const;
Chris@16 68
Chris@16 69 bool isalnum() const;
Chris@16 70 bool isalpha() const;
Chris@16 71 bool isdigit() const;
Chris@16 72 bool islower() const;
Chris@16 73 bool isspace() const;
Chris@16 74 bool istitle() const;
Chris@16 75 bool isupper() const;
Chris@16 76
Chris@16 77 str join(object_cref sequence) const;
Chris@16 78
Chris@16 79 str ljust(object_cref width) const;
Chris@16 80 str lower() const;
Chris@16 81 str lstrip() const;
Chris@16 82
Chris@16 83 str replace(object_cref old, object_cref new_) const;
Chris@16 84 str replace(object_cref old, object_cref new_, object_cref maxsplit) const;
Chris@16 85 long rfind(object_cref sub) const;
Chris@16 86
Chris@16 87 long rfind(object_cref sub, object_cref start) const;
Chris@16 88
Chris@16 89 long rfind(object_cref sub, object_cref start, object_cref end) const;
Chris@16 90 long rindex(object_cref sub) const;
Chris@16 91 long rindex(object_cref sub, object_cref start) const;
Chris@16 92
Chris@16 93
Chris@16 94 long rindex(object_cref sub, object_cref start, object_cref end) const;
Chris@16 95
Chris@16 96 str rjust(object_cref width) const;
Chris@16 97
Chris@16 98 str rstrip() const;
Chris@16 99
Chris@16 100 list split() const;
Chris@16 101 list split(object_cref sep) const;
Chris@16 102
Chris@16 103 list split(object_cref sep, object_cref maxsplit) const;
Chris@16 104
Chris@16 105
Chris@16 106 list splitlines() const;
Chris@16 107 list splitlines(object_cref keepends) const;
Chris@16 108
Chris@16 109 bool startswith(object_cref prefix) const;
Chris@16 110
Chris@16 111
Chris@16 112 bool startswith(object_cref prefix, object_cref start) const;
Chris@16 113 bool startswith(object_cref prefix, object_cref start, object_cref end) const;
Chris@16 114
Chris@16 115 str strip() const;
Chris@16 116 str swapcase() const;
Chris@16 117 str title() const;
Chris@16 118
Chris@16 119 str translate(object_cref table) const;
Chris@16 120
Chris@16 121 str translate(object_cref table, object_cref deletechars) const;
Chris@16 122
Chris@16 123
Chris@16 124 str upper() const;
Chris@16 125
Chris@16 126 protected:
Chris@16 127 str_base(); // new str
Chris@16 128
Chris@16 129 str_base(const char* s); // new str
Chris@16 130
Chris@16 131 str_base(char const* start, char const* finish);
Chris@16 132
Chris@16 133 str_base(char const* start, std::size_t length);
Chris@16 134
Chris@16 135 explicit str_base(object_cref other);
Chris@16 136
Chris@16 137 BOOST_PYTHON_FORWARD_OBJECT_CONSTRUCTORS(str_base, object)
Chris@16 138 private:
Chris@16 139 static new_reference call(object const&);
Chris@16 140 };
Chris@16 141 }
Chris@16 142
Chris@16 143
Chris@16 144 class str : public detail::str_base
Chris@16 145 {
Chris@16 146 typedef detail::str_base base;
Chris@16 147 public:
Chris@16 148 str() {} // new str
Chris@16 149
Chris@16 150 str(const char* s) : base(s) {} // new str
Chris@16 151
Chris@16 152 str(char const* start, char const* finish) // new str
Chris@16 153 : base(start, finish)
Chris@16 154 {}
Chris@16 155
Chris@16 156 str(char const* start, std::size_t length) // new str
Chris@16 157 : base(start, length)
Chris@16 158 {}
Chris@16 159
Chris@16 160 template <class T>
Chris@16 161 explicit str(T const& other)
Chris@16 162 : base(object(other))
Chris@16 163 {
Chris@16 164 }
Chris@16 165
Chris@16 166 template <class T>
Chris@16 167 str center(T const& width) const
Chris@16 168 {
Chris@16 169 return base::center(object(width));
Chris@16 170 }
Chris@16 171
Chris@16 172 template<class T>
Chris@16 173 long count(T const& sub) const
Chris@16 174 {
Chris@16 175 return base::count(object(sub));
Chris@16 176 }
Chris@16 177
Chris@16 178 template<class T1, class T2>
Chris@16 179 long count(T1 const& sub,T2 const& start) const
Chris@16 180 {
Chris@16 181 return base::count(object(sub), object(start));
Chris@16 182 }
Chris@16 183
Chris@16 184 template<class T1, class T2, class T3>
Chris@16 185 long count(T1 const& sub,T2 const& start, T3 const& end) const
Chris@16 186 {
Chris@16 187 return base::count(object(sub), object(start));
Chris@16 188 }
Chris@16 189
Chris@16 190 #if PY_VERSION_HEX < 0x03000000
Chris@16 191 object decode() const { return base::decode(); }
Chris@16 192
Chris@16 193 template<class T>
Chris@16 194 object decode(T const& encoding) const
Chris@16 195 {
Chris@16 196 return base::decode(object(encoding));
Chris@16 197 }
Chris@16 198
Chris@16 199 template<class T1, class T2>
Chris@16 200 object decode(T1 const& encoding, T2 const& errors) const
Chris@16 201 {
Chris@16 202 return base::decode(object(encoding),object(errors));
Chris@16 203 }
Chris@16 204 #endif
Chris@16 205
Chris@16 206 object encode() const { return base::encode(); }
Chris@16 207
Chris@16 208 template <class T>
Chris@16 209 object encode(T const& encoding) const
Chris@16 210 {
Chris@16 211 return base::encode(object(encoding));
Chris@16 212 }
Chris@16 213
Chris@16 214 template <class T1, class T2>
Chris@16 215 object encode(T1 const& encoding, T2 const& errors) const
Chris@16 216 {
Chris@16 217 return base::encode(object(encoding),object(errors));
Chris@16 218 }
Chris@16 219
Chris@16 220 template <class T>
Chris@16 221 bool endswith(T const& suffix) const
Chris@16 222 {
Chris@16 223 return base::endswith(object(suffix));
Chris@16 224 }
Chris@16 225
Chris@16 226 template <class T1, class T2>
Chris@16 227 bool endswith(T1 const& suffix, T2 const& start) const
Chris@16 228 {
Chris@16 229 return base::endswith(object(suffix), object(start));
Chris@16 230 }
Chris@16 231
Chris@16 232 template <class T1, class T2, class T3>
Chris@16 233 bool endswith(T1 const& suffix, T2 const& start, T3 const& end) const
Chris@16 234 {
Chris@16 235 return base::endswith(object(suffix), object(start), object(end));
Chris@16 236 }
Chris@16 237
Chris@16 238 str expandtabs() const { return base::expandtabs(); }
Chris@16 239
Chris@16 240 template <class T>
Chris@16 241 str expandtabs(T const& tabsize) const
Chris@16 242 {
Chris@16 243 return base::expandtabs(object(tabsize));
Chris@16 244 }
Chris@16 245
Chris@16 246 template <class T>
Chris@16 247 long find(T const& sub) const
Chris@16 248 {
Chris@16 249 return base::find(object(sub));
Chris@16 250 }
Chris@16 251
Chris@16 252 template <class T1, class T2>
Chris@16 253 long find(T1 const& sub, T2 const& start) const
Chris@16 254 {
Chris@16 255 return base::find(object(sub), object(start));
Chris@16 256 }
Chris@16 257
Chris@16 258 template <class T1, class T2, class T3>
Chris@16 259 long find(T1 const& sub, T2 const& start, T3 const& end) const
Chris@16 260 {
Chris@16 261 return base::find(object(sub), object(start), object(end));
Chris@16 262 }
Chris@16 263
Chris@16 264 template <class T>
Chris@16 265 long index(T const& sub) const
Chris@16 266 {
Chris@16 267 return base::index(object(sub));
Chris@16 268 }
Chris@16 269
Chris@16 270 template <class T1, class T2>
Chris@16 271 long index(T1 const& sub, T2 const& start) const
Chris@16 272 {
Chris@16 273 return base::index(object(sub), object(start));
Chris@16 274 }
Chris@16 275
Chris@16 276 template <class T1, class T2, class T3>
Chris@16 277 long index(T1 const& sub, T2 const& start, T3 const& end) const
Chris@16 278 {
Chris@16 279 return base::index(object(sub), object(start), object(end));
Chris@16 280 }
Chris@16 281
Chris@16 282 template <class T>
Chris@16 283 str join(T const& sequence) const
Chris@16 284 {
Chris@16 285 return base::join(object(sequence));
Chris@16 286 }
Chris@16 287
Chris@16 288 template <class T>
Chris@16 289 str ljust(T const& width) const
Chris@16 290 {
Chris@16 291 return base::ljust(object(width));
Chris@16 292 }
Chris@16 293
Chris@16 294 template <class T1, class T2>
Chris@16 295 str replace(T1 const& old, T2 const& new_) const
Chris@16 296 {
Chris@16 297 return base::replace(object(old),object(new_));
Chris@16 298 }
Chris@16 299
Chris@16 300 template <class T1, class T2, class T3>
Chris@16 301 str replace(T1 const& old, T2 const& new_, T3 const& maxsplit) const
Chris@16 302 {
Chris@16 303 return base::replace(object(old),object(new_), object(maxsplit));
Chris@16 304 }
Chris@16 305
Chris@16 306 template <class T>
Chris@16 307 long rfind(T const& sub) const
Chris@16 308 {
Chris@16 309 return base::rfind(object(sub));
Chris@16 310 }
Chris@16 311
Chris@16 312 template <class T1, class T2>
Chris@16 313 long rfind(T1 const& sub, T2 const& start) const
Chris@16 314 {
Chris@16 315 return base::rfind(object(sub), object(start));
Chris@16 316 }
Chris@16 317
Chris@16 318 template <class T1, class T2, class T3>
Chris@16 319 long rfind(T1 const& sub, T2 const& start, T3 const& end) const
Chris@16 320 {
Chris@16 321 return base::rfind(object(sub), object(start), object(end));
Chris@16 322 }
Chris@16 323
Chris@16 324 template <class T>
Chris@16 325 long rindex(T const& sub) const
Chris@16 326 {
Chris@16 327 return base::rindex(object(sub));
Chris@16 328 }
Chris@16 329
Chris@16 330 template <class T1, class T2>
Chris@16 331 long rindex(T1 const& sub, T2 const& start) const
Chris@16 332 {
Chris@16 333 return base::rindex(object(sub), object(start));
Chris@16 334 }
Chris@16 335
Chris@16 336 template <class T1, class T2, class T3>
Chris@16 337 long rindex(T1 const& sub, T2 const& start, T3 const& end) const
Chris@16 338 {
Chris@16 339 return base::rindex(object(sub), object(start), object(end));
Chris@16 340 }
Chris@16 341
Chris@16 342 template <class T>
Chris@16 343 str rjust(T const& width) const
Chris@16 344 {
Chris@16 345 return base::rjust(object(width));
Chris@16 346 }
Chris@16 347
Chris@16 348 list split() const { return base::split(); }
Chris@16 349
Chris@16 350 template <class T>
Chris@16 351 list split(T const& sep) const
Chris@16 352 {
Chris@16 353 return base::split(object(sep));
Chris@16 354 }
Chris@16 355
Chris@16 356 template <class T1, class T2>
Chris@16 357 list split(T1 const& sep, T2 const& maxsplit) const
Chris@16 358 {
Chris@16 359 return base::split(object(sep), object(maxsplit));
Chris@16 360 }
Chris@16 361
Chris@16 362 list splitlines() const { return base::splitlines(); }
Chris@16 363
Chris@16 364 template <class T>
Chris@16 365 list splitlines(T const& keepends) const
Chris@16 366 {
Chris@16 367 return base::splitlines(object(keepends));
Chris@16 368 }
Chris@16 369
Chris@16 370 template <class T>
Chris@16 371 bool startswith(T const& prefix) const
Chris@16 372 {
Chris@16 373 return base::startswith(object(prefix));
Chris@16 374 }
Chris@16 375
Chris@16 376 template <class T1, class T2>
Chris@16 377 bool startswith(T1 const& prefix, T2 const& start) const
Chris@16 378 {
Chris@16 379 return base::startswith(object(prefix), object(start));
Chris@16 380 }
Chris@16 381
Chris@16 382 template <class T1, class T2, class T3>
Chris@16 383 bool startswith(T1 const& prefix, T2 const& start, T3 const& end) const
Chris@16 384 {
Chris@16 385 return base::startswith(object(prefix), object(start), object(end));
Chris@16 386 }
Chris@16 387
Chris@16 388 template <class T>
Chris@16 389 str translate(T const& table) const
Chris@16 390 {
Chris@16 391 return base::translate(object(table));
Chris@16 392 }
Chris@16 393
Chris@16 394 template <class T1, class T2>
Chris@16 395 str translate(T1 const& table, T2 const& deletechars) const
Chris@16 396 {
Chris@16 397 return base::translate(object(table), object(deletechars));
Chris@16 398 }
Chris@16 399
Chris@16 400 public: // implementation detail -- for internal use only
Chris@16 401 BOOST_PYTHON_FORWARD_OBJECT_CONSTRUCTORS(str, base)
Chris@16 402 };
Chris@16 403
Chris@16 404 //
Chris@16 405 // Converter Specializations
Chris@16 406 //
Chris@16 407 namespace converter
Chris@16 408 {
Chris@16 409 template <>
Chris@16 410 struct object_manager_traits<str>
Chris@16 411 #if PY_VERSION_HEX >= 0x03000000
Chris@16 412 : pytype_object_manager_traits<&PyUnicode_Type,str>
Chris@16 413 #else
Chris@16 414 : pytype_object_manager_traits<&PyString_Type,str>
Chris@16 415 #endif
Chris@16 416 {
Chris@16 417 };
Chris@16 418 }
Chris@16 419
Chris@16 420 }} // namespace boost::python
Chris@16 421
Chris@16 422 #endif // STR_20020703_HPP