20 #ifndef LIBREPCB_CORE_SEXPRESSION_H 21 #define LIBREPCB_CORE_SEXPRESSION_H 26 #include "../fileio/filepath.h" 102 QList<SExpression*>
getChildren(
const QString& name) noexcept;
103 QList<const SExpression*>
getChildren(
const QString& name)
const noexcept;
160 void setName(
const QString& name);
161 void setValue(
const QString& value);
167 template <
typename T>
172 template <
typename T>
185 return !(*
this == rhs);
202 int& index) noexcept;
207 static QString
parseToken(
const QString& content,
int& index,
209 static QString
parseString(
const QString& content,
int& index,
212 bool skipNewline =
false);
213 static QString
escapeString(
const QString&
string) noexcept;
214 static bool isValidToken(
const QString& token) noexcept;
238 const QList<SExpression>& children = node.
getChildren();
239 return ::qHashRange(children.begin(), children.end(), seed);
const QString & getName() const
Definition: sexpression.cpp:62
void setValue(const QString &value)
Definition: sexpression.cpp:179
bool isString() const noexcept
Definition: sexpression.h:88
const QList< SExpression > & getChildren() const noexcept
Get all children of this node.
Definition: sexpression.h:99
bool operator!=(const SExpression &rhs) const noexcept
Definition: sexpression.h:184
static SExpression createLineBreak()
Definition: sexpression.cpp:384
void ensureLineBreak()
Definition: sexpression.cpp:191
QByteArray toByteArray() const
Definition: sexpression.cpp:242
static bool isValidToken(const QString &token) noexcept
Definition: sexpression.cpp:309
Definition: occmodel.cpp:76
Type
Definition: sexpression.h:71
static QString parseString(const QString &content, int &index, const FilePath &filePath)
Definition: sexpression.cpp:494
SExpression & appendList(const QString &name)
Definition: sexpression.cpp:197
Type getType() const noexcept
Definition: sexpression.h:85
static SExpression createList(const QString &name)
Definition: sexpression.cpp:372
SExpression & getChild(const QString &path)
Get a child by path.
Definition: sexpression.cpp:120
bool isToken() const noexcept
Definition: sexpression.h:87
FilePath mFilePath
Definition: sexpression.h:222
bool isList() const noexcept
Definition: sexpression.h:86
Type mType
Definition: sexpression.h:219
values without quotes (e.g. -12.34)
SExpression & appendChild(const T &obj)
Definition: sexpression.h:168
static SExpression createToken(const QString &token)
Definition: sexpression.cpp:376
QList< SExpression > mChildren
Definition: sexpression.h:221
SExpression & appendChild(const QString &child, const T &obj)
Definition: sexpression.h:173
bool operator==(const SExpression &rhs) const noexcept
Definition: sexpression.cpp:254
static SExpression parseList(const QString &content, int &index, const FilePath &filePath)
Definition: sexpression.cpp:452
QString mValue
either a list name, a token or a string
Definition: sexpression.h:220
static SExpression createString(const QString &string)
Definition: sexpression.cpp:380
SExpression & operator=(const SExpression &rhs) noexcept
Definition: sexpression.cpp:276
has a tag name and an arbitrary number of children
manual line break inside a List
bool isMultiLine() const noexcept
Definition: sexpression.cpp:410
static QString parseToken(const QString &content, int &index, const FilePath &filePath)
Definition: sexpression.cpp:477
bool isLineBreak() const noexcept
Definition: sexpression.h:89
SExpression * tryGetChild(const QString &path) noexcept
Try get a child by path.
Definition: sexpression.cpp:134
This class represents absolute, well-formatted paths to files or directories.
Definition: filepath.h:127
AttributeKey deserialize(const SExpression &node)
Definition: attributekey.h:104
SExpression() noexcept
Definition: sexpression.cpp:41
static void skipWhitespaceAndComments(const QString &content, int &index, bool skipNewline=false)
Definition: sexpression.cpp:548
QString toString(int indent) const
Definition: sexpression.cpp:327
void setName(const QString &name)
Definition: sexpression.cpp:171
values with double quotes (e.g. "Foo!")
void removeChildrenWithNodeRecursive(const SExpression &search) noexcept
Definition: sexpression.cpp:220
SExpression & appendChild(const SExpression &child)
Definition: sexpression.cpp:201
static QString escapeString(const QString &string) noexcept
Definition: sexpression.cpp:288
void replaceRecursive(const SExpression &search, const SExpression &replace) noexcept
Definition: sexpression.cpp:231
static bool skipLineBreaks(const QList< SExpression > &children, int &index) noexcept
Definition: sexpression.cpp:423
static bool isValidTokenChar(const QChar &c) noexcept
Definition: sexpression.cpp:321
~SExpression() noexcept
Definition: sexpression.cpp:55
SExpression serialize(const AttributeKey &obj)
Definition: attributekey.h:99
bool operator<(const SExpression &rhs) const noexcept
Definition: sexpression.cpp:260
const QString & getValue() const
Definition: sexpression.cpp:71
uint qHash(const SExpression &node, uint seed=0) noexcept
Definition: sexpression.h:229
The SExpression class.
Definition: sexpression.h:66
uint qHash(const AttributeKey &key, uint seed=0) noexcept
Definition: attributekey.h:118
void removeChild(const SExpression &child)
Definition: sexpression.cpp:210
static SExpression parse(const QByteArray &content, const FilePath &filePath)
Definition: sexpression.cpp:388
const FilePath & getFilePath() const noexcept
Definition: sexpression.h:84