OpenStudioCore:utilities
 AllClasses Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages

#include "Attribute.hpp"

Public Types

typedef detail::Attribute_Impl ImplType

Public Member Functions

 Attribute (const std::string &name, bool value)
 Attribute (const std::string &name, bool value, const std::string &units)
 Attribute (const std::string &name, bool value, const boost::optional< std::string > &units)
 Attribute (const openstudio::UUID &uuid, const openstudio::UUID &versionUUID, const std::string &name, const boost::optional< std::string > &displayName, bool value, const boost::optional< std::string > &units, const std::string &source=std::string())
 Attribute (const std::string &name, double value)
 Attribute (const std::string &name, double value, const std::string &units)
 Attribute (const std::string &name, double value, const boost::optional< std::string > &units)
 Attribute (const openstudio::UUID &uuid, const openstudio::UUID &versionUUID, const std::string &name, const boost::optional< std::string > &displayName, double value, const boost::optional< std::string > &units, const std::string &source=std::string())
 Attribute (const std::string &name, const OSOptionalQuantity &value)
 Attribute (const std::string &name, const Quantity &value)
 Attribute (const openstudio::UUID &uuid, const openstudio::UUID &versionUUID, const std::string &name, const boost::optional< std::string > &displayName, const Quantity &value, const std::string &source=std::string())
 Attribute (const std::string &name, const Unit &value)
 Attribute (const openstudio::UUID &uuid, const openstudio::UUID &versionUUID, const std::string &name, const boost::optional< std::string > &displayName, const Unit &value, const std::string &source=std::string())
 Attribute (const std::string &name, int value)
 Attribute (const std::string &name, int value, const std::string &units)
 Attribute (const std::string &name, int value, const boost::optional< std::string > &units)
 Attribute (const openstudio::UUID &uuid, const openstudio::UUID &versionUUID, const std::string &name, const boost::optional< std::string > &displayName, int value, const boost::optional< std::string > &units, const std::string &source=std::string())
 Attribute (const std::string &name, unsigned value)
 Attribute (const std::string &name, unsigned value, const std::string &units)
 Attribute (const std::string &name, unsigned value, const boost::optional< std::string > &units)
 Attribute (const openstudio::UUID &uuid, const openstudio::UUID &versionUUID, const std::string &name, const boost::optional< std::string > &displayName, unsigned value, const boost::optional< std::string > &units, const std::string &source=std::string())
 Attribute (const std::string &name, const char *value)
 Attribute (const std::string &name, const char *value, const std::string &units)
 Attribute (const std::string &name, const char *value, const boost::optional< std::string > &units)
 Attribute (const openstudio::UUID &uuid, const openstudio::UUID &versionUUID, const std::string &name, const boost::optional< std::string > &displayName, const char *value, const boost::optional< std::string > &units, const std::string &source=std::string())
 Attribute (const std::string &name, const std::string &value)
 Attribute (const std::string &name, const std::string &value, const std::string &units)
 Attribute (const std::string &name, const std::string &value, const boost::optional< std::string > &units)
 Attribute (const openstudio::UUID &uuid, const openstudio::UUID &versionUUID, const std::string &name, const boost::optional< std::string > &displayName, const std::string &value, const boost::optional< std::string > &units, const std::string &source=std::string())
 Attribute (const std::string &name, const std::vector< openstudio::Attribute > &value)
 Attribute (const std::string &name, const std::vector< openstudio::Attribute > &value, const std::string &units)
 Attribute (const std::string &name, const std::vector< openstudio::Attribute > &value, const boost::optional< std::string > &units)
 Attribute (const openstudio::UUID &uuid, const openstudio::UUID &versionUUID, const std::string &name, const boost::optional< std::string > &displayName, const std::vector< openstudio::Attribute > &value, const boost::optional< std::string > &units, const std::string &source=std::string())
 Attribute (const QDomElement &element)
 Attribute (const Attribute &other)
