mirror of
https://github.com/AlexandreRouma/SDRPlusPlus.git
synced 2024-11-06 02:37:32 +01:00
adde contributing.md
This commit is contained in:
parent
8c428be885
commit
1c18310f37
55
contributing.md
Normal file
55
contributing.md
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
# Pull Requests
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
|
# Code Style
|
||||||
|
|
||||||
|
## Naming Convention
|
||||||
|
|
||||||
|
- Namespaces: `CamelCase`
|
||||||
|
- Classes: `CamelCase`
|
||||||
|
- Structs: `CamelCase_t`
|
||||||
|
- Members: `camelCase`
|
||||||
|
- Enum: `SNAKE_CASE`
|
||||||
|
- Macros: `SNAKE_CASE`
|
||||||
|
|
||||||
|
## Brace Style
|
||||||
|
|
||||||
|
```c++
|
||||||
|
int myFunction() {
|
||||||
|
if (shortIf) { shortFunctionName(); }
|
||||||
|
|
||||||
|
if (longIf) {
|
||||||
|
longFunction();
|
||||||
|
otherStuff();
|
||||||
|
myLongFunction();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Note: If it makes the code cleaner, remember to use the `?` keyword instead of a `if else` statement.
|
||||||
|
|
||||||
|
## Structure
|
||||||
|
|
||||||
|
Headers and their associated C++ files shall be in the same directory. All headers must use `#pragma once` instead of other include guards. Only include files in a header that are being used in that header. Include the rest in the associated C++ file.
|
||||||
|
|
||||||
|
# Modules
|
||||||
|
|
||||||
|
## Module Naming Convention
|
||||||
|
|
||||||
|
All modules names must be `snake_case`. If the module is a source, it must end with `_source`. If it is a sink, it must end with `_sink`.
|
||||||
|
|
||||||
|
For example, lets take the module named `cool_source`:
|
||||||
|
|
||||||
|
- Directory: `cool_source`
|
||||||
|
- Class: `CoolSourceModule`
|
||||||
|
- Binary: `cool_source.<os dynlib extension>`
|
||||||
|
|
||||||
|
## Integration into main repository
|
||||||
|
|
||||||
|
If the module meets the code quality requirements, it may be added to the official repository. A module that doesn't require any external dependencies that the core doesn't already use may be enabled for build by default. Otherwise, they must be disabled for build by default with a `OPT_BUILD_MODULE_NAME` variable set to `OFF`.
|
||||||
|
|
||||||
|
# Best Practices
|
||||||
|
|
||||||
|
* All additions and/or bug fixes to the core must not add additional dependencies.
|
||||||
|
|
19
demo_module/CMakeLists.txt
Normal file
19
demo_module/CMakeLists.txt
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.13)
|
||||||
|
project(demo)
|
||||||
|
|
||||||
|
if (MSVC)
|
||||||
|
set(CMAKE_CXX_FLAGS "-O2 /std:c++17 /EHsc")
|
||||||
|
elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||||
|
set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -Wno-unused-command-line-argument -undefined dynamic_lookup -fPIC")
|
||||||
|
else ()
|
||||||
|
set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fPIC")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
file(GLOB SRC "src/*.cpp")
|
||||||
|
include_directories("src/")
|
||||||
|
|
||||||
|
add_library(demo SHARED ${SRC})
|
||||||
|
set_target_properties(demo PROPERTIES PREFIX "")
|
||||||
|
|
||||||
|
# Install directives
|
||||||
|
install(TARGETS demo DESTINATION lib/sdrpp/plugins)
|
61
demo_module/src/main.cpp
Normal file
61
demo_module/src/main.cpp
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
#include <imgui.h>
|
||||||
|
#include <module.h>
|
||||||
|
#include <gui/gui.h>
|
||||||
|
|
||||||
|
SDRPP_MOD_INFO {
|
||||||
|
/* Name: */ "demo",
|
||||||
|
/* Description: */ "My fancy new module",
|
||||||
|
/* Author: */ "author1;author2,author3,etc...",
|
||||||
|
/* Version: */ 0, 1, 0,
|
||||||
|
/* Max instances */ -1
|
||||||
|
};
|
||||||
|
|
||||||
|
class DemoModule : public ModuleManager::Instance {
|
||||||
|
public:
|
||||||
|
DemoModule(std::string name) {
|
||||||
|
this->name = name;
|
||||||
|
gui::menu.registerEntry(name, menuHandler, this, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
~DemoModule() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void enable() {
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void disable() {
|
||||||
|
enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool isEnabled() {
|
||||||
|
return enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
static void menuHandler(void* ctx) {
|
||||||
|
DemoModule* _this = (DemoModule*)ctx;
|
||||||
|
ImGui::Text("Hello SDR++, my name is %s", _this->name.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string name;
|
||||||
|
bool enabled = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
MOD_EXPORT void _INIT_() {
|
||||||
|
// Nothing here
|
||||||
|
}
|
||||||
|
|
||||||
|
MOD_EXPORT ModuleManager::Instance* _CREATE_INSTANCE_(std::string name) {
|
||||||
|
return new DemoModule(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
MOD_EXPORT void _DELETE_INSTANCE_(void* instance) {
|
||||||
|
delete (DemoModule*)instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
MOD_EXPORT void _END_() {
|
||||||
|
// Nothing here
|
||||||
|
}
|
@ -18,19 +18,19 @@ SDRPP_MOD_INFO {
|
|||||||
|
|
||||||
#define DISCORD_APP_ID "834590435708108860"
|
#define DISCORD_APP_ID "834590435708108860"
|
||||||
|
|
||||||
class PresenceModule : public ModuleManager::Instance {
|
class DiscordIntegrationModule : public ModuleManager::Instance {
|
||||||
public:
|
public:
|
||||||
PresenceModule(std::string name) {
|
DiscordIntegrationModule(std::string name) {
|
||||||
this->name = name;
|
this->name = name;
|
||||||
|
|
||||||
// Change to timer start later on
|
// Change to timer start later on
|
||||||
workerRunning = true;
|
workerRunning = true;
|
||||||
workerThread = std::thread(&PresenceModule::worker, this);
|
workerThread = std::thread(&DiscordIntegrationModule::worker, this);
|
||||||
|
|
||||||
startPresence();
|
startPresence();
|
||||||
}
|
}
|
||||||
|
|
||||||
~PresenceModule() {
|
~DiscordIntegrationModule() {
|
||||||
// Change to timer stop later on
|
// Change to timer stop later on
|
||||||
workerRunning = false;
|
workerRunning = false;
|
||||||
if (workerThread.joinable()) { workerThread.join(); }
|
if (workerThread.joinable()) { workerThread.join(); }
|
||||||
@ -39,7 +39,7 @@ public:
|
|||||||
void enable() {
|
void enable() {
|
||||||
// Change to timer start later on
|
// Change to timer start later on
|
||||||
workerRunning = true;
|
workerRunning = true;
|
||||||
workerThread = std::thread(&PresenceModule::worker, this);
|
workerThread = std::thread(&DiscordIntegrationModule::worker, this);
|
||||||
enabled = true;
|
enabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -148,11 +148,11 @@ MOD_EXPORT void _INIT_() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
MOD_EXPORT ModuleManager::Instance* _CREATE_INSTANCE_(std::string name) {
|
MOD_EXPORT ModuleManager::Instance* _CREATE_INSTANCE_(std::string name) {
|
||||||
return new PresenceModule(name);
|
return new DiscordIntegrationModule(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
MOD_EXPORT void _DELETE_INSTANCE_(void* instance) {
|
MOD_EXPORT void _DELETE_INSTANCE_(void* instance) {
|
||||||
delete (PresenceModule*)instance;
|
delete (DiscordIntegrationModule*)instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
MOD_EXPORT void _END_() {
|
MOD_EXPORT void _END_() {
|
||||||
|
Loading…
Reference in New Issue
Block a user