#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; static const int macro_func = 10; EXPORT std::deque> &GetTopLevelMacros(); std::deque> &GetTemporaryMacros(); EXPORT std::deque> GetAllMacros(); Macro *GetMacroByName(const char *name); Macro *GetMacroByQString(const QString &name); std::weak_ptr GetWeakMacroByName(const char *name); EXPORT std::optional>> GetMacroActions(Macro *); EXPORT std::optional>> GetMacroElseActions(Macro *); EXPORT std::optional>> GetMacroConditions(Macro *); EXPORT bool IsGroupMacro(Macro *); EXPORT std::vector> GetGroupMacroEntries(Macro *); 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(const Macro *); EXPORT std::chrono::high_resolution_clock::time_point LastMacroConditionCheckTime(const Macro *); EXPORT bool MacroIsStopped(const Macro *); EXPORT bool MacroIsPaused(const Macro *); EXPORT bool MacroWasPausedSince(const Macro *, const std::chrono::high_resolution_clock::time_point &); EXPORT bool MacroWasCheckedSinceLastStart(const Macro *); EXPORT void AddMacroHelperThread(Macro *, std::thread &&); EXPORT bool CheckMacros(); EXPORT bool RunMacroActions(Macro *); bool RunMacroElseActions(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 IsValidActionIndex(const Macro *m, const int idx); bool IsValidElseActionIndex(const Macro *m, const int idx); bool IsValidConditionIndex(const Macro *m, const int idx); } // namespace advss