Carla Backend
Loading...
Searching...
No Matches
CarlaHostImpl.hpp
Go to the documentation of this file.
1/*
2 * Carla Plugin Host
3 * Copyright (C) 2011-2022 Filipe Coelho <falktx@falktx.com>
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License as
7 * published by the Free Software Foundation; either version 2 of
8 * the License, or any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * For a full copy of the GNU General Public License see the doc/GPL.txt file.
16 */
17
18#ifndef CARLA_HOST_IMPL_HPP_INCLUDED
19#define CARLA_HOST_IMPL_HPP_INCLUDED
20
21#include "CarlaHost.h"
22#include "CarlaUtils.h"
23#include "CarlaEngine.hpp"
24
25#if !(defined(BUILD_BRIDGE) || defined(CARLA_OS_WASM))
26# define CARLA_CAN_USE_LOG_THREAD
27# include "CarlaLogThread.hpp"
28#else
29# include "CarlaString.hpp"
30#endif
31
32namespace CB = CARLA_BACKEND_NAMESPACE;
33using CB::EngineOptions;
34
35// --------------------------------------------------------------------------------------------------------------------
36// Shared code, WIP
37
38typedef struct _CarlaHostHandle {
39 // required pointers
41
42 // flags
43 bool isStandalone : 1;
44 bool isPlugin : 1;
45
47 : engine(nullptr),
48 isStandalone(false),
49 isPlugin(false) {}
51
52// --------------------------------------------------------------------------------------------------------------------
53// Single, standalone engine
54
60
62#ifdef CARLA_CAN_USE_LOG_THREAD
63 CarlaLogThread logThread;
65#endif
66
67 CarlaString lastError;
68
71 engineCallback(nullptr),
72 engineCallbackPtr(nullptr),
73 fileCallback(nullptr),
74 fileCallbackPtr(nullptr),
76#ifdef CARLA_CAN_USE_LOG_THREAD
77 logThread(),
78 logThreadEnabled(false),
79#endif
80 lastError()
81 {
82 isStandalone = true;
83 }
84
86 {
87 CARLA_SAFE_ASSERT(engine == nullptr);
88 }
89
90 CARLA_PREVENT_HEAP_ALLOCATION
91 CARLA_DECLARE_NON_COPYABLE(CarlaHostStandalone)
92};
93
94// --------------------------------------------------------------------------------------------------------------------
95
96#endif // CARLA_HOST_IMPL_HPP_INCLUDED
#define CARLA_BACKEND_NAMESPACE
Definition CarlaBackend.h:32
Definition CarlaEngine.hpp:814
void(* EngineCallbackFunc)(void *ptr, EngineCallbackOpcode action, uint pluginId, int value1, int value2, int value3, float valuef, const char *valueStr)
Definition CarlaBackend.h:1695
const char *(* FileCallbackFunc)(void *ptr, FileCallbackOpcode action, bool isDir, const char *title, const char *filter)
Definition CarlaBackend.h:1703
Definition CarlaHostImpl.hpp:38
CarlaEngine * engine
Definition CarlaHostImpl.hpp:40
bool isStandalone
Definition CarlaHostImpl.hpp:43
bool isPlugin
Definition CarlaHostImpl.hpp:44
_CarlaHostHandle() noexcept
Definition CarlaHostImpl.hpp:46
Definition CarlaHostImpl.hpp:55
CarlaString lastError
Definition CarlaHostImpl.hpp:67
FileCallbackFunc fileCallback
Definition CarlaHostImpl.hpp:58
CarlaHostStandalone() noexcept
Definition CarlaHostImpl.hpp:69
EngineOptions engineOptions
Definition CarlaHostImpl.hpp:61
bool logThreadEnabled
Definition CarlaHostImpl.hpp:64
~CarlaHostStandalone() noexcept
Definition CarlaHostImpl.hpp:85
CarlaLogThread logThread
Definition CarlaHostImpl.hpp:63
void * fileCallbackPtr
Definition CarlaHostImpl.hpp:59
EngineCallbackFunc engineCallback
Definition CarlaHostImpl.hpp:56
void * engineCallbackPtr
Definition CarlaHostImpl.hpp:57
Definition CarlaEngine.hpp:240