#pragma once #include "export-symbol-helper.hpp" #include #include #include #include #include #include #include struct obs_data; typedef struct obs_data obs_data_t; namespace advss { class Macro; class MacroAction; class MacroCondition; EXPORT std::deque> &GetMacros(); EXPORT std::optional>> GetMacroActions(Macro *); EXPORT std::optional>> GetMacroConditions(Macro *); std::string_view GetSceneSwitchActionId(); constexpr auto macro_func = 10; EXPORT std::condition_variable &GetMacroWaitCV(); EXPORT std::condition_variable &GetMacroTransitionCV(); EXPORT std::atomic_bool &MacroWaitShouldAbort(); EXPORT void SetMacroAbortWait(bool); EXPORT bool ShutdownCheckIsNecessary(); EXPORT std::atomic_int &GetShutdownConditionCount(); EXPORT void SetMacroSwitchedScene(bool value); EXPORT bool MacroSwitchedScene(); EXPORT std::string GetMacroName(Macro *); EXPORT int64_t MillisecondsSinceMacroConditionCheck(Macro *); EXPORT bool MacroIsStopped(Macro *); EXPORT bool MacroIsPaused(Macro *); EXPORT bool MacroWasPausedSince(Macro *, const std::chrono::high_resolution_clock::time_point &); EXPORT void AddMacroHelperThread(Macro *, std::thread &&); EXPORT bool CheckMacros(); EXPORT bool RunMacroActions(Macro *); EXPORT bool RunMacros(); void StopAllMacros(); EXPORT void LoadMacros(obs_data_t *obj); EXPORT void SaveMacros(obs_data_t *obj); EXPORT void InvalidateMacroTempVarValues(); EXPORT void ResetMacroConditionTimers(Macro *); EXPORT void ResetMacroRunCount(Macro *); bool IsValidMacroSegmentIndex(Macro *m, const int idx, bool isCondition); } // namespace advss