31 lines
816 B
C
31 lines
816 B
C
|
#pragma once
|
||
|
|
||
|
#include "simdjson.h"
|
||
|
#include <vector>
|
||
|
#include <cstdlib>
|
||
|
|
||
|
/**
|
||
|
* @brief get_runtime_supported_implementations
|
||
|
* Returns a vector of implementations, which both
|
||
|
* have been compiled *and* are dynamically checked to
|
||
|
* be supported at runtime.
|
||
|
*
|
||
|
* Aborts if no implementations are available (should not happen, fallback
|
||
|
* should always be there for us!)
|
||
|
* @return
|
||
|
*/
|
||
|
std::vector<const simdjson::implementation*>
|
||
|
get_runtime_supported_implementations() {
|
||
|
std::vector<const simdjson::implementation*> ret;
|
||
|
for(auto& e: simdjson::available_implementations) {
|
||
|
if(e->supported_by_runtime_system()) {
|
||
|
ret.emplace_back(e);
|
||
|
}
|
||
|
}
|
||
|
if(ret.empty()) {
|
||
|
// No implementations available, not even fallback, weird.
|
||
|
std::abort();
|
||
|
}
|
||
|
return ret;
|
||
|
}
|