This source file includes following definitions.
- is_set
- unset
- get
- set
- StartRawUpdate
- EndRawUpdate
- StartRawUpdate
- EndRawUpdate
#include "ppapi/cpp/dev/string_wrapper_dev.h"
#include "ppapi/cpp/logging.h"
#include "ppapi/cpp/var.h"
namespace pp {
namespace internal {
OptionalStringWrapper::OptionalStringWrapper() {
}
OptionalStringWrapper::OptionalStringWrapper(const std::string& value) {
*storage_ = Var(value).Detach();
}
OptionalStringWrapper::OptionalStringWrapper(PP_Var* storage, NotOwned)
: storage_(storage, NOT_OWNED) {
PP_DCHECK(storage_->type == PP_VARTYPE_STRING ||
storage_->type == PP_VARTYPE_UNDEFINED);
}
OptionalStringWrapper::OptionalStringWrapper(
const OptionalStringWrapper& other) {
*storage_ = Var(*other.storage_).Detach();
}
OptionalStringWrapper::~OptionalStringWrapper() {
unset();
}
OptionalStringWrapper& OptionalStringWrapper::operator=(
const OptionalStringWrapper& other) {
return operator=(*other.storage_);
}
OptionalStringWrapper& OptionalStringWrapper::operator=(const PP_Var& other) {
if (storage_.get() == &other)
return *this;
Var auto_release(PASS_REF, *storage_);
*storage_ = Var(other).Detach();
return *this;
}
bool OptionalStringWrapper::is_set() const {
PP_DCHECK(storage_->type == PP_VARTYPE_STRING ||
storage_->type == PP_VARTYPE_UNDEFINED);
return storage_->type == PP_VARTYPE_STRING;
}
void OptionalStringWrapper::unset() {
Var auto_release(PASS_REF, *storage_);
*storage_ = PP_MakeUndefined();
}
std::string OptionalStringWrapper::get() const {
Var var(*storage_);
if (var.is_string()) {
return var.AsString();
} else {
PP_NOTREACHED();
return std::string();
}
}
void OptionalStringWrapper::set(const std::string& value) {
Var auto_release(PASS_REF, *storage_);
*storage_ = Var(value).Detach();
}
PP_Var* OptionalStringWrapper::StartRawUpdate() {
unset();
return storage_.get();
}
void OptionalStringWrapper::EndRawUpdate() {
PP_DCHECK(storage_->type == PP_VARTYPE_STRING ||
storage_->type == PP_VARTYPE_UNDEFINED);
}
StringWrapper::StringWrapper() : storage_(std::string()) {
}
StringWrapper::StringWrapper(const std::string& value) : storage_(value) {
}
StringWrapper::StringWrapper(PP_Var* storage, NotOwned)
: storage_(storage, NOT_OWNED) {
if (!storage_.is_set())
storage_.set(std::string());
}
StringWrapper::StringWrapper(const StringWrapper& other)
: storage_(other.storage_) {
}
StringWrapper::~StringWrapper() {
}
StringWrapper& StringWrapper::operator=(const StringWrapper& other) {
storage_ = other.storage_;
return *this;
}
StringWrapper& StringWrapper::operator=(const PP_Var& other) {
PP_DCHECK(other.type == PP_VARTYPE_STRING);
storage_ = other;
return *this;
}
PP_Var* StringWrapper::StartRawUpdate() {
return storage_.StartRawUpdate();
}
void StringWrapper::EndRawUpdate() {
storage_.EndRawUpdate();
if (!storage_.is_set())
storage_.set(std::string());
}
}
}