template<typename T >
cast () const
void clearDisplayName ()
void clearSource ()
Attribute clone () const
boost::optional< std::string > displayName (bool returnName=false) const
boost::optional< AttributefindChildByName (const std::string &name) const
std::string name () const
bool operator== (const Attribute &other) const
template<typename T >
boost::optional< T > optionalCast () const
bool saveToXml (const openstudio::path &path) const
bool setDisplayName (const std::string &displayName)
void setSource (const std::string &source)
bool setUnits (const std::string &units)
void setValue (bool value)
void setValue (int value)
void setValue (unsigned value)
void setValue (double value)
void setValue (const Quantity &value)
void setValue (const Unit &value)
void setValue (const char *value)
void setValue (const std::string &value)
void setValue (const std::vector< Attribute > &value)
void setValue (const QVariant &value)
std::string source () const
std::string toString () const
QDomDocument toXml () const
boost::optional< std::string > units () const
openstudio::UUID uuid () const
std::vector< AttributevalueAsAttributeVector () const
bool valueAsBoolean () const
double valueAsDouble () const
int valueAsInteger () const
Quantity valueAsQuantity () const
QVariant valueAsQVariant () const
std::string valueAsString () const
Unit valueAsUnit () const
unsigned valueAsUnsigned () const
AttributeValueType valueType () const
openstudio::UUID versionUUID () const

Static Public Member Functions

static boost::optional< AttributefromQVariant (const std::string &name, const QVariant &value, const boost::optional< std::string > &units=boost::none)
static boost::optional< AttributeloadFromXml (const openstudio::path &path)
static boost::optional< AttributeloadFromXml (const QDomDocument &doc)

Protected Member Functions

 Attribute (const std::shared_ptr< detail::Attribute_Impl > &impl)

Related Functions

typedef std::vector< AttributeAttributeVector
Attribute createAttributeFromVector (const std::string &name, std::vector< int > value)
Attribute createAttributeFromVector (const std::string &name, std::vector< double > value)
std::vector< double > getDoubleVectorFromAttribute (const Attribute &attribute)
std::vector< intgetIntVectorFromAttribute (const Attribute &attribute)
bool isConsistent (const Attribute &candidate, const AttributeDescription &description)
std::ostream & operator<< (std::ostream &os, const Attribute &attribute)
typedef boost::optional
< Attribute
OptionalAttribute
bool prepareForDisplay (Attribute &attribute, const AttributeDescription &description)
bool saveJSON (const std::vector< Attribute > &attributes, const openstudio::path &p, bool overwrite=false)
std::ostream & toJSON (const std::vector< Attribute > &attributes, std::ostream &os)
std::string toJSON (const std::vector< Attribute > &attributes)
std::string toJSONWithoutMetadata (const std::vector< Attribute > &attributes)
std::vector< AttributetoVectorOfAttribute (const openstudio::path &pathToJson)
std::vector< AttributetoVectorOfAttribute (std::istream &json)
std::vector< AttributetoVectorOfAttribute (const std::string &json)

Detailed Description

An attribute is a name value pair where the value can be a bool, double, int, string, or vector of other attributes.

The ability for an attribute value to be a vector of other attributes allows for flexible, hierarchical structures. Our convention is that attributes which correspond to plain old data (int, string, etc) are named in lower camel case, this corresponds to a member or variable name. Attributes of vector type are named in upper camel case to correspond to a class or struct name.

Member Typedef Documentation

typedef detail::Attribute_Impl openstudio::Attribute::ImplType

Constructor & Destructor Documentation

openstudio::Attribute::Attribute ( const std::string &  name,
bool  value 
)

constructors

