#include "python.h"
namespace python {
int String::capacity() const {
return max_size();
}
String::String (PyObject *pyob, bool owned): SeqBase<Char>(pyob, owned) {
validate();
}
String::String (const Object& ob): SeqBase<Char>(ob) {
validate();
}
String::String()
: SeqBase<Char>( PyString_FromStringAndSize( "", 0 ), true )
{
validate();
}
String::String (const std::string& v )
: SeqBase<Char>( PyString_FromStringAndSize( const_cast<char*>(v.data()), v.length() ), true )
{
validate();
}
String::String (const std::string& v, std::string::size_type vsize)
:SeqBase<Char>(PyString_FromStringAndSize( const_cast<char*>(v.data()), vsize), true)
{
validate();
}
String::String (const char *v, int vsize)
:SeqBase<Char>(PyString_FromStringAndSize (const_cast<char*>(v), vsize), true)
{
validate();
}
String::String (const char* v)
:SeqBase<Char>(PyString_FromString (v), true)
{
validate();
}
// Assignment acquires new ownership of pointer
String& String::operator= (const Object& rhs) {
return (*this = *rhs);
}
String& String::operator= (PyObject* rhsp) {
if(ptr() == rhsp) return *this;
set (rhsp);
return *this;
}
// Membership
bool String::accepts (PyObject *pyob) const {
return pyob && PyString_Check (pyob);
}
// Assignment from C string
String& String::operator= (const std::string& v) {
set(PyString_FromStringAndSize (const_cast<char*>(v.data()), v.length() ), true);
return *this;
}
//
// Queries
int String::size () const {
return PyString_Size (ptr());
}
String::operator std::string () const {
return std::string( PyString_AsString( ptr() ), PyString_Size( ptr() ) );
}
std::string String::as_std_string() const {
return std::string( PyString_AsString( ptr() ), PyString_Size( ptr() ) );
}
}
syntax highlighted by Code2HTML, v. 0.9.1