Atlas Game Manager
A game manager for f95 and dlsite written in c++
Loading...
Searching...
No Matches
QueryBuilder.cpp File Reference
#include "QueryBuilder.hpp"
#include <tracy/Tracy.hpp>
#include "core/exceptions.hpp"

Enumerations

enum  TokenOperators {
  NOT , OR , AND , BEGIN_GROUP ,
  END_GROUP , OPERATOR_END , INVALID_OPERATOR
}
 
enum  Namespaces {
  SYSTEM , CREATOR , ENGINE , TITLE ,
  TAG , NAMESPACE_END , INVALID_NAMESPACE
}
 
enum  SystemTokens { FILESIZE , SYSTEM_END , INVALID_SYSTEM }
 

Functions

std::string_view trimSpaces (std::string_view str)
 
std::string parseBytesize (std::string_view str)
 
bool isNamespace (const std::string_view str)
 
bool isOperator (const std::string_view str)
 
std::string parseOperator (const std::string_view str)
 
std::string parseSystem (const std::string_view str)
 
std::pair< std::string_view, std::string_view > seperateNamespace (const std::string_view str)
 
std::string parseNamespace (const std::string_view str)
 Parses a given NamespaceParsing from a string.
 
std::string parse (const std::string_view str)
 Parses the string via parseNamespace(const std::string_view) or parseOperator(const std::string_view).
 
std::string_view extractUntilNext (std::string_view &str)
 Extracts characters until reaching a grouping operator or namespace or system tag.
 
std::string processString (std::string_view str_view)
 
std::string escape (std::string_view view)
 
std::string orderToStr (const SortOrder order)
 
std::string generateQuery (const std::string str, const SortOrder order, const bool asc)
 

Variables

static constexpr std::array< std::pair< std::string_view, TokenOperators >, OPERATOR_ENDoperators
 
static constexpr std::array< std::pair< std::string_view, Namespaces >, NAMESPACE_ENDnamespaces
 
static constexpr std::array< std::pair< std::string_view, SystemTokens >, SYSTEM_ENDsystems
 

Enumeration Type Documentation

◆ Namespaces

enum Namespaces
Enumerator
SYSTEM 
CREATOR 
ENGINE 
TITLE 
TAG 
NAMESPACE_END 
INVALID_NAMESPACE 

◆ SystemTokens

Enumerator
FILESIZE 
SYSTEM_END 
INVALID_SYSTEM 

◆ TokenOperators

Enumerator
NOT 
OR 
AND 
BEGIN_GROUP 
END_GROUP 
OPERATOR_END 
INVALID_OPERATOR 

Function Documentation

◆ escape()

std::string escape ( std::string_view view)

◆ extractUntilNext()

std::string_view extractUntilNext ( std::string_view & str)

Extracts characters until reaching a grouping operator or namespace or system tag.

◆ generateQuery()

std::string generateQuery ( const std::string str,
const SortOrder order,
const bool asc )

◆ isNamespace()

bool isNamespace ( const std::string_view str)

◆ isOperator()

bool isOperator ( const std::string_view str)

◆ orderToStr()

std::string orderToStr ( const SortOrder order)

◆ parse()

std::string parse ( const std::string_view str)

Parses the string via parseNamespace(const std::string_view) or parseOperator(const std::string_view).

Warning
Calling this with a single operator is considered undefined behaviour
Exceptions
ParseErrorif isNamespace(const std::string_view) and isOperator(const std::string_view) are both false
Parameters
str

◆ parseBytesize()

std::string parseBytesize ( std::string_view str)

◆ parseNamespace()

std::string parseNamespace ( const std::string_view str)

Parses a given NamespaceParsing from a string.

Parameters
str
Returns

◆ parseOperator()

std::string parseOperator ( const std::string_view str)

◆ parseSystem()

std::string parseSystem ( const std::string_view str)

◆ processString()

std::string processString ( std::string_view str_view)

◆ seperateNamespace()

std::pair< std::string_view, std::string_view > seperateNamespace ( const std::string_view str)

◆ trimSpaces()

std::string_view trimSpaces ( std::string_view str)

Variable Documentation

◆ namespaces

std::array< std::pair< std::string_view, Namespaces >, NAMESPACE_END > namespaces
inlinestaticconstexpr
Initial value:
{
{ { "system:", SYSTEM }, { "creator:", CREATOR }, { "engine:", ENGINE }, { "title:", TITLE }, { "tag:", TAG } }
}
@ TITLE
Definition QueryBuilder.cpp:31
@ SYSTEM
Definition QueryBuilder.cpp:28
@ ENGINE
Definition QueryBuilder.cpp:30
@ TAG
Definition QueryBuilder.cpp:32
@ CREATOR
Definition QueryBuilder.cpp:29

◆ operators

std::array< std::pair< std::string_view, TokenOperators >, OPERATOR_END > operators
inlinestaticconstexpr
Initial value:
{
{ { "!", NOT }, { "|", OR }, { "&", AND }, { "(", BEGIN_GROUP }, { ")", END_GROUP } }
}
@ NOT
Definition QueryBuilder.cpp:13
@ BEGIN_GROUP
Definition QueryBuilder.cpp:16
@ AND
Definition QueryBuilder.cpp:15
@ OR
Definition QueryBuilder.cpp:14
@ END_GROUP
Definition QueryBuilder.cpp:17

◆ systems

std::array< std::pair< std::string_view, SystemTokens >, SYSTEM_END > systems
inlinestaticconstexpr
Initial value:
{
{ { "system:size", FILESIZE } }
}
@ FILESIZE
Definition QueryBuilder.cpp:43