mirror of
https://github.com/simdjson/simdjson
synced 2026-06-08 17:27:07 +00:00
Mark jsonformatutils.h/isadetection.h internal
- Move jsonformatutils.h to internal/jsonformatutils.h (it is used by document::print_json) - Move isadetection.h to src/ (it is only used internally)
This commit is contained in:
+15
-18
@@ -1,5 +1,5 @@
|
||||
#include "simdjson/portability.h"
|
||||
#include "simdjson/isadetection.h"
|
||||
#include "isadetection.h"
|
||||
#include "simdjson/implementation.h"
|
||||
#include <initializer_list>
|
||||
|
||||
@@ -11,10 +11,10 @@
|
||||
#include "haswell/implementation.h"
|
||||
#include "westmere/implementation.h"
|
||||
|
||||
namespace simdjson {
|
||||
const haswell::implementation haswell_singleton{};
|
||||
const westmere::implementation westmere_singleton{};
|
||||
constexpr const std::initializer_list<const implementation *> available_implementation_pointers { &haswell_singleton, &westmere_singleton };
|
||||
namespace simdjson::internal {
|
||||
const haswell::implementation haswell_singleton{};
|
||||
const westmere::implementation westmere_singleton{};
|
||||
constexpr const std::initializer_list<const implementation *> available_implementation_pointers { &haswell_singleton, &westmere_singleton };
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -23,19 +23,20 @@ namespace simdjson {
|
||||
|
||||
#include "arm64/implementation.h"
|
||||
|
||||
namespace simdjson {
|
||||
const arm64::implementation arm64_singleton{};
|
||||
constexpr const std::initializer_list<const implementation *> available_implementation_pointers { &arm64_singleton };
|
||||
namespace simdjson::internal {
|
||||
const arm64::implementation arm64_singleton{};
|
||||
constexpr const std::initializer_list<const implementation *> available_implementation_pointers { &arm64_singleton };
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
namespace simdjson {
|
||||
|
||||
namespace simdjson::internal {
|
||||
|
||||
// So we can return UNSUPPORTED_ARCHITECTURE from the parser when there is no support
|
||||
class unsupported_implementation final : public implementation {
|
||||
public:
|
||||
WARN_UNUSED virtual error_code parse(const uint8_t *, size_t, document::parser &) const noexcept final {
|
||||
WARN_UNUSED error_code parse(const uint8_t *, size_t, document::parser &) const noexcept final {
|
||||
return UNSUPPORTED_ARCHITECTURE;
|
||||
}
|
||||
WARN_UNUSED error_code stage1(const uint8_t *, size_t, document::parser &, bool) const noexcept final {
|
||||
@@ -53,21 +54,19 @@ public:
|
||||
|
||||
const unsupported_implementation unsupported_singleton{};
|
||||
|
||||
namespace internal {
|
||||
|
||||
size_t available_implementation_list::size() const noexcept {
|
||||
return available_implementation_pointers.size();
|
||||
return internal::available_implementation_pointers.size();
|
||||
}
|
||||
const implementation * const *available_implementation_list::begin() const noexcept {
|
||||
return available_implementation_pointers.begin();
|
||||
return internal::available_implementation_pointers.begin();
|
||||
}
|
||||
const implementation * const *available_implementation_list::end() const noexcept {
|
||||
return available_implementation_pointers.end();
|
||||
return internal::available_implementation_pointers.end();
|
||||
}
|
||||
const implementation *available_implementation_list::detect_best_supported() const noexcept {
|
||||
// They are prelisted in priority order, so we just go down the list
|
||||
uint32_t supported_instruction_sets = detect_supported_architectures();
|
||||
for (const implementation *impl : available_implementation_pointers) {
|
||||
for (const implementation *impl : internal::available_implementation_pointers) {
|
||||
uint32_t required_instruction_sets = impl->required_instruction_sets();
|
||||
if ((supported_instruction_sets & required_instruction_sets) == required_instruction_sets) { return impl; }
|
||||
}
|
||||
@@ -78,6 +77,4 @@ const implementation *detect_best_supported_implementation_on_first_use::set_bes
|
||||
return active_implementation = available_implementations.detect_best_supported();
|
||||
}
|
||||
|
||||
} // namespace simdjson::internal
|
||||
|
||||
} // namespace simdjson
|
||||
|
||||
Reference in New Issue
Block a user