From 5dc047811e29670f924f9123b6b96949b24e3363 Mon Sep 17 00:00:00 2001
From: tastytea
Date: Fri, 3 Jan 2020 08:30:29 +0100
Subject: Add skeleton.
---
.editorconfig | 20 +++++++++++++++++
.gitignore | 2 ++
CMakeLists.txt | 39 +++++++++++++++++++++++++++++++++
cmake/debug_flags.cmake | 58 +++++++++++++++++++++++++++++++++++++++++++++++++
include/mastodonpp.hpp | 39 +++++++++++++++++++++++++++++++++
src/CMakeLists.txt | 27 +++++++++++++++++++++++
src/mastodonpp.cpp | 31 ++++++++++++++++++++++++++
7 files changed, 216 insertions(+)
create mode 100644 .editorconfig
create mode 100644 .gitignore
create mode 100644 CMakeLists.txt
create mode 100644 cmake/debug_flags.cmake
create mode 100644 include/mastodonpp.hpp
create mode 100644 src/CMakeLists.txt
create mode 100644 src/mastodonpp.cpp
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..ad5e59f
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,20 @@
+# Configuration file for EditorConfig.
+# More information is available under .
+
+root = true
+
+[*]
+indent_style = space
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+max_line_length = 80
+
+[*.?pp]
+indent_size = 4
+tab_width = 4
+
+[{CMakeLists.txt,*.cmake}]
+indent_size = 2
+tab_width = 2
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..cace064
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+/build/
+/doc/
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..7d56a9d
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,39 @@
+# Support version 3.9 and above, but use policy settings up to 3.14.
+# 3.9 is needed for project description.
+cmake_minimum_required(VERSION 3.9...3.14)
+# Ranges are supported from 3.12, set policy to current for < 3.12.
+if(${CMAKE_VERSION} VERSION_LESS 3.12)
+ cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
+endif()
+
+# Global build options.
+set(CMAKE_BUILD_TYPE "Release" CACHE STRING "The type of build.")
+option(BUILD_SHARED_LIBS "Build shared libraries." YES)
+
+project(mastodonpp
+ VERSION 0.0.0
+ DESCRIPTION "C++ wrapper for the Mastodon API."
+ LANGUAGES CXX)
+
+list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
+
+# Project build options.
+# option(WITH_TESTS "Compile tests." NO)
+# option(WITH_DOC "Generate HTML documentation." YES)
+# option(WITH_EXAMPLES "Compile examples." NO)
+# option(WITH_DEB "Prepare for the building of .deb packages." NO)
+# option(WITH_RPM "Prepare for the building of .rpm packages." NO)
+
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_CXX_EXTENSIONS OFF)
+
+include(debug_flags)
+
+add_subdirectory(src)
+
+# if(WITH_TESTS)
+# add_subdirectory(tests)
+# endif()
+
+# include(cmake/packages.cmake)
diff --git a/cmake/debug_flags.cmake b/cmake/debug_flags.cmake
new file mode 100644
index 0000000..0009039
--- /dev/null
+++ b/cmake/debug_flags.cmake
@@ -0,0 +1,58 @@
+# Set compiler flags for Debug builds.
+# Only has an effect on GCC/Clang >= 5.0.
+
+set(DEBUG_CXXFLAGS "")
+if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang"
+ AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "5")
+ list(APPEND DEBUG_CXXFLAGS
+ "-Wall"
+ "-Wextra"
+ "-Wpedantic"
+ "-Wuninitialized"
+ "-Wshadow"
+ "-Wnon-virtual-dtor"
+ "-Wconversion"
+ "-Wsign-conversion"
+ "-Wold-style-cast"
+ "-Wzero-as-null-pointer-constant"
+ "-Wmissing-declarations"
+ "-Wcast-align"
+ "-Wunused"
+ "-Woverloaded-virtual"
+ "-Wdouble-promotion"
+ "-Wformat=2"
+ "-ftrapv"
+ "-fsanitize=undefined"
+ "-g"
+ "-Og"
+ "-fno-omit-frame-pointer")
+ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
+ list(APPEND DEBUG_CXXFLAGS
+ "-Wlogical-op"
+ "-Wuseless-cast")
+ if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "6")
+ list(APPEND DEBUG_CXXFLAGS
+ "-Wmisleading-indentation"
+ "-Wduplicated-cond"
+ "-Wnull-dereference")
+ if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "7")
+ list(APPEND DEBUG_CXXFLAGS
+ "-Wduplicated-branches")
+ endif()
+ endif()
+ endif()
+ add_compile_options("$<$:${DEBUG_CXXFLAGS}>")
+
+ set(DEBUG_LDFLAGS
+ "-fsanitize=undefined")
+ # add_link_options was introduced in version 3.13.
+ if(${CMAKE_VERSION} VERSION_LESS 3.13)
+ set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${DEBUG_LDFLAGS}")
+ else()
+ add_link_options("$<$:${DEBUG_LDFLAGS}>")
+ endif()
+else()
+ message(STATUS
+ "No additional compiler flags were set, "
+ "because your compiler was not anticipated.")
+endif()
diff --git a/include/mastodonpp.hpp b/include/mastodonpp.hpp
new file mode 100644
index 0000000..713712d
--- /dev/null
+++ b/include/mastodonpp.hpp
@@ -0,0 +1,39 @@
+/* This file is part of mastodonpp.
+ * Copyright © 2020 tastytea
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, version 3.
+ *
+ * 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 Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef MASTODONPP_HPP
+#define MASTODONPP_HPP
+
+#include
+
+namespace mastodonpp
+{
+
+using std::string;
+
+class API
+{
+public:
+ explicit API(string instance, string access_token);
+
+private:
+ const string _instance;
+ const string _access_token;
+};
+
+} // namespace mastodonpp
+
+#endif // MASTODONPP_HPP
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644
index 0000000..e5c64f6
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,27 @@
+include(GNUInstallDirs)
+
+file(GLOB_RECURSE sources_lib *.cpp)
+file(GLOB_RECURSE headers_lib ../include/*.hpp)
+
+add_library(${PROJECT_NAME} "${sources_lib}" "${headers_lib}")
+
+set_target_properties(${PROJECT_NAME} PROPERTIES
+ VERSION ${PROJECT_VERSION}
+ SOVERSION ${${PROJECT_NAME}_VERSION_MAJOR})
+
+target_include_directories(${PROJECT_NAME}
+ PRIVATE
+ "$" # version.hpp
+ PUBLIC
+ "$"
+ "$")
+
+# target_link_libraries(${PROJECT_NAME}
+# PRIVATE
+# PUBLIC)
+
+
+install(TARGETS ${PROJECT_NAME}
+ EXPORT "${PROJECT_NAME}Targets"
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}")
diff --git a/src/mastodonpp.cpp b/src/mastodonpp.cpp
new file mode 100644
index 0000000..7890ed6
--- /dev/null
+++ b/src/mastodonpp.cpp
@@ -0,0 +1,31 @@
+/* This file is part of mastodonpp.
+ * Copyright © 2020 tastytea
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, version 3.
+ *
+ * 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 Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+#include "mastodonpp.hpp"
+
+#include
+
+namespace mastodonpp
+{
+
+using std::move;
+
+API::API(string instance, string access_token)
+ : _instance{move(instance)}
+ , _access_token{move(access_token)}
+{}
+
+} // namespace mastodonpp
--
cgit v1.2.3-54-g00ecf