| 286 | /// |
| 287 | template <class traits> |
| 288 | class CefStringBase { |
| 289 | public: |
| 290 | typedef typename traits::char_type char_type; |
| 291 | typedef typename traits::struct_type struct_type; |
| 292 | typedef typename traits::userfree_struct_type userfree_struct_type; |
| 293 | |
| 294 | /// |
| 295 | // Default constructor. |
| 296 | /// |
| 297 | CefStringBase() : string_(NULL), owner_(false) {} |
| 298 | |
| 299 | /// |
| 300 | // Create a new string from an existing string. Data will always be copied. |
| 301 | /// |
| 302 | CefStringBase(const CefStringBase& str) : string_(NULL), owner_(false) { |
| 303 | FromString(str.c_str(), str.length(), true); |
| 304 | } |
| 305 | |
| 306 | /// |
| 307 | // Create a new string from an existing std::string. Data will be always |
| 308 | // copied. Translation will occur if necessary based on the underlying string |
| 309 | // type. |
| 310 | /// |
| 311 | CefStringBase(const std::string& src) : string_(NULL), owner_(false) { |
| 312 | FromString(src); |
| 313 | } |
| 314 | CefStringBase(const char* src) : string_(NULL), owner_(false) { |
| 315 | if (src) |
| 316 | FromString(std::string(src)); |
| 317 | } |
| 318 | |
| 319 | /// |
| 320 | // Create a new string from an existing std::wstring. Data will be always |
| 321 | // copied. Translation will occur if necessary based on the underlying string |
| 322 | // type. |
| 323 | /// |
| 324 | CefStringBase(const std::wstring& src) : string_(NULL), owner_(false) { |
| 325 | FromWString(src); |
| 326 | } |
| 327 | CefStringBase(const wchar_t* src) : string_(NULL), owner_(false) { |
| 328 | if (src) |
| 329 | FromWString(std::wstring(src)); |
| 330 | } |
| 331 | |
| 332 | #if defined(WCHAR_T_IS_UTF32) |
| 333 | /// |
| 334 | // Create a new string from an existing string16. Data will be always |
| 335 | // copied. Translation will occur if necessary based on the underlying string |
| 336 | // type. |
| 337 | /// |
| 338 | CefStringBase(const base::string16& src) : string_(NULL), owner_(false) { |
| 339 | FromString16(src); |
| 340 | } |
| 341 | CefStringBase(const char16* src) : string_(NULL), owner_(false) { |
| 342 | if (src) |
| 343 | FromString16(base::string16(src)); |
| 344 | } |
| 345 | #endif // WCHAR_T_IS_UTF32 |