/
githubmirror
/
node
Обзор
Документация
Войти
/
githubmirror
/
node
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
v26.4.0
src/node_metadata.h
172 строки
5 KB
cjihrig
lib,src,test,doc: add node:ffi module
05 май 2026, 17:19
Не верифицирован
05 май 2026, 17:19
2a711f4
Код
Авторство
О чём код?
#ifndef SRC_NODE_METADATA_H_ #define SRC_NODE_METADATA_H_ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #include <array> #include <string> #include <utility> #include "node_version.h" #if HAVE_OPENSSL #include <openssl/crypto.h> #include <quic/guard.h> #ifndef OPENSSL_NO_QUIC #include <openssl/quic.h> #endif #endif // HAVE_OPENSSL namespace node { // if this is a release build and no explicit base has been set // substitute the standard release download URL #ifndef NODE_RELEASE_URLBASE #if NODE_VERSION_IS_RELEASE #define NODE_RELEASE_URLBASE "https://nodejs.org/download/release/" #endif // NODE_VERSION_IS_RELEASE #endif // NODE_RELEASE_URLBASE #if defined(NODE_RELEASE_URLBASE) #define NODE_HAS_RELEASE_URLS #endif #if HAVE_AMARO && !defined(NODE_SHARED_BUILTIN_AMARO_DIST_INDEX_PATH) #define NODE_VERSIONS_KEY_AMARO(V) V(amaro) #else #define NODE_VERSIONS_KEY_AMARO(V) #endif #ifndef NODE_SHARED_BUILTIN_UNDICI_UNDICI_PATH #define NODE_VERSIONS_KEY_UNDICI(V) V(undici) #else #define NODE_VERSIONS_KEY_UNDICI(V) #endif #define NODE_VERSIONS_KEYS_BASE(V) \ V(node) \ V(v8) \ V(uv) \ V(zlib) \ V(brotli) \ V(zstd) \ V(ares) \ V(modules) \ V(nghttp2) \ V(napi) \ V(llhttp) \ V(uvwasi) \ V(acorn) \ V(simdjson) \ V(simdutf) \ V(ada) \ V(nbytes) \ V(ngtcp2) \ V(nghttp3) \ NODE_VERSIONS_KEY_AMARO(V) \ NODE_VERSIONS_KEY_UNDICI(V) \ V(merve) #if HAVE_OPENSSL #define NODE_VERSIONS_KEY_CRYPTO(V) V(openssl) V(ncrypto) #else #define NODE_VERSIONS_KEY_CRYPTO(V) #endif #ifdef NODE_HAVE_I18N_SUPPORT #define NODE_VERSIONS_KEY_INTL(V) \ V(cldr) \ V(icu) \ V(tz) \ V(unicode) #else #define NODE_VERSIONS_KEY_INTL(V) #endif // NODE_HAVE_I18N_SUPPORT #if HAVE_SQLITE #define NODE_VERSIONS_KEY_SQLITE(V) V(sqlite) #else #define NODE_VERSIONS_KEY_SQLITE(V) #endif #if HAVE_FFI #define NODE_VERSIONS_KEY_LIBFFI(V) V(libffi) #else #define NODE_VERSIONS_KEY_LIBFFI(V) #endif #if HAVE_LIEF #define NODE_VERSIONS_KEY_LIEF(V) V(lief) #else #define NODE_VERSIONS_KEY_LIEF(V) #endif #define NODE_VERSIONS_KEYS(V) \ NODE_VERSIONS_KEYS_BASE(V) \ NODE_VERSIONS_KEY_CRYPTO(V) \ NODE_VERSIONS_KEY_INTL(V) \ NODE_VERSIONS_KEY_SQLITE(V) \ NODE_VERSIONS_KEY_LIBFFI(V) \ NODE_VERSIONS_KEY_LIEF(V) #define V(key) +1 constexpr int NODE_VERSIONS_KEY_COUNT = NODE_VERSIONS_KEYS(V); #undef V class Metadata { public: Metadata(); Metadata(Metadata&) = delete; Metadata(Metadata&&) = delete; Metadata operator=(Metadata&) = delete; Metadata operator=(Metadata&&) = delete; struct Versions { Versions(); #ifdef NODE_HAVE_I18N_SUPPORT // Must be called on the main thread after // i18n::InitializeICUDirectory() void InitializeIntlVersions(); #endif // NODE_HAVE_I18N_SUPPORT #define V(key) std::string key; NODE_VERSIONS_KEYS(V) #undef V std::array<std::pair<std::string_view, std::string_view>, NODE_VERSIONS_KEY_COUNT> pairs() const; }; struct Release { Release(); std::string name; #if NODE_VERSION_IS_LTS std::string lts; #endif // NODE_VERSION_IS_LTS #ifdef NODE_HAS_RELEASE_URLS std::string source_url; std::string headers_url; #ifdef _WIN32 std::string lib_url; #endif // _WIN32 #endif // NODE_HAS_RELEASE_URLS }; Versions versions; const Release release; const std::string arch; const std::string platform; }; // Per-process global namespace per_process { extern Metadata metadata; } } // namespace node #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #endif // SRC_NODE_METADATA_H_