openstudio::Attribute::Attribute ( const std::string &  name,
bool  value,
const std::string &  units 
)
openstudio::Attribute::Attribute ( const std::string &  name,
bool  value,
const boost::optional< std::string > &  units 
)
openstudio::Attribute::Attribute ( const openstudio::UUID &  uuid,
const openstudio::UUID &  versionUUID,
const std::string &  name,
const boost::optional< std::string > &  displayName,
bool  value,
const boost::optional< std::string > &  units,
const std::string &  source = std::string() 
)
openstudio::Attribute::Attribute ( const std::string &  name,
double  value 
)
openstudio::Attribute::Attribute ( const std::string &  name,
double  value,
const std::string &  units 
)
openstudio::Attribute::Attribute ( const std::string &  name,
double  value,
const boost::optional< std::string > &  units 
)
openstudio::Attribute::Attribute ( const openstudio::UUID &  uuid,
const openstudio::UUID &  versionUUID,
const std::string &  name,
const boost::optional< std::string > &  displayName,
double  value,
const boost::optional< std::string > &  units,
const std::string &  source = std::string() 
)
openstudio::Attribute::Attribute ( const std::string &  name,
const OSOptionalQuantity value 
)

Upon construction, will be of type Quantity or Unit, as appropriate.

openstudio::Attribute::Attribute ( const std::string &  name,
const Quantity value 
)
openstudio::Attribute::Attribute ( const openstudio::UUID &  uuid,
const openstudio::UUID &  versionUUID,
const std::string &  name,
const boost::optional< std::string > &  displayName,
const Quantity value,
const std::string &  source = std::string() 
)
openstudio::Attribute::Attribute ( const std::string &  name,
const Unit value 
)
openstudio::Attribute::Attribute ( const openstudio::UUID &  uuid,
const openstudio::UUID &  versionUUID,
const std::string &  name,
const boost::optional< std::string > &  displayName,
const Unit value,
const std::string &  source = std::string() 
)
openstudio::Attribute::Attribute ( const std::string &  name,
int  value 
)
openstudio::Attribute::Attribute ( const std::string &  name,
int  value,
const std::string &  units 
)
openstudio::Attribute::Attribute ( const std::string &  name,
int  value,
const boost::optional< std::string > &  units 
)
openstudio::Attribute::Attribute ( const openstudio::UUID &  uuid,
const openstudio::UUID &  versionUUID,
const std::string &  name,
const boost::optional< std::string > &  displayName,
int  value,
const boost::optional< std::string > &  units,
const std::string &  source = std::string() 
)
openstudio::Attribute::Attribute ( const std::string &  name,
unsigned  value 
)
openstudio::Attribute::Attribute ( const std::string &  name,
unsigned  value,
const std::string &  units 
)
openstudio::Attribute::Attribute ( const std::string &  name,
unsigned  value,
const boost::optional< std::string > &  units 
)
openstudio::Attribute::Attribute ( const openstudio::UUID &  uuid,
const openstudio::UUID &  versionUUID,
const std::string &  name,
const boost::optional< std::string > &  displayName,
unsigned  value,
const boost::optional< std::string > &  units,
const std::string &  source = std::string() 
)
openstudio::Attribute::Attribute ( const std::string &  name,
const char *  value 
)
openstudio::Attribute::Attribute ( const std::string &  name,
const char *  value,
const std::string &  units 
)
openstudio::Attribute::Attribute ( const std::string &  name,
const char *  value,
const boost::optional< std::string > &  units 
)
openstudio::Attribute::Attribute ( const openstudio::UUID &  uuid,
const openstudio::UUID &  versionUUID,
const std::string &  name,
const boost::optional< std::string > &  displayName,
const char *  value,
const boost::optional< std::string > &  units,
const std::string &  source = std::string() 
)
openstudio::Attribute::Attribute ( const std::string &  name,
const std::string &  value 
)
openstudio::Attribute::Attribute ( const std::string &  name,
const std::string &  value,
const std::string &  units 
)
openstudio::Attribute::Attribute ( const std::string &  name,
const std::string &  value,
const boost::optional< std::string > &  units 
)
openstudio::Attribute::Attribute ( const openstudio::UUID &  uuid,
const openstudio::UUID &  versionUUID,
const std::string &  name,
const boost::optional< std::string > &  displayName,
const std::string &  value,
const boost::optional< std::string > &  units,
const std::string &  source = std::string() 
)
openstudio::Attribute::Attribute ( const std::string &  name,
const std::vector< openstudio::Attribute > &  value 
)
openstudio::Attribute::Attribute ( const std::string &  name,
const std::vector< openstudio::Attribute > &  value,
const std::string &  units 
)
openstudio::Attribute::Attribute ( const std::string &  name,
const std::vector< openstudio::Attribute > &  value,
const boost::optional< std::string > &  units 
)
openstudio::Attribute::Attribute ( const openstudio::UUID &  uuid,
const openstudio::UUID &  versionUUID,
const std::string &  name,
const boost::optional< std::string > &  displayName,
const std::vector< openstudio::Attribute > &  value,
const boost::optional< std::string > &  units,
const std::string &  source = std::string() 
)
openstudio::Attribute::Attribute ( const QDomElement &  element)
explicit
openstudio::Attribute::Attribute ( const Attribute other)
openstudio::Attribute::Attribute ( const std::shared_ptr< detail::Attribute_Impl > &  impl)
protected

