It builds.

This commit is contained in:
Daniel Lemire 2020-06-21 17:20:33 -04:00
parent 064d4255d5
commit 5dc07ed295
6 changed files with 23 additions and 7 deletions

View File

@ -84,6 +84,18 @@ public:
*/
WARN_UNUSED virtual error_code minify(const uint8_t *buf, size_t len, uint8_t *dst, size_t &dst_len) const noexcept = 0;
/**
* Validate the UTF-8 string.
*
* Overridden by each implementation.
*
* @param buf the string to validate.
* @param len the length of the string in bytes.
* @return true if and only if the string is valid UTF-8.
*/
WARN_UNUSED virtual bool utf8_validate(const char *buf, size_t len) const noexcept = 0;
protected:
/** @private Construct an implementation with the given name and description. For subclasses. */
really_inline implementation(

View File

@ -18,7 +18,7 @@ public:
std::unique_ptr<internal::dom_parser_implementation>& dst
) const noexcept final;
WARN_UNUSED error_code minify(const uint8_t *buf, size_t len, uint8_t *dst, size_t &dst_len) const noexcept final;
WARN_UNUSED bool utf8_validate(const char *buf, size_t len) const noexcept;//mark final
WARN_UNUSED bool utf8_validate(const char *buf, size_t len) const noexcept final;
};
} // namespace arm64

View File

@ -22,7 +22,7 @@ public:
std::unique_ptr<internal::dom_parser_implementation>& dst
) const noexcept final;
WARN_UNUSED error_code minify(const uint8_t *buf, size_t len, uint8_t *dst, size_t &dst_len) const noexcept final;
WARN_UNUSED bool utf8_validate(const char *buf, size_t len) const noexcept;//mark final
WARN_UNUSED bool utf8_validate(const char *buf, size_t len) const noexcept final;
};
} // namespace fallback

View File

@ -20,7 +20,7 @@ public:
std::unique_ptr<internal::dom_parser_implementation>& dst
) const noexcept final;
WARN_UNUSED error_code minify(const uint8_t *buf, size_t len, uint8_t *dst, size_t &dst_len) const noexcept final;
WARN_UNUSED bool utf8_validate(const char *buf, size_t len) const noexcept;//mark final
WARN_UNUSED bool utf8_validate(const char *buf, size_t len) const noexcept final;
};
} // namespace haswell

View File

@ -48,7 +48,9 @@ public:
WARN_UNUSED error_code minify(const uint8_t *buf, size_t len, uint8_t *dst, size_t &dst_len) const noexcept final {
return set_best()->minify(buf, len, dst, dst_len);
}
WARN_UNUSED bool utf8_validate(const char * buf, size_t len) const noexcept final override {
return set_best()->utf8_validate(buf, len);
}
really_inline detect_best_supported_implementation_on_first_use() noexcept : implementation("best_supported_detector", "Detects the best supported implementation and sets it", 0) {}
private:
const implementation *set_best() const noexcept;
@ -83,10 +85,12 @@ public:
) const noexcept final {
return UNSUPPORTED_ARCHITECTURE;
}
WARN_UNUSED error_code minify(const uint8_t *, size_t, uint8_t *, size_t &) const noexcept final {
WARN_UNUSED error_code minify(const uint8_t *, size_t, uint8_t *, size_t &) const noexcept final override {
return UNSUPPORTED_ARCHITECTURE;
}
WARN_UNUSED bool utf8_validate(const char *, size_t) const noexcept final override {
return false; // just refuse the validate
}
unsupported_implementation() : implementation("unsupported", "Unsupported CPU (no detected SIMD instructions)", 0) {}
};

View File

@ -19,7 +19,7 @@ public:
std::unique_ptr<internal::dom_parser_implementation>& dst
) const noexcept final;
WARN_UNUSED error_code minify(const uint8_t *buf, size_t len, uint8_t *dst, size_t &dst_len) const noexcept final;
WARN_UNUSED bool utf8_validate(const char *buf, size_t len) const noexcept;//mark final
WARN_UNUSED bool utf8_validate(const char *buf, size_t len) const noexcept final;
};
} // namespace westmere