Class file

Inheritance Relationships

Base Type

  • public std::list< datablock >

Class Documentation

class file : public std::list<datablock>

The class file is actually a list of datablock objects.

Public Functions

file() = default
inline explicit file(const std::filesystem::path &p)

Construct a new file object using the data in the file p as content.

Parameters

p – Path to a file containing the data to load

inline explicit file(std::istream &is)

Construct a new file object using the data in the std::istream is.

Parameters

is – The istream containing the data to load

inline explicit file(const char *data, std::size_t length)

Construct a new file object with data in the constant string defined by data and length.

Parameters
  • data – The pointer to the character string with data to load

  • length – The length of the data

bool is_valid() const

Validate the content and return true if everything was valid.

Will throw an exception if there is no validator defined.

If each category was valid, validate_links will also be called.

Returns

true If the content is valid

Returns

false If the content is not valid

bool is_valid()

Validate the content and return true if everything was valid.

Will attempt to load the referenced dictionary if none was specified.

If each category was valid, validate_links will also be called.

Returns

true If the content is valid

Returns

false If the content is not valid

bool validate_links() const

Validate the links for all datablocks contained.

Will throw an exception if no validator was specified.

Returns

true If all links were valid

Returns

false If all links were not valid

bool contains(std::string_view name) const

Return true if a datablock with the name name is part of this file.

inline datablock &front()

return a reference to the first datablock in the file

inline const datablock &front() const

return a const reference to the first datablock in the file

datablock &operator[](std::string_view name)

return a reference to the datablock named name

const datablock &operator[](std::string_view name) const

return a const reference to the datablock named name

std::tuple<iterator, bool> emplace(std::string_view name)

Tries to find a datablock with name name and will create a new one if it is not found. The result is a tuple of an iterator pointing to the datablock and a boolean indicating whether the datablock was created or not.

Parameters

name – The name for the datablock

Returns

std::tuple<iterator, bool> A tuple containing an iterator pointing at the datablock and a boolean indicating whether the datablock was newly created.

void load(const std::filesystem::path &p)

Load the data from the file specified by p

void load(std::istream &is)

Load the data from is

void load(const std::filesystem::path &p, const validator &v)

Load the data from the file specified by p using validator v

void load(std::istream &is, const validator &v)

Load the data from is using validator v

void save(const std::filesystem::path &p) const

Save the data to the file specified by p

void save(std::ostream &os) const

Save the data to is

Friends

inline friend std::ostream &operator<<(std::ostream &os, const file &f)

Friend operator<< to write file f to std::ostream os.