Member Function Documentation

template<typename T >
T openstudio::Attribute::cast ( ) const
inline

cast to type T, can throw std::bad_cast

void openstudio::Attribute::clearDisplayName ( )

clear the display name

void openstudio::Attribute::clearSource ( )

clear the data source

Attribute openstudio::Attribute::clone ( ) const
boost::optional<std::string> openstudio::Attribute::displayName ( bool  returnName = false) const

get the display name.

if returnName and the display name is empty, will return name() instead.

boost::optional<Attribute> openstudio::Attribute::findChildByName ( const std::string &  name) const

find child attribute by name

static boost::optional<Attribute> openstudio::Attribute::fromQVariant ( const std::string &  name,
const QVariant &  value,
const boost::optional< std::string > &  units = boost::none 
)
static

static constructor from QVariant

static boost::optional<Attribute> openstudio::Attribute::loadFromXml ( const openstudio::path &  path)
static

static constructor from xml

static boost::optional<Attribute> openstudio::Attribute::loadFromXml ( const QDomDocument &  doc)
static

static constructor from loaded xml

std::string openstudio::Attribute::name ( ) const

get the name

bool openstudio::Attribute::operator== ( const Attribute other) const

comparison

template<typename T >
boost::optional<T> openstudio::Attribute::optionalCast ( ) const
inline

cast to optional of type T

bool openstudio::Attribute::saveToXml ( const openstudio::path &  path) const

write object and all children out as xml to path.

bool openstudio::Attribute::setDisplayName ( const std::string &  displayName)

set the display name

void openstudio::Attribute::setSource ( const std::string &  source)

set the data source

bool openstudio::Attribute::setUnits ( const std::string &  units)

set the units

void openstudio::Attribute::setValue ( bool  value)

set value. throws if wrong type.

void openstudio::Attribute::setValue ( int  value)

set value. throws if wrong type.

void openstudio::Attribute::setValue ( unsigned  value)

set value. throws if wrong type.

void openstudio::Attribute::setValue ( double  value)

set value. throws if wrong type.

void openstudio::Attribute::setValue ( const Quantity value)

set value. throws if wrong type.

void openstudio::Attribute::setValue ( const Unit value)

set value. throws if wrong type.

void openstudio::Attribute::setValue ( const char *  value)

set value. throws if wrong type.

void openstudio::Attribute::setValue ( const std::string &  value)

set value. throws if wrong type.

void openstudio::Attribute::setValue ( const std::vector< Attribute > &  value)

set value. throws if wrong type.

void openstudio::Attribute::setValue ( const QVariant &  value)
std::string openstudio::Attribute::source ( ) const

get the (optional) data source

