The Battle for Wesnoth  1.17.0-dev
Classes | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
schema_validation::schema_validator Class Reference

Realization of serialization/validator.hpp abstract validator. More...

#include <schema_validator.hpp>

Inheritance diagram for schema_validation::schema_validator:

Classes

struct  counter
 
struct  message_info
 Messages are cached. More...
 

Public Member Functions

virtual ~schema_validator ()
 
 schema_validator (const std::string &filename, bool validate_schema=false)
 Initializes validator from file. More...
 
void set_create_exceptions (bool value)
 
virtual void open_tag (const std::string &name, const config &parent, int start_line=0, const std::string &file="", bool addition=false) override
 Is called when parser opens tag. More...
 
virtual void close_tag () override
 As far as parser is built on stack, some realizations can store stack too. More...
 
virtual void validate (const config &cfg, const std::string &name, int start_line, const std::string &file) override
 Validates config. More...
 
virtual void validate_key (const config &cfg, const std::string &name, const config_attribute_value &value, int start_line, const std::string &file) override
 Checks if key is allowed and if its value is valid What exactly is validated depends on validator realization. More...
 
- Public Member Functions inherited from abstract_validator
 abstract_validator (const std::string &name)
 Constructor of validator can throw validator::error. More...
 
virtual ~abstract_validator ()
 

Protected Types

enum  {
  WRONG_TAG, EXTRA_TAG, MISSING_TAG, EXTRA_KEY,
  MISSING_KEY, WRONG_VALUE, NEXT_ERROR
}
 
using message_type = int
 

Protected Member Functions

virtual void print (message_info &)
 
template<typename... T>
void queue_message (const config &cfg, T &&... args)
 
const wml_tagactive_tag () const
 
std::string active_tag_path () const
 
bool have_active_tag () const
 
bool is_valid () const
 
wml_type::ptr find_type (const std::string &type) const
 

Protected Attributes

bool create_exceptions_
 Controls the way to print errors. More...
 

Private Types

typedef std::map< std::string, countercnt_map
 Counters are mapped by tag name. More...
 
typedef std::stack< cnt_mapcnt_stack
 And counter maps are organize in stack. More...
 
typedef std::deque< message_infomessage_list
 
typedef std::map< const config *, message_listmessage_map
 

Private Member Functions

bool read_config_file (const std::string &filename)
 Reads config from input. More...
 

Private Attributes

bool config_read_
 Shows, if validator is initialized with schema file. More...
 
wml_tag root_
 Root of schema information. More...
 
std::stack< const wml_tag * > stack_
 
cnt_stack counter_
 Contains number of children. More...
 
std::stack< message_mapcache_
 Caches error messages. More...
 
wml_type::map types_
 Type validators. More...
 
bool validate_schema_
 

Additional Inherited Members

- Public Attributes inherited from abstract_validator
const std::string name_
 

Detailed Description

Realization of serialization/validator.hpp abstract validator.

Based on stack. Uses some stacks to store different info.

Definition at line 40 of file schema_validator.hpp.

Member Typedef Documentation

◆ cnt_map

typedef std::map<std::string, counter> schema_validation::schema_validator::cnt_map
private

Counters are mapped by tag name.

Definition at line 74 of file schema_validator.hpp.

◆ cnt_stack

And counter maps are organize in stack.

Definition at line 77 of file schema_validator.hpp.

◆ message_list

Definition at line 122 of file schema_validator.hpp.

◆ message_map

Definition at line 123 of file schema_validator.hpp.

◆ message_type

Definition at line 80 of file schema_validator.hpp.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
protected
Enumerator
WRONG_TAG 
EXTRA_TAG 
MISSING_TAG 
EXTRA_KEY 
MISSING_KEY 
WRONG_VALUE 
NEXT_ERROR 

Definition at line 81 of file schema_validator.hpp.

Constructor & Destructor Documentation

◆ ~schema_validator()

schema_validation::schema_validator::~schema_validator ( )
virtual

Definition at line 171 of file schema_validator.cpp.

◆ schema_validator()

schema_validation::schema_validator::schema_validator ( const std::string &  filename,
bool  validate_schema = false 
)

Initializes validator from file.

Throws abstract_validator::error if any error.

Definition at line 175 of file schema_validator.cpp.

References cache_, counter_, ERR_VL, error(), schema_validation::wml_tag::expand_all(), LOG_VL, read_config_file(), root_, and stack_.

Member Function Documentation

◆ active_tag()

const wml_tag & schema_validation::schema_validator::active_tag ( ) const
protected

◆ active_tag_path()

std::string schema_validation::schema_validator::active_tag_path ( ) const
protected

Definition at line 371 of file schema_validator.cpp.

References utils::join(), game_config::path, and stack_.

Referenced by queue_message().

◆ close_tag()

void schema_validation::schema_validator::close_tag ( )
overridevirtual

As far as parser is built on stack, some realizations can store stack too.

So they need to know if tag was closed.

Implements abstract_validator.

Reimplemented in schema_validation::schema_self_validator.

Definition at line 267 of file schema_validator.cpp.

References counter_, and stack_.

Referenced by schema_validation::schema_self_validator::close_tag(), and set_create_exceptions().

◆ find_type()

wml_type::ptr schema_validation::schema_validator::find_type ( const std::string &  type) const
protected

Definition at line 357 of file schema_validator.cpp.

References types_.

Referenced by is_valid(), and validate_key().

◆ have_active_tag()

bool schema_validation::schema_validator::have_active_tag ( ) const
protected

◆ is_valid()

bool schema_validation::schema_validator::is_valid ( ) const
inlineprotected

◆ open_tag()

void schema_validation::schema_validator::open_tag ( const std::string &  name,
const config parent,
int  start_line = 0,
const std::string &  file = "",
bool  addition = false 
)
overridevirtual

Is called when parser opens tag.

Parameters
nameName of tag
parentThe parent config
start_lineLine in file
fileName of file
addition

Implements abstract_validator.

Reimplemented in schema_validation::schema_self_validator.

Definition at line 236 of file schema_validator.cpp.

References active_tag(), cache_, schema_validation::schema_validator::counter::cnt, counter_, create_exceptions_, schema_validation::wml_tag::find_tag(), root_, stack_, and schema_validation::wrong_tag_error().

Referenced by schema_validation::schema_self_validator::open_tag(), and set_create_exceptions().

◆ print()

void schema_validation::schema_validator::print ( message_info el)
protectedvirtual

◆ queue_message()

template<typename... T>
void schema_validation::schema_validator::queue_message ( const config cfg,
T &&...  args 
)
inlineprotected

◆ read_config_file()

bool schema_validation::schema_validator::read_config_file ( const std::string &  filename)
private

◆ set_create_exceptions()

void schema_validation::schema_validator::set_create_exceptions ( bool  value)
inline

◆ validate()

void schema_validation::schema_validator::validate ( const config cfg,
const std::string &  name,
int  start_line,
const std::string &  file 
)
overridevirtual

Validates config.

Checks if all mandatory elements are present. What exactly is validated depends on validator realization

Parameters
cfgConfig to be validated.
nameName of tag
start_lineLine in file
fileName of file

Implements abstract_validator.

Reimplemented in schema_validation::schema_self_validator.

Definition at line 274 of file schema_validator.cpp.

References active_tag(), cache_, counter_, EXTRA_TAG, config::get(), schema_validation::wml_tag::get_max_children(), schema_validation::wml_tag::get_min_children(), schema_validation::wml_tag::get_name(), have_active_tag(), is_valid(), schema_validation::wml_tag::keys(), MISSING_KEY, MISSING_TAG, print(), queue_message(), and schema_validation::wml_tag::tags().

Referenced by set_create_exceptions(), and schema_validation::schema_self_validator::validate().

◆ validate_key()

void schema_validation::schema_validator::validate_key ( const config cfg,
const std::string &  name,
const config_attribute_value value,
int  start_line,
const std::string &  file 
)
overridevirtual

Checks if key is allowed and if its value is valid What exactly is validated depends on validator realization.

Parameters
cfgConfig to be validated.
nameName of tag
valueThe key's value
start_lineLine in file
fileName of file

Implements abstract_validator.

Reimplemented in schema_validation::schema_self_validator.

Definition at line 326 of file schema_validator.cpp.

References active_tag(), EXTRA_KEY, schema_validation::wml_tag::find_key(), find_type(), schema_validation::wml_key::get_type(), have_active_tag(), is_valid(), queue_message(), utils::split(), types_, and WRONG_VALUE.

Referenced by set_create_exceptions(), and schema_validation::schema_self_validator::validate_key().

Member Data Documentation

◆ cache_

std::stack<message_map> schema_validation::schema_validator::cache_
private

Caches error messages.

Definition at line 140 of file schema_validator.hpp.

Referenced by open_tag(), schema_validator(), and validate().

◆ config_read_

bool schema_validation::schema_validator::config_read_
private

Shows, if validator is initialized with schema file.

Definition at line 129 of file schema_validator.hpp.

Referenced by is_valid(), and read_config_file().

◆ counter_

cnt_stack schema_validation::schema_validator::counter_
private

Contains number of children.

Definition at line 137 of file schema_validator.hpp.

Referenced by close_tag(), open_tag(), schema_validator(), and validate().

◆ create_exceptions_

bool schema_validation::schema_validator::create_exceptions_
protected

Controls the way to print errors.

Definition at line 117 of file schema_validator.hpp.

Referenced by open_tag(), print(), schema_validation::schema_self_validator::print(), and set_create_exceptions().

◆ root_

wml_tag schema_validation::schema_validator::root_
private

Root of schema information.

Definition at line 132 of file schema_validator.hpp.

Referenced by open_tag(), read_config_file(), and schema_validator().

◆ stack_

std::stack<const wml_tag*> schema_validation::schema_validator::stack_
private

◆ types_

wml_type::map schema_validation::schema_validator::types_
private

Type validators.

Definition at line 143 of file schema_validator.hpp.

Referenced by find_type(), read_config_file(), and validate_key().

◆ validate_schema_

bool schema_validation::schema_validator::validate_schema_
private

Definition at line 145 of file schema_validator.hpp.

Referenced by read_config_file().


The documentation for this class was generated from the following files: