zeek/auxil/spicy/hilti/runtime/src/global-state.cc
Patrick Kelley 8fd444092b initial
2025-05-07 15:35:15 -04:00

31 lines
858 B
C++

// Copyright (c) 2020-now by the Zeek Project. See LICENSE for details.
#include <hilti/rt/configuration.h>
#include <hilti/rt/context.h>
#include <hilti/rt/global-state.h>
#include <hilti/rt/logging.h>
using namespace hilti::rt;
using namespace hilti::rt::detail;
// Not memory-managed through smart pointer, need to control when we release
// it.
GlobalState* detail::__global_state = nullptr;
GlobalState* detail::createGlobalState() {
__global_state = new GlobalState(); // NOLINT (cppcoreguidelines-owning-memory)
__global_state->c_locale = newlocale(LC_ALL_MASK, "C", nullptr);
if ( ! __global_state->c_locale )
fatalError("failed to create C locale");
return __global_state;
}
GlobalState::~GlobalState() {
HILTI_RT_DEBUG("libhilti", "destroying global state");
if ( c_locale )
freelocale(*c_locale);
}