std::string openstudio::Attribute::toString ( ) const

If attribute is a simple type (non-vector), prints attribute's value to std::string as simply as possible.

Numeric types print in high precision. Attribute vectors are printed as XML.

QDomDocument openstudio::Attribute::toXml ( ) const

write object and all children to xml

boost::optional<std::string> openstudio::Attribute::units ( ) const

get the units

openstudio::UUID openstudio::Attribute::uuid ( ) const
std::vector<Attribute> openstudio::Attribute::valueAsAttributeVector ( ) const

get value as attribute vector

bool openstudio::Attribute::valueAsBoolean ( ) const

get value as a bool

double openstudio::Attribute::valueAsDouble ( ) const

get value as double

int openstudio::Attribute::valueAsInteger ( ) const

get value as int

Quantity openstudio::Attribute::valueAsQuantity ( ) const

get value as Quantity

QVariant openstudio::Attribute::valueAsQVariant ( ) const

get value as qvariant

std::string openstudio::Attribute::valueAsString ( ) const

get value as string

Unit openstudio::Attribute::valueAsUnit ( ) const

get value as Unit

unsigned openstudio::Attribute::valueAsUnsigned ( ) const

get value as unsigned

AttributeValueType openstudio::Attribute::valueType ( ) const

get the attribute value type

openstudio::UUID openstudio::Attribute::versionUUID ( ) const

Friends And Related Function Documentation

typedef std::vector<Attribute> AttributeVector
related
Attribute createAttributeFromVector ( const std::string &  name,
std::vector< int value 
)
related
Attribute createAttributeFromVector ( const std::string &  name,
std::vector< double >  value 
)
related
std::vector< double > getDoubleVectorFromAttribute ( const Attribute attribute)
related
std::vector< int > getIntVectorFromAttribute ( const Attribute attribute)
related
bool isConsistent ( const Attribute candidate,
const AttributeDescription description 
)
related

Returns true if candidate and description have matching names and types.

std::ostream & operator<< ( std::ostream &  os,
const Attribute attribute 
)
related

Prints Attribute XML to os.

typedef boost::optional<Attribute> OptionalAttribute
related
bool prepareForDisplay ( Attribute attribute,
const AttributeDescription description 
)
related

Copies description's display name over to attribute.

Will return false if !isConsistent(attribute,description).

bool saveJSON ( const std::vector< Attribute > &  attributes,
const openstudio::path &  p,
bool  overwrite = false 
)
related

Saves attributes in a flat json file.

Discards uuid and version_uuid information. Recasts Unsigned attributes as Integer attributes, Quantity attributes as Double attributes with units, Unit attributes as String attributes.

std::ostream & toJSON ( const std::vector< Attribute > &  attributes,
std::ostream &  os 
)
related

Puts attributes out to os in a flat json format.

Discards uuid and version_uuid information. Recasts Unsigned attributes as Integer attributes, Quantity attributes as Double attributes with units, Unit attributes as String attributes.

std::string toJSON ( const std::vector< Attribute > &  attributes)
related

Returns attributes as a string in a flat json format.

Discards uuid and version_uuid information. Recasts Unsigned attributes as Integer attributes, Quantity attributes as Double attributes with units, Unit attributes as String attributes.

std::string toJSONWithoutMetadata ( const std::vector< Attribute > &  attributes)
related

Returns attributes as a string in a flat json format.

Discards uuid and version_uuid information. Recasts Unsigned attributes as Integer attributes, Quantity attributes as Double attributes with units, Unit attributes as String attributes. Does not print metadata.

std::vector< Attribute > toVectorOfAttribute ( const openstudio::path &  pathToJson)
related

Deserializes the flat attribute json format.

std::vector< Attribute > toVectorOfAttribute ( std::istream &  json)
related

Deserializes the flat attribute json format.

std::vector< Attribute > toVectorOfAttribute ( const std::string &  json)
related

Deserializes the flat attribute json format.