8#ifndef INCLUDED_ORCUS_PSTRING_HPP
9#define INCLUDED_ORCUS_PSTRING_HPP
11#include "orcus/env.hpp"
29 friend ::std::ostream& operator<< (::std::ostream& os,
const pstring& str);
33 pstring() : m_pos(
nullptr), m_size(0) {}
35 pstring(
const char* _pos,
size_t _size) : m_pos(_pos), m_size(_size) {}
36 pstring(
const std::string& s) : m_pos(s.data()), m_size(s.size()) {}
38 ::std::string str()
const { return ::std::string(m_pos, m_size); }
40 size_t size()
const {
return m_size; }
41 const char& operator[](
size_t idx)
const {
return m_pos[idx]; }
50 const char* get()
const {
return m_pos; }
52 const char* data()
const {
return m_pos; }
54 bool operator== (
const pstring& r)
const;
56 bool operator!= (
const pstring& r)
const
58 return !operator==(r);
61 bool operator< (
const pstring& r)
const;
63 bool operator== (
const char* _str)
const;
65 bool operator!= (
const char* _str)
const
67 return !operator==(_str);
72 bool empty()
const {
return m_size == 0; }
80 void resize(
size_t new_size);
82 struct ORCUS_PSR_DLLPUBLIC
hash
84 size_t operator() (
const pstring& val)
const;
92inline ::std::ostream& operator<< (::std::ostream& os,
const pstring& str)
94 return os << str.str();
97ORCUS_PSR_DLLPUBLIC std::string operator+ (
const std::string& left,
const pstring& right);
98ORCUS_PSR_DLLPUBLIC std::string& operator+= (std::string& left,
const pstring& right);
Definition: pstring.hpp:28
Definition: pstring.hpp:83