Add equality operator for Directives (fixes networking bug)
This commit is contained in:
parent
9b10964a3e
commit
e318098f0b
@ -46,7 +46,7 @@ Directives::Shared::Shared(List<Entry>&& givenEntries, String&& givenString, Str
|
|||||||
entries = std::move(givenEntries);
|
entries = std::move(givenEntries);
|
||||||
string = std::move(givenString);
|
string = std::move(givenString);
|
||||||
prefix = givenPrefix;
|
prefix = givenPrefix;
|
||||||
hash = XXH3_64bits(string.utf8Ptr(), string.utf8Size());
|
hash = string.empty() ? 0 : XXH3_64bits(string.utf8Ptr(), string.utf8Size());
|
||||||
}
|
}
|
||||||
|
|
||||||
Directives::Directives() {}
|
Directives::Directives() {}
|
||||||
@ -63,7 +63,7 @@ Directives::Directives(const char* directives) {
|
|||||||
parse(directives);
|
parse(directives);
|
||||||
}
|
}
|
||||||
|
|
||||||
Directives::Directives(Directives&& directives) {
|
Directives::Directives(Directives&& directives) noexcept {
|
||||||
*this = std::move(directives);
|
*this = std::move(directives);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,7 +99,7 @@ Directives& Directives::operator=(const char* s) {
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
Directives& Directives::operator=(Directives&& other) {
|
Directives& Directives::operator=(Directives&& other) noexcept {
|
||||||
shared = std::move(other.shared);
|
shared = std::move(other.shared);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
@ -215,6 +215,23 @@ bool Directives::empty() const {
|
|||||||
|
|
||||||
Directives::operator bool() const { return !empty(); }
|
Directives::operator bool() const { return !empty(); }
|
||||||
|
|
||||||
|
bool Directives::equals(Directives const& other) const {
|
||||||
|
return hash() == other.hash();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Directives::equals(String const& string) const {
|
||||||
|
auto directiveString = stringPtr();
|
||||||
|
return directiveString ? string == *directiveString : string.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Directives::operator==(Directives const& other) const {
|
||||||
|
return equals(other);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Directives::operator==(String const& string) const {
|
||||||
|
return equals(string);
|
||||||
|
}
|
||||||
|
|
||||||
DataStream& operator>>(DataStream& ds, Directives& directives) {
|
DataStream& operator>>(DataStream& ds, Directives& directives) {
|
||||||
String string;
|
String string;
|
||||||
ds.read(string);
|
ds.read(string);
|
||||||
@ -233,6 +250,18 @@ DataStream& operator<<(DataStream & ds, Directives const& directives) {
|
|||||||
return ds;
|
return ds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool operator==(Directives const& d1, Directives const& d2) {
|
||||||
|
return d1.equals(d2);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==(String const& string, Directives const& directives) {
|
||||||
|
return directives.equals(string);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==(Directives const& directives, String const& string) {
|
||||||
|
return directives.equals(string);
|
||||||
|
}
|
||||||
|
|
||||||
DirectivesGroup::DirectivesGroup() : m_count(0) {}
|
DirectivesGroup::DirectivesGroup() : m_count(0) {}
|
||||||
DirectivesGroup::DirectivesGroup(String const& directives) : m_count(0) {
|
DirectivesGroup::DirectivesGroup(String const& directives) : m_count(0) {
|
||||||
if (directives.empty())
|
if (directives.empty())
|
||||||
|
@ -44,13 +44,13 @@ public:
|
|||||||
Directives(String&& directives);
|
Directives(String&& directives);
|
||||||
Directives(const char* directives);
|
Directives(const char* directives);
|
||||||
Directives(Directives const& directives);
|
Directives(Directives const& directives);
|
||||||
Directives(Directives&& directives);
|
Directives(Directives&& directives) noexcept;
|
||||||
~Directives();
|
~Directives();
|
||||||
|
|
||||||
Directives& operator=(String const& s);
|
Directives& operator=(String const& s);
|
||||||
Directives& operator=(String&& s);
|
Directives& operator=(String&& s);
|
||||||
Directives& operator=(const char* s);
|
Directives& operator=(const char* s);
|
||||||
Directives& operator=(Directives&& other);
|
Directives& operator=(Directives&& other) noexcept;
|
||||||
Directives& operator=(Directives const& other);
|
Directives& operator=(Directives const& other);
|
||||||
|
|
||||||
void loadOperations() const;
|
void loadOperations() const;
|
||||||
@ -65,9 +65,19 @@ public:
|
|||||||
bool empty() const;
|
bool empty() const;
|
||||||
operator bool() const;
|
operator bool() const;
|
||||||
|
|
||||||
|
bool equals(Directives const& other) const;
|
||||||
|
bool equals(String const& string) const;
|
||||||
|
|
||||||
|
bool operator==(Directives const& other) const;
|
||||||
|
bool operator==(String const& string) const;
|
||||||
|
|
||||||
friend DataStream& operator>>(DataStream& ds, Directives& directives);
|
friend DataStream& operator>>(DataStream& ds, Directives& directives);
|
||||||
friend DataStream& operator<<(DataStream& ds, Directives const& directives);
|
friend DataStream& operator<<(DataStream& ds, Directives const& directives);
|
||||||
|
|
||||||
|
//friend bool operator==(Directives const& d1, String const& d2);
|
||||||
|
//friend bool operator==(Directives const& directives, String const& string);
|
||||||
|
//friend bool operator==(String const& string, Directives const& directives);
|
||||||
|
|
||||||
std::shared_ptr<Shared const> shared;
|
std::shared_ptr<Shared const> shared;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user