Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/core/StarDirectives.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/core/StarDirectives.hpp')
-rw-r--r--source/core/StarDirectives.hpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/source/core/StarDirectives.hpp b/source/core/StarDirectives.hpp
index ca4364c..440b33a 100644
--- a/source/core/StarDirectives.hpp
+++ b/source/core/StarDirectives.hpp
@@ -12,12 +12,11 @@ STAR_CLASS(DirectivesGroup);
STAR_EXCEPTION(DirectivesException, StarException);
// Kae: My attempt at reducing memory allocation and per-frame string parsing for extremely long directives
-// entries must never be a null ptr!
class Directives {
public:
struct Entry {
ImageOperation operation;
- String string;
+ String string; // One day, we can make this a string_view pointing to Entry::string.
Entry(ImageOperation&& newOperation, String&& newString);
Entry(ImageOperation const& newOperation, String const& newString);
@@ -31,15 +30,17 @@ public:
Directives(List<Entry>&& entries);
void parse(String const& directives);
- void buildString(String& out) const;
+ String& buildString(String& out) const;
String toString() const;
inline bool empty() const;
+ inline operator bool() const;
friend DataStream& operator>>(DataStream& ds, Directives& directives);
friend DataStream& operator<<(DataStream& ds, Directives const& directives);
std::shared_ptr<List<Entry> const> entries;
size_t hash = 0;
+ String string;
};
class DirectivesGroup {
@@ -51,6 +52,7 @@ public:
void parseDirectivesIntoLeaf(String const& directives);
inline bool empty() const;
+ inline operator bool() const;
bool compare(DirectivesGroup const& other) const;
void append(Directives const& other);
void append(List<Directives::Entry>&& entries);