24 #ifndef PXR_BASE_TF_ENV_SETTING_H
25 #define PXR_BASE_TF_ENV_SETTING_H
124 PXR_NAMESPACE_OPEN_SCOPE
134 std::atomic<T*> *_value;
137 char const * _description;
143 struct TfEnvSetting<std::string>
145 std::atomic<std::string*> *_value;
146 char const * _default;
148 char const * _description;
152 void Tf_InitializeEnvSetting(TfEnvSetting<T> *);
159 extern void Tf_InitEnvSettings();
160 Tf_InitEnvSettings();
162 T *val = setting._value->load();
163 if (ARCH_UNLIKELY(!val)) {
164 Tf_InitializeEnvSetting(&setting);
165 val = setting._value->load();
173 bool Tf_ChooseEnvSettingType(
bool);
174 int Tf_ChooseEnvSettingType(
int);
175 std::string Tf_ChooseEnvSettingType(
char const *);
177 class Tf_EnvSettingRegistry;
182 #define TF_DEFINE_ENV_SETTING(envVar, defValue, description) \
183 std::atomic< decltype(Tf_ChooseEnvSettingType(defValue))*> \
185 TfEnvSetting<decltype(Tf_ChooseEnvSettingType(defValue))> envVar = { \
186 &envVar##_value, defValue, #envVar, description }; \
187 TF_REGISTRY_FUNCTION_WITH_TAG(Tf_EnvSettingRegistry, envVar) { \
188 (void)TfGetEnvSetting(envVar); \
191 PXR_NAMESPACE_CLOSE_SCOPE
193 #endif // PXR_BASE_TF_ENV_SETTING_H
T const & TfGetEnvSetting(TfEnvSetting< T > &setting)
Returns the value of the specified env setting, registered using TF_DEFINE_ENV_SETTING.