PropertyConverter Module

Module Contents

class PropertyConverter

PropertyConverter - PropertyValueT to/from string

We need to be able to convert strings to PropertyValueT instances and the reverse while using custom settings for decimal precision and time format. There are enough differences in the way locales are implemented across platforms that I insist on encapsulating it in this class. We will use this in readers and writers.

Public Functions

PropertyConverter()

Instantiate an default PropertyConverter.

PropertyConverter(PropertyConverter const &other)

Copy contructor, create a PropertyConverter with a copy of another

Parameters:

other[in] PropertyConverter to copy from

virtual ~PropertyConverter()

Destructor.

PropertyConverter &operator=(PropertyConverter const &other)

Assign a PropertyConverter to the value of another.

Parameters:

other[in] PropertyConverter to assign value of

Returns:

PropertyConverter with the new assigned value

bool operator==(PropertyConverter const &other) const

Check whether one PropertyConverter is equal to another by comparing the properties.

Two items are equal if all of their properties are equal.

Parameters:

other[in] PropertyConverter for comparison

Returns:

Boolean indicating equivalency

bool operator!=(PropertyConverter const &other) const

Check whether two PropertyConverter are unequal.

Parameters:

other[in] PropertyConverter for comparison

Returns:

Boolean indicating equivalency

void set_timestamp_input_format(string_type const &format)

Set format string for parsing timestamps

This format string must adhere to the guidelines in the documentation for Boost’s date/time input format. See the following page:

http://www.boost.org/doc/libs/master/doc/html/date_time/date_time_io.html

Parameters:

format[in] Format string for timestamp parsing

string_type timestamp_input_format() const

Return the current input format

Returns:

Format string for timestamp parsing

void set_timestamp_output_format(string_type const &format)

Set format string for writing timestamps to strings

This format string must adhere to the guidelines in the documentation for Boost’s date/time input format. See the following page:

http://www.boost.org/doc/libs/master/doc/html/date_time/date_time_io.html

Parameters:

format[in] Format string for timestamp output

string_type timestamp_output_format() const

Return the current output format

Returns:

Format string for timestamp output

void set_null_value(string_type const &null_value)

Set string that represents null values

Parameters:

null_value[in] String to stand in for nulls

string_type null_value() const

Get string that represents null values

Returns:

String representing null

void set_decimal_precision(std::size_t digits)

Set number of digits of precision for writing real numbers

Parameters:

digits[in] Number of digits to use

std::size_t decimal_precision() const

Get number of digits of precision for writing real numbers

Returns:

Number of digits in use

string_type property_to_string(PropertyValueT const &property)

Convert a property to a string

Convert a property to a string according to the current output format.

Parameters:

property[in] Value to write

Returns:

String representation of timestamp

PropertyValueT property_from_string(string_type const &prop_string, PropertyUnderlyingType prop_type)

Convert a string and type ID to a property

Parse a string to create a property value according to the current input formats and the requested output type.

Parameters:
  • prop_string[in] Property represented as string

  • prop_type[in] Property type (see tracktable::PropertyUnderlyingType)

Returns:

Property parsed from string

TimestampConverter *timestamp_converter()

Convert a timestamp to read/write

Private Members

std::size_t DecimalPrecision
std::string NullValue
TimestampConverter TimestampReadWrite
std::ostringstream OutputBuf
std::istringstream InputBuf