diff --git a/libraries/AP_Scripting/AP_Scripting.cpp b/libraries/AP_Scripting/AP_Scripting.cpp new file mode 100644 index 0000000000..b19c098d9a --- /dev/null +++ b/libraries/AP_Scripting/AP_Scripting.cpp @@ -0,0 +1,42 @@ +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#if ENABLE_SCRIPTING + +#include +#include + +AP_Scripting::AP_Scripting() { +#if CONFIG_HAL_BOARD == HAL_BOARD_SITL + if (_singleton != nullptr) { + AP_HAL::panic("Scripting must be a singleton"); + } +#endif // CONFIG_HAL_BOARD == HAL_BOARD_SITL + _singleton = this; +} + + + +AP_Scripting *AP_Scripting::_singleton = nullptr; + +namespace AP { + +AP_Scripting *scripting() { + return AP_Scripting::get_singleton(); +} + +}; + +#endif // ENABLE_SCRIPTING diff --git a/libraries/AP_Scripting/AP_Scripting.h b/libraries/AP_Scripting/AP_Scripting.h new file mode 100644 index 0000000000..95ea22c0be --- /dev/null +++ b/libraries/AP_Scripting/AP_Scripting.h @@ -0,0 +1,42 @@ +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ +#pragma once + +#include + +#if ENABLE_SCRIPTING + +class AP_Scripting +{ +public: + AP_Scripting(); + + /* Do not allow copies */ + AP_Scripting(const AP_Scripting &other) = delete; + AP_Scripting &operator=(const AP_Scripting&) = delete; + + static AP_Scripting * get_singleton() { + return _singleton; + } + +private: + static AP_Scripting *_singleton; +}; + +namespace AP { + AP_Scripting * scripting(); +}; + +#endif // ENABLE_SCRIPTING