Compare commits
8 commits
feature/li
...
develop
Author | SHA1 | Date | |
---|---|---|---|
d2615a0c47 | |||
bed7360063 | |||
cccebf674a | |||
002bd3918d | |||
781fa188ef | |||
90f9d9a656 | |||
7e9458da0c | |||
33b77679b4 |
21 changed files with 149 additions and 85 deletions
|
@ -1,9 +1,9 @@
|
|||
# SPDX-FileCopyrightText: 2023 Tobias Schmidl
|
||||
# SPDX-FileCopyrightText: 2025 Tobias Schmidl
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
---
|
||||
BasedOnStyle: Mozilla
|
||||
BasedOnStyle: Microsoft
|
||||
AlwaysBreakTemplateDeclarations: true
|
||||
IndentWidth: 4
|
||||
...
|
||||
# vim: set filetype=yaml:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# SPDX-FileCopyrightText: 2023 Tobias Schmidl
|
||||
# SPDX-FileCopyrightText: 2025 Tobias Schmidl
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
---
|
||||
|
|
54
.devcontainer/devcontainer.json
Normal file
54
.devcontainer/devcontainer.json
Normal file
|
@ -0,0 +1,54 @@
|
|||
// SPDX-FileCopyrightText: 2025 Tobias Schmidl
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
//
|
||||
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
|
||||
{
|
||||
"name": "glimpses-devcontainer",
|
||||
"image": "mcr.microsoft.com/devcontainers/cpp:1",
|
||||
// Features to add to the dev container. More info: https://containers.dev/features.
|
||||
"features": {
|
||||
"ghcr.io/devcontainers-extra/features/cmake:1": {},
|
||||
"ghcr.io/devcontainers-extra/features/pre-commit:2": {},
|
||||
"ghcr.io/devcontainers/features/common-utils:2": {
|
||||
"username": "vscode",
|
||||
"uid": "${localEnv:UID}",
|
||||
"gid": "${localEnv:GID}"
|
||||
},
|
||||
"ghcr.io/devcontainers/features/docker-outside-of-docker:1": {},
|
||||
"ghcr.io/devcontainers/features/git:1": {},
|
||||
"ghcr.io/devcontainers/features/python:1": {}
|
||||
},
|
||||
// Configure tool-specific properties.
|
||||
"customizations": {
|
||||
// Configure properties specific to VS Code.
|
||||
"vscode": {
|
||||
"settings": {},
|
||||
"extensions": [
|
||||
"editorconfig.editorconfig",
|
||||
"elagil.pre-commit-helper",
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"ms-vscode.cmake-tools",
|
||||
"ms-vscode.cpptools",
|
||||
"streetsidesoftware.code-spell-checker",
|
||||
"vivaxy.vscode-conventional-commits"
|
||||
]
|
||||
}
|
||||
},
|
||||
"containerEnv": {
|
||||
"CC": "clang",
|
||||
"CXX": "clang++",
|
||||
"CMAKE_BUILD_PARALLEL_LEVEL": "${localEnv:NUMBER_OF_PROCESSORS}",
|
||||
"CMAKE_C_COMPILER": "clang",
|
||||
"CMAKE_CXX_COMPILER": "clang++",
|
||||
"CMAKE_EXPORT_COMPILE_COMMANDS": "1",
|
||||
"CMAKE_PREFIX_PATH": "/usr/local/cmake"
|
||||
},
|
||||
"mounts": [
|
||||
"source=${localEnv:HOME}/.ssh,target=/home/vscode/.ssh,type=bind,readonly",
|
||||
"source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind"
|
||||
],
|
||||
"workspaceMount": "source=${localWorkspaceFolder},target=${localWorkspaceFolder},type=bind",
|
||||
"workspaceFolder": "${localWorkspaceFolder}"
|
||||
}
|
|
@ -1,3 +1,3 @@
|
|||
SPDX-FileCopyrightText: 2023 Tobias Schmidl
|
||||
SPDX-FileCopyrightText: 2025 Tobias Schmidl
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# SPDX-FileCopyrightText: 2023 Tobias Schmidl
|
||||
# SPDX-FileCopyrightText: 2025 Tobias Schmidl
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
|
|
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,4 +1,4 @@
|
|||
# SPDX-FileCopyrightText: 2023 Tobias Schmidl
|
||||
# SPDX-FileCopyrightText: 2025 Tobias Schmidl
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
# SPDX-FileCopyrightText: 2023 Tobias Schmidl
|
||||
# SPDX-FileCopyrightText: 2025 Tobias Schmidl
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
---
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v4.4.0
|
||||
rev: v5.0.0
|
||||
hooks:
|
||||
- id: check-yaml
|
||||
- id: end-of-file-fixer
|
||||
|
@ -13,7 +13,7 @@ repos:
|
|||
- id: check-ast
|
||||
- id: check-byte-order-marker
|
||||
- repo: https://github.com/fsfe/reuse-tool
|
||||
rev: v2.1.0
|
||||
rev: v5.0.2
|
||||
hooks:
|
||||
- id: reuse
|
||||
- repo: https://github.com/cheshirekow/cmake-format-precommit
|
||||
|
@ -31,14 +31,22 @@ repos:
|
|||
- id: clang-format
|
||||
- id: clang-tidy
|
||||
- repo: https://github.com/editorconfig-checker/editorconfig-checker.python
|
||||
rev: '2.7.2'
|
||||
rev: '3.2.1'
|
||||
hooks:
|
||||
- id: editorconfig-checker
|
||||
alias: ec
|
||||
stages: [commit]
|
||||
stages: [pre-commit]
|
||||
- repo: https://github.com/shellcheck-py/shellcheck-py
|
||||
rev: v0.10.0.1
|
||||
hooks:
|
||||
- id: shellcheck
|
||||
- repo: https://github.com/compilerla/conventional-pre-commit
|
||||
rev: v2.4.0
|
||||
rev: v4.2.0
|
||||
hooks:
|
||||
- id: conventional-pre-commit
|
||||
stages: [commit-msg]
|
||||
- repo: https://github.com/igorshubovych/markdownlint-cli
|
||||
rev: v0.45.0
|
||||
hooks:
|
||||
- id: markdownlint
|
||||
...
|
||||
|
|
7
.vscode/extensions.json
vendored
7
.vscode/extensions.json
vendored
|
@ -1,11 +1,12 @@
|
|||
{
|
||||
"recommendations": [
|
||||
"bbenoist.doxygen",
|
||||
"cschlosser.doxdocgen",
|
||||
"editorconfig.editorconfig",
|
||||
"elagil.pre-commit-helper",
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"ms-vscode.cmake-tools",
|
||||
"ms-vscode.cpptools",
|
||||
"vivaxy.vscode-conventional-commits",
|
||||
"xaver.clang-format",
|
||||
"streetsidesoftware.code-spell-checker",
|
||||
"vivaxy.vscode-conventional-commits"
|
||||
]
|
||||
}
|
||||
|
|
2
.vscode/extensions.json.license
vendored
2
.vscode/extensions.json.license
vendored
|
@ -1,3 +1,3 @@
|
|||
SPDX-FileCopyrightText: 2023 Tobias Schmidl
|
||||
SPDX-FileCopyrightText: 2025 Tobias Schmidl
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
# SPDX-FileCopyrightText: 2023 Tobias Schmidl
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
---
|
||||
steps:
|
||||
|
||||
editor-config:
|
||||
image: mstruebing/editorconfig-checker
|
||||
group: lint
|
||||
|
||||
reuse:
|
||||
image: fsfe/reuse:latest
|
||||
group: lint
|
||||
|
||||
...
|
|
@ -1,4 +1,4 @@
|
|||
# SPDX-FileCopyrightText: 2023 Tobias Schmidl
|
||||
# SPDX-FileCopyrightText: 2025 Tobias Schmidl
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
|
@ -18,7 +18,7 @@ endif()
|
|||
# ---- Add dependencies via CPM ----
|
||||
# see https://github.com/TheLartians/CPM.cmake for more info
|
||||
|
||||
include(cmake/CPM.cmake)
|
||||
include(cmake/get_cpm.cmake)
|
||||
|
||||
# PackageProject.cmake will be used to make our target installable
|
||||
CPMAddPackage("gh:TheLartians/PackageProject.cmake@1.8.0")
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<!--
|
||||
SPDX-FileCopyrightText: 2023 Tobias Schmidl
|
||||
SPDX-FileCopyrightText: 2025 Tobias Schmidl
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
-->
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
#
|
||||
# SPDX-FileCopyrightText: Copyright (c) 2019-2023 Lars Melchior and contributors
|
||||
|
||||
set(CPM_DOWNLOAD_VERSION 0.38.5)
|
||||
set(CPM_HASH_SUM "192aa0ccdc57dfe75bd9e4b176bf7fb5692fd2b3e3f7b09c74856fc39572b31c")
|
||||
set(CPM_DOWNLOAD_VERSION 0.42.0)
|
||||
set(CPM_HASH_SUM "2020b4fc42dba44817983e06342e682ecfc3d2f484a581f11cc5731fbe4dce8a")
|
||||
|
||||
if(CPM_SOURCE_CACHE)
|
||||
set(CPM_DOWNLOAD_LOCATION "${CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
|
|
@ -10,7 +10,7 @@ if(NOT PROJECT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
|
|||
return()
|
||||
endif()
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/CPM.cmake)
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/get_cpm.cmake)
|
||||
|
||||
# enables sanitizers support using the the `USE_SANITIZER` flag available values are: Address, Memory, MemoryWithOrigins, Undefined, Thread,
|
||||
# Leak, 'Address;Undefined'
|
||||
|
|
|
@ -8,9 +8,9 @@ project(GlimpsesDocs)
|
|||
|
||||
# ---- Dependencies ----
|
||||
|
||||
include(../cmake/CPM.cmake)
|
||||
include(../cmake/get_cpm.cmake)
|
||||
|
||||
CPMAddPackage("gh:mosra/m.css#a0d292ec311b97fefd21e93cdefb60f88d19ede6")
|
||||
CPMAddPackage("gh:mosra/m.css#0a460a7a9973a41db48f735e7b49e4da9a876325")
|
||||
CPMAddPackage(NAME Glimpses SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/..)
|
||||
|
||||
# ---- Doxygen variables ----
|
||||
|
|
|
@ -4,22 +4,39 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
namespace glimpses {
|
||||
#include "glimpses/version.h"
|
||||
|
||||
/**
|
||||
* @brief A class for saying hello in multiple languages
|
||||
*/
|
||||
class Glimpses
|
||||
namespace glimpses
|
||||
{
|
||||
|
||||
/** @brief A class for saying retrieving system information */
|
||||
class Glimpses
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* @brief Creates a new glimpses
|
||||
* @param name the name to greet
|
||||
*/
|
||||
/** @brief Type for representing the number of CPU cores. */
|
||||
using CPUCount = uint32_t;
|
||||
|
||||
/** @brief Type for representing a set of CPU cores, mapped by their names. */
|
||||
using CPUSet = std::map<std::string, CPUCount>;
|
||||
|
||||
/** @brief Maximum number of CPU cores supported by Glimpses. */
|
||||
constexpr static CPUCount MAX_CPU_COUNT = 1024;
|
||||
|
||||
/** @brief Version of the Glimpses library. */
|
||||
constexpr static const char *VERSION = GLIMPSES_VERSION;
|
||||
|
||||
/** @brief Creates a new glimpses */
|
||||
Glimpses();
|
||||
|
||||
/**
|
||||
* @brief Returns the number of CPU cores available on the system.
|
||||
* @return The number of CPU cores available on the system.
|
||||
*/
|
||||
CPUSet getCPUCount() const;
|
||||
};
|
||||
|
||||
} // namespace glimpses
|
||||
|
|
|
@ -3,7 +3,25 @@
|
|||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
#include <glimpses/glimpses.hpp>
|
||||
#include <sched.h>
|
||||
#include <thread>
|
||||
#include <unistd.h>
|
||||
|
||||
using namespace glimpses;
|
||||
|
||||
Glimpses::Glimpses() {}
|
||||
Glimpses::Glimpses()
|
||||
{
|
||||
}
|
||||
|
||||
Glimpses::CPUSet Glimpses::getCPUCount() const
|
||||
{
|
||||
cpu_set_t cpuset;
|
||||
auto minmax = [](int64_t min, int64_t value, int64_t max) -> CPUCount {
|
||||
return std::min(std::max(value, min), max);
|
||||
};
|
||||
sched_getaffinity(0, sizeof(cpuset), &cpuset);
|
||||
return CPUSet{{"configured", minmax(0, sysconf(_SC_NPROCESSORS_CONF), MAX_CPU_COUNT)},
|
||||
{"logical", minmax(0, std::thread::hardware_concurrency(), MAX_CPU_COUNT)},
|
||||
{"online", minmax(0, sysconf(_SC_NPROCESSORS_ONLN), MAX_CPU_COUNT)},
|
||||
{"allowed", minmax(0, CPU_COUNT(&cpuset), MAX_CPU_COUNT)}};
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ include(../cmake/tools.cmake)
|
|||
|
||||
# ---- Dependencies ----
|
||||
|
||||
include(../cmake/CPM.cmake)
|
||||
include(../cmake/get_cpm.cmake)
|
||||
|
||||
CPMAddPackage(NAME Glimpses SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/..)
|
||||
|
||||
|
|
|
@ -16,10 +16,10 @@ include(../cmake/tools.cmake)
|
|||
|
||||
# ---- Dependencies ----
|
||||
|
||||
include(../cmake/CPM.cmake)
|
||||
include(../cmake/get_cpm.cmake)
|
||||
|
||||
# CPMAddPackage("gh:doctest/doctest@2.4.9")
|
||||
CPMAddPackage("gh:TheLartians/Format.cmake@1.7.3")
|
||||
CPMAddPackage(NAME Catch2 GITHUB_REPOSITORY catchorg/Catch2 VERSION 3.8.1)
|
||||
CPMAddPackage("gh:TheLartians/Format.cmake@1.8.3")
|
||||
|
||||
if(TEST_INSTALLED_VERSION)
|
||||
find_package(Glimpses REQUIRED)
|
||||
|
@ -31,11 +31,7 @@ endif()
|
|||
|
||||
file(GLOB sources CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/source/*.cpp)
|
||||
add_executable(${PROJECT_NAME} ${sources})
|
||||
target_link_libraries(
|
||||
${PROJECT_NAME}
|
||||
# doctest::doctest
|
||||
Glimpses::Glimpses
|
||||
)
|
||||
target_link_libraries(${PROJECT_NAME} Catch2::Catch2WithMain Glimpses::Glimpses)
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 17)
|
||||
|
||||
# enable compiler warnings
|
||||
|
@ -52,6 +48,9 @@ endif()
|
|||
|
||||
enable_testing()
|
||||
|
||||
include(CTest)
|
||||
add_test(GlimpsesTests GlimpsesTests)
|
||||
|
||||
# Note: doctest and similar testing frameworks can automatically configure CMake tests. For other testing frameworks add the tests target
|
||||
# instead: add_test(NAME ${PROJECT_NAME} COMMAND ${PROJECT_NAME})
|
||||
|
||||
|
|
|
@ -2,24 +2,21 @@
|
|||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
#include <catch2/catch_test_macros.hpp>
|
||||
#include <glimpses/glimpses.hpp>
|
||||
#include <glimpses/version.h>
|
||||
|
||||
#include <string>
|
||||
/*
|
||||
TEST_CASE("Glimpses") {
|
||||
using namespace greeter;
|
||||
|
||||
Glimpses greeter("Tests");
|
||||
TEST_CASE("CPU count")
|
||||
{
|
||||
|
||||
CHECK(greeter.greet(LanguageCode::EN) == "Hello, Tests!");
|
||||
CHECK(greeter.greet(LanguageCode::DE) == "Hallo Tests!");
|
||||
CHECK(greeter.greet(LanguageCode::ES) == "¡Hola Tests!");
|
||||
CHECK(greeter.greet(LanguageCode::FR) == "Bonjour Tests!");
|
||||
glimpses::Glimpses glimpses{};
|
||||
|
||||
CHECK(glimpses.getCPUCount().size() > 0);
|
||||
}
|
||||
|
||||
TEST_CASE("Glimpses version") {
|
||||
static_assert(std::string_view(GREETER_VERSION) == std::string_view("1.0"));
|
||||
/*
|
||||
TEST_CASE("Glimpses version") { static_assert(std::string_view(GREETER_VERSION) == std::string_view("0.1.0"));
|
||||
CHECK(std::string(GREETER_VERSION) == std::string("1.0"));
|
||||
}
|
||||
*/
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
// SPDX-FileCopyrightText: 2023 Tobias Schmidl
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
#if 0
|
||||
#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
|
||||
|
||||
#include <doctest/doctest.h>
|
||||
#endif
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue