libtld 2.0.14
A library to determine the Top-Level Domain name of any Internet URI.
Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
tld_compiler Class Reference
Collaboration diagram for tld_compiler:
Collaboration graph
[legend]

Classes

class  token
 

Public Member Functions

bool compile ()
 
std::string const & get_c_file () const
 
std::string const & get_errmsg () const
 
int get_errno () const
 
std::string const & get_filename () const
 
std::string const & get_input_folder () const
 
int get_line () const
 
std::string const & get_output () const
 
tld_string_managerget_string_manager ()
 
void output_to_json (std::ostream &out, bool verbose) const
 
void set_c_file (std::string const &filename)
 
void set_input_folder (std::string const &path)
 
void set_output (std::string const &filename)
 

Private Types

typedef std::vector< std::uint8_t > data_t
 
typedef std::vector< std::string > paths_t
 
enum  token_t {
  TOKEN_EOF , TOKEN_STRING , TOKEN_IDENTIFIER , TOKEN_WORD ,
  TOKEN_NUMBER , TOKEN_EQUAL , TOKEN_DOT , TOKEN_WILD_CARD ,
  TOKEN_EXCEPTION , TOKEN_OPEN_SQUARE_BRACKET , TOKEN_CLOSE_SQUARE_BRACKET
}
 
typedef std::map< std::string, std::string > values_t
 

Private Member Functions

bool append_wc (std::string &value, char32_t wc)
 
void compress_tags ()
 
void define_default_category ()
 
uint16_t find_definition (std::string name) const
 
void find_files (std::string const &path)
 
void find_max_level ()
 Determine the longest TLD in terms of levels.
 
bool get_backslash (char32_t &c)
 
char32_t getc ()
 
bool is_space (char32_t wc) const
 
void output_header (std::ostream &out)
 
void output_tlds (std::ostream &out)
 
void parse_line ()
 
void parse_tld ()
 
void parse_variable ()
 
void print_tokens ()
 
void process_file (std::string const &filename)
 
void process_input_files ()
 
void read_line ()
 
void save_to_c_file (std::string const &buffer)
 
void save_to_file (std::string const &buffer)
 
void ungetc (char32_t c)
 

Private Attributes

std::string f_c_file = std::string()
 
time_t f_created_on = time(nullptr)
 
std::string f_current_tld = std::string()
 
data_t f_data = data_t()
 
tld_definition::map_t f_definitions = tld_definition::map_t()
 
std::string f_errmsg = std::string()
 
int f_errno = 0
 
std::string f_filename = std::string()
 
values_t f_global_tags = values_t()
 
values_t f_global_variables = values_t()
 
paths_t f_input_files = paths_t()
 
std::string f_input_folder = "/usr/share/libtld/tlds"
 
int f_line = 1
 
std::string f_output = "/var/lib/libtld/tlds.tld"
 
std::string::size_type f_pos = 0
 
tld_string_manager f_strings = tld_string_manager()
 
string_id_t f_strings_count = 0
 
tld_tag_manager f_tags = tld_tag_manager()
 
uint16_t f_tld_end_offset = USHRT_MAX
 
uint8_t f_tld_max_level = 0
 
uint16_t f_tld_start_offset = USHRT_MAX
 
token::vector_t f_tokens = token::vector_t()
 
char32_t f_ungetc [1] = {}
 
std::string::size_type f_ungetc_pos = 0
 

Static Private Attributes

static constexpr char32_t const CHAR_EOF = static_cast<char32_t>(-1)
 
static constexpr char32_t const CHAR_ERR = static_cast<char32_t>(-2)
 

Detailed Description

Definition at line 212 of file tld_compiler.h.

Member Typedef Documentation

◆ data_t

typedef std::vector<std::uint8_t> tld_compiler::data_t
private

Definition at line 231 of file tld_compiler.h.

◆ paths_t

typedef std::vector<std::string> tld_compiler::paths_t
private

Definition at line 230 of file tld_compiler.h.

◆ values_t

typedef std::map<std::string, std::string> tld_compiler::values_t
private

Definition at line 232 of file tld_compiler.h.

Member Enumeration Documentation

◆ token_t

enum tld_compiler::token_t
private

Definition at line 237 of file tld_compiler.h.

Member Function Documentation

◆ append_wc()

bool tld_compiler::append_wc ( std::string &  value,
char32_t  wc 
)
private

Definition at line 2041 of file tld_compiler.cpp.

◆ compile()

bool tld_compiler::compile ( )

Definition at line 1297 of file tld_compiler.cpp.

◆ compress_tags()

void tld_compiler::compress_tags ( )
private

Definition at line 2464 of file tld_compiler.cpp.

◆ define_default_category()

void tld_compiler::define_default_category ( )
private

Definition at line 2429 of file tld_compiler.cpp.

◆ find_definition()

uint16_t tld_compiler::find_definition ( std::string  name) const
private

Definition at line 2475 of file tld_compiler.cpp.

◆ find_files()

void tld_compiler::find_files ( std::string const &  path)
private

Definition at line 1376 of file tld_compiler.cpp.

◆ find_max_level()

void tld_compiler::find_max_level ( )
private

This function searches all the definitions checking for the longest number of segments (which is the number of periods in the TLD including the starting period, so in ".com", we have a level of 1).

Definition at line 2502 of file tld_compiler.cpp.

◆ get_backslash()

bool tld_compiler::get_backslash ( char32_t &  c)
private

Definition at line 1502 of file tld_compiler.cpp.

◆ get_c_file()

std::string const & tld_compiler::get_c_file ( ) const

Definition at line 1291 of file tld_compiler.cpp.

◆ get_errmsg()

std::string const & tld_compiler::get_errmsg ( ) const

Definition at line 1358 of file tld_compiler.cpp.

◆ get_errno()

int tld_compiler::get_errno ( ) const

Definition at line 1352 of file tld_compiler.cpp.

◆ get_filename()

std::string const & tld_compiler::get_filename ( ) const

Definition at line 1370 of file tld_compiler.cpp.

◆ get_input_folder()

std::string const & tld_compiler::get_input_folder ( ) const

Definition at line 1267 of file tld_compiler.cpp.

◆ get_line()

int tld_compiler::get_line ( ) const

Definition at line 1364 of file tld_compiler.cpp.

◆ get_output()

std::string const & tld_compiler::get_output ( ) const

Definition at line 1279 of file tld_compiler.cpp.

◆ get_string_manager()

tld_string_manager & tld_compiler::get_string_manager ( )

Definition at line 1229 of file tld_compiler.cpp.

◆ getc()

char32_t tld_compiler::getc ( )
private

Definition at line 1957 of file tld_compiler.cpp.

◆ is_space()

bool tld_compiler::is_space ( char32_t  wc) const
private

Definition at line 1945 of file tld_compiler.cpp.

◆ output_header()

void tld_compiler::output_header ( std::ostream &  out)
private

Definition at line 2741 of file tld_compiler.cpp.

◆ output_tlds()

void tld_compiler::output_tlds ( std::ostream &  out)
private

Definition at line 2525 of file tld_compiler.cpp.

◆ output_to_json()

void tld_compiler::output_to_json ( std::ostream &  out,
bool  verbose 
) const

Definition at line 2869 of file tld_compiler.cpp.

◆ parse_line()

void tld_compiler::parse_line ( )
private

Definition at line 2093 of file tld_compiler.cpp.

◆ parse_tld()

void tld_compiler::parse_tld ( )
private

Definition at line 2233 of file tld_compiler.cpp.

◆ parse_variable()

void tld_compiler::parse_variable ( )
private

Definition at line 2117 of file tld_compiler.cpp.

◆ print_tokens()

void tld_compiler::print_tokens ( )
private

Definition at line 2412 of file tld_compiler.cpp.

◆ process_file()

void tld_compiler::process_file ( std::string const &  filename)
private

Definition at line 1451 of file tld_compiler.cpp.

◆ process_input_files()

void tld_compiler::process_input_files ( )
private

Definition at line 1432 of file tld_compiler.cpp.

◆ read_line()

void tld_compiler::read_line ( )
private

Definition at line 1619 of file tld_compiler.cpp.

◆ save_to_c_file()

void tld_compiler::save_to_c_file ( std::string const &  buffer)
private

Definition at line 2809 of file tld_compiler.cpp.

◆ save_to_file()

void tld_compiler::save_to_file ( std::string const &  buffer)
private

Definition at line 2720 of file tld_compiler.cpp.

◆ set_c_file()

void tld_compiler::set_c_file ( std::string const &  filename)

Definition at line 1285 of file tld_compiler.cpp.

◆ set_input_folder()

void tld_compiler::set_input_folder ( std::string const &  path)

Definition at line 1261 of file tld_compiler.cpp.

◆ set_output()

void tld_compiler::set_output ( std::string const &  filename)

Definition at line 1273 of file tld_compiler.cpp.

◆ ungetc()

void tld_compiler::ungetc ( char32_t  c)
private

Definition at line 2023 of file tld_compiler.cpp.

Member Data Documentation

◆ CHAR_EOF

constexpr char32_t const tld_compiler::CHAR_EOF = static_cast<char32_t>(-1)
staticconstexprprivate

Definition at line 235 of file tld_compiler.h.

◆ CHAR_ERR

constexpr char32_t const tld_compiler::CHAR_ERR = static_cast<char32_t>(-2)
staticconstexprprivate

Definition at line 234 of file tld_compiler.h.

◆ f_c_file

std::string tld_compiler::f_c_file = std::string()
private

Definition at line 297 of file tld_compiler.h.

◆ f_created_on

time_t tld_compiler::f_created_on = time(nullptr)
private

Definition at line 315 of file tld_compiler.h.

◆ f_current_tld

std::string tld_compiler::f_current_tld = std::string()
private

Definition at line 303 of file tld_compiler.h.

◆ f_data

data_t tld_compiler::f_data = data_t()
private

Definition at line 306 of file tld_compiler.h.

◆ f_definitions

tld_definition::map_t tld_compiler::f_definitions = tld_definition::map_t()
private

Definition at line 304 of file tld_compiler.h.

◆ f_errmsg

std::string tld_compiler::f_errmsg = std::string()
private

Definition at line 299 of file tld_compiler.h.

◆ f_errno

int tld_compiler::f_errno = 0
private

Definition at line 298 of file tld_compiler.h.

◆ f_filename

std::string tld_compiler::f_filename = std::string()
private

Definition at line 309 of file tld_compiler.h.

◆ f_global_tags

values_t tld_compiler::f_global_tags = values_t()
private

Definition at line 302 of file tld_compiler.h.

◆ f_global_variables

values_t tld_compiler::f_global_variables = values_t()
private

Definition at line 301 of file tld_compiler.h.

◆ f_input_files

paths_t tld_compiler::f_input_files = paths_t()
private

Definition at line 300 of file tld_compiler.h.

◆ f_input_folder

std::string tld_compiler::f_input_folder = "/usr/share/libtld/tlds"
private

Definition at line 295 of file tld_compiler.h.

◆ f_line

int tld_compiler::f_line = 1
private

Definition at line 308 of file tld_compiler.h.

◆ f_output

std::string tld_compiler::f_output = "/var/lib/libtld/tlds.tld"
private

Definition at line 296 of file tld_compiler.h.

◆ f_pos

std::string::size_type tld_compiler::f_pos = 0
private

Definition at line 307 of file tld_compiler.h.

◆ f_strings

tld_string_manager tld_compiler::f_strings = tld_string_manager()
private

Definition at line 312 of file tld_compiler.h.

◆ f_strings_count

string_id_t tld_compiler::f_strings_count = 0
private

Definition at line 313 of file tld_compiler.h.

◆ f_tags

tld_tag_manager tld_compiler::f_tags = tld_tag_manager()
private

Definition at line 314 of file tld_compiler.h.

◆ f_tld_end_offset

uint16_t tld_compiler::f_tld_end_offset = USHRT_MAX
private

Definition at line 318 of file tld_compiler.h.

◆ f_tld_max_level

uint8_t tld_compiler::f_tld_max_level = 0
private

Definition at line 316 of file tld_compiler.h.

◆ f_tld_start_offset

uint16_t tld_compiler::f_tld_start_offset = USHRT_MAX
private

Definition at line 317 of file tld_compiler.h.

◆ f_tokens

token::vector_t tld_compiler::f_tokens = token::vector_t()
private

Definition at line 305 of file tld_compiler.h.

◆ f_ungetc

char32_t tld_compiler::f_ungetc[1] = {}
private

Definition at line 310 of file tld_compiler.h.

◆ f_ungetc_pos

std::string::size_type tld_compiler::f_ungetc_pos = 0
private

Definition at line 311 of file tld_compiler.h.


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

This document is part of the Snap! Websites Project.

Copyright by Made to Order Software Corp.