Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a787fef614 | |||
| 298184d58f | |||
| 51999199c6 | |||
| 682fc5b853 | |||
| 94209fd740 | |||
| 170d6e35a6 | |||
| 83fd814d6e | |||
| 85f17c4188 | |||
| 5645e706ad | |||
| d4807cd2a0 | |||
| bd792a0d25 | |||
| 69957bd7b2 | |||
| 1d6cce38fa |
@@ -1,12 +0,0 @@
|
||||
{
|
||||
"log_functions": [
|
||||
{
|
||||
"function": "ox::trace::gdblogger::captureLogFunc",
|
||||
"ignore_frames": 3,
|
||||
"file_var": "file",
|
||||
"line_var": "line",
|
||||
"channel_var": "ch",
|
||||
"msg_var": "msg"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -3,6 +3,7 @@ build/gba
|
||||
build/*-asan
|
||||
build/*-debug
|
||||
build/*-release
|
||||
dist
|
||||
.current_build
|
||||
tags
|
||||
compile_commands.json
|
||||
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
language: cpp
|
||||
sudo: false
|
||||
dist: trusty
|
||||
compiler:
|
||||
- clang
|
||||
- gcc
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- cmake
|
||||
script: ./scripts/cibuild
|
||||
+3
-3
@@ -1,10 +1,10 @@
|
||||
cmake_minimum_required(VERSION 3.19)
|
||||
cmake_minimum_required(VERSION 3.25)
|
||||
set(CMAKE_POLICY_DEFAULT_CMP0110 NEW) # requires CMake 3.19
|
||||
|
||||
project(Ox CXX)
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
|
||||
include(address_sanitizer)
|
||||
include(deps/buildcore/base.cmake)
|
||||
|
||||
|
||||
if(NOT DEFINED OX_RUN_TESTS)
|
||||
set(OX_RUN_TESTS ON)
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
set(CMAKE_SYSTEM_NAME "Generic")
|
||||
|
||||
set(DEVKITARM $ENV{DEVKITARM})
|
||||
|
||||
if(NOT DEVKITARM)
|
||||
message(FATAL_ERROR "DEVKITARM environment variable not set")
|
||||
endif()
|
||||
|
||||
set(CMAKE_C_COMPILER ${DEVKITARM}/bin/arm-none-eabi-gcc)
|
||||
set(CMAKE_CXX_COMPILER ${DEVKITARM}/bin/arm-none-eabi-g++)
|
||||
set(CMAKE_FIND_ROOT_PATH ${DEVKITARM})
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
|
||||
set(CMAKE_FIND_LIBRARY_PREFIXES lib)
|
||||
set(CMAKE_FIND_LIBRARY_SUFFIXES .a)
|
||||
|
||||
set(LINKER_FLAGS "-specs=gba.specs")
|
||||
add_definitions (
|
||||
-DARM7
|
||||
)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
@@ -1,18 +0,0 @@
|
||||
set(CMAKE_SYSTEM_NAME Windows)
|
||||
set(TOOLCHAIN_PREFIX x86_64-w64-mingw32)
|
||||
|
||||
# cross compilers to use for C and C++
|
||||
set(CMAKE_C_COMPILER /usr/bin/${TOOLCHAIN_PREFIX}-gcc)
|
||||
set(CMAKE_CXX_COMPILER /usr/bin/${TOOLCHAIN_PREFIX}-g++)
|
||||
set(CMAKE_RC_COMPILER /usr/bin/${TOOLCHAIN_PREFIX}-windres)
|
||||
|
||||
# target environment on the build host system
|
||||
# set 1st to dir with the cross compiler's C/C++ headers/libs
|
||||
set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})
|
||||
|
||||
# modify default behavior of FIND_XXX() commands to
|
||||
# search for headers/libs in the target environment and
|
||||
# search for programs in the build host environment
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
@@ -1,52 +0,0 @@
|
||||
# This file belongs Nick Overdijk, and is from https://github.com/NickNick/wubwubcmake
|
||||
# The MIT License (MIT)
|
||||
#
|
||||
# Copyright (c) 2013 Nick Overdijk
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
# this software and associated documentation files (the "Software"), to deal in
|
||||
# the Software without restriction, including without limitation the rights to
|
||||
# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
# the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in all
|
||||
# copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.option(USE_ASAN "Enable Address Sanitizer, if your compiler supports it" ON)
|
||||
|
||||
option(USE_ASAN "Enable Address Sanitizer, if your compiler supports it" OFF)
|
||||
if(USE_ASAN)
|
||||
include(CheckCXXSourceCompiles)
|
||||
# If the compiler understands -fsanitize=address, add it to the flags (gcc since 4.8 & clang since version 3.2)
|
||||
set(CMAKE_REQUIRED_FLAGS_BAK "${CMAKE_REQUIRED_FLAGS}")
|
||||
set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -fsanitize=address")
|
||||
CHECK_CXX_SOURCE_COMPILES("int main() { return 0; }" FLAG_FSANA_SUPPORTED)
|
||||
set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS_BAK}")
|
||||
|
||||
if(FLAG_FSANA_SUPPORTED)
|
||||
set(asan_flag "-fsanitize=address")
|
||||
else(FLAG_FSANA_SUPPORTED)
|
||||
# Alternatively, try if it understands -faddress-sanitizer (clang until version 3.2)
|
||||
set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -faddress-sanitizer")
|
||||
CHECK_CXX_SOURCE_COMPILES("int main() { return 0; }" FLAG_FASAN_SUPPORTED)
|
||||
set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS_BAK}")
|
||||
|
||||
if(FLAG_FASAN_SUPPORTED)
|
||||
set(asan_flag "-faddress-sanitizer")
|
||||
endif(FLAG_FASAN_SUPPORTED)
|
||||
endif(FLAG_FSANA_SUPPORTED)
|
||||
|
||||
if(FLAG_FSANA_SUPPORTED OR FLAG_FASAN_SUPPORTED)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${asan_flag}")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${asan_flag}")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${asan_flag}")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${asan_flag}")
|
||||
endif()
|
||||
|
||||
endif(USE_ASAN)
|
||||
@@ -1,8 +0,0 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
make -j release
|
||||
make -j debug
|
||||
make -j
|
||||
make -j test
|
||||
@@ -1,8 +0,0 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
for f in $(find $1 -maxdepth 1 -mindepth 1 -type d)
|
||||
do
|
||||
cmake --build "$f" --target $2 --
|
||||
done
|
||||
@@ -1,34 +0,0 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
project=$(pwd)/
|
||||
|
||||
TARGET=$1
|
||||
BUILD_TYPE=$2
|
||||
|
||||
if [[ $TARGET == windows ]]; then
|
||||
toolchain="-DCMAKE_TOOLCHAIN_FILE=cmake/modules/Mingw.cmake"
|
||||
elif [[ $TARGET == gba ]]; then
|
||||
toolchain="-DCMAKE_TOOLCHAIN_FILE=cmake/modules/GBA.cmake -DOX_USE_STDLIB=OFF -DCMAKE_INSTALL_PREFIX=$DEVKITARM"
|
||||
fi
|
||||
|
||||
if [[ $BUILD_TYPE == asan ]]; then
|
||||
buildTypeArgs="-DUSE_ASAN=ON -DCMAKE_BUILD_TYPE=Debug"
|
||||
buildDir="build/${TARGET}-asan"
|
||||
elif [[ $BUILD_TYPE == debug ]]; then
|
||||
buildTypeArgs="-DCMAKE_BUILD_TYPE=Debug"
|
||||
buildDir="build/${TARGET}-debug"
|
||||
else
|
||||
buildTypeArgs="-DCMAKE_BUILD_TYPE=Release"
|
||||
buildDir="build/${TARGET}-release"
|
||||
fi
|
||||
|
||||
mkdir -p $buildDir
|
||||
pushd $buildDir
|
||||
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-GNinja \
|
||||
$buildTypeArgs \
|
||||
$toolchain \
|
||||
$project
|
||||
popd
|
||||
+27
-1
@@ -1 +1,27 @@
|
||||
add_subdirectory(ox)
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||
set(OX_OS_WINDOWS TRUE)
|
||||
endif()
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
|
||||
set(OX_OS_FREEBSD TRUE)
|
||||
else()
|
||||
set(OX_OS_FREEBSD FALSE)
|
||||
endif()
|
||||
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
||||
set(OX_OS_LINUX TRUE)
|
||||
else()
|
||||
set(OX_OS_LINUX FALSE)
|
||||
endif()
|
||||
|
||||
if(OX_USE_STDLIB)
|
||||
add_subdirectory(oc)
|
||||
endif()
|
||||
add_subdirectory(clargs)
|
||||
add_subdirectory(claw)
|
||||
add_subdirectory(event)
|
||||
add_subdirectory(fs)
|
||||
add_subdirectory(logconn)
|
||||
add_subdirectory(mc)
|
||||
add_subdirectory(model)
|
||||
add_subdirectory(preloader)
|
||||
add_subdirectory(std)
|
||||
|
||||
@@ -7,7 +7,7 @@ endif()
|
||||
|
||||
add_library(
|
||||
OxClArgs
|
||||
clargs.cpp
|
||||
src/clargs.cpp
|
||||
)
|
||||
|
||||
set_property(
|
||||
@@ -27,11 +27,16 @@ target_link_libraries(
|
||||
OxStd
|
||||
)
|
||||
|
||||
target_include_directories(
|
||||
OxClArgs PUBLIC
|
||||
include
|
||||
)
|
||||
|
||||
install(
|
||||
FILES
|
||||
clargs.hpp
|
||||
DIRECTORY
|
||||
include/ox
|
||||
DESTINATION
|
||||
include/ox/clargs
|
||||
include
|
||||
)
|
||||
|
||||
install(
|
||||
@@ -7,7 +7,7 @@
|
||||
*/
|
||||
|
||||
#include <ox/std/string.hpp>
|
||||
#include "clargs.hpp"
|
||||
#include <ox/clargs/clargs.hpp>
|
||||
|
||||
namespace ox {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
|
||||
add_library(
|
||||
OxClaw
|
||||
read.cpp
|
||||
write.cpp
|
||||
src/read.cpp
|
||||
src/write.cpp
|
||||
)
|
||||
|
||||
if(NOT MSVC)
|
||||
@@ -27,9 +27,22 @@ target_link_libraries(
|
||||
# )
|
||||
#endif()
|
||||
|
||||
install(TARGETS OxClaw
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
target_include_directories(
|
||||
OxClaw PUBLIC
|
||||
include
|
||||
)
|
||||
|
||||
install(
|
||||
DIRECTORY
|
||||
include/ox
|
||||
DESTINATION
|
||||
include
|
||||
)
|
||||
|
||||
install(
|
||||
TARGETS OxClaw
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
)
|
||||
|
||||
if(OX_RUN_TESTS)
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
#include <ox/std/buffer.hpp>
|
||||
|
||||
#include "read.hpp"
|
||||
#include <ox/claw/read.hpp>
|
||||
|
||||
namespace ox {
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
#include "write.hpp"
|
||||
#include <ox/claw/write.hpp>
|
||||
|
||||
namespace ox::detail {
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
add_library(
|
||||
OxEvent
|
||||
src/signal.cpp
|
||||
)
|
||||
|
||||
if(NOT MSVC)
|
||||
target_compile_options(OxEvent PRIVATE -Wsign-conversion)
|
||||
target_compile_options(OxEvent PRIVATE -Wconversion)
|
||||
endif()
|
||||
|
||||
if(NOT OX_BARE_METAL)
|
||||
set_property(
|
||||
TARGET
|
||||
OxEvent
|
||||
PROPERTY
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
)
|
||||
endif()
|
||||
|
||||
target_compile_definitions(
|
||||
OxEvent PUBLIC
|
||||
$<$<BOOL:${OX_USE_STDLIB}>:OX_USE_STDLIB>
|
||||
$<$<BOOL:${OX_NODEBUG}>:OX_NODEBUG>
|
||||
)
|
||||
|
||||
target_link_libraries(
|
||||
OxEvent PUBLIC
|
||||
OxStd
|
||||
)
|
||||
|
||||
target_include_directories(
|
||||
OxEvent PUBLIC
|
||||
include
|
||||
)
|
||||
|
||||
install(
|
||||
DIRECTORY
|
||||
include/ox
|
||||
DESTINATION
|
||||
include
|
||||
)
|
||||
|
||||
install(
|
||||
TARGETS OxEvent
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
)
|
||||
|
||||
if(OX_RUN_TESTS)
|
||||
add_subdirectory(test)
|
||||
endif()
|
||||
@@ -6,7 +6,7 @@
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
#include "signal.hpp"
|
||||
#include <ox/event/signal.hpp>
|
||||
|
||||
namespace ox {
|
||||
|
||||
@@ -5,14 +5,12 @@ endif()
|
||||
|
||||
add_library(
|
||||
OxFS
|
||||
ptrarith/nodebuffer.hpp
|
||||
ptrarith/ptr.hpp
|
||||
filestore/filestoretemplate.cpp
|
||||
filesystem/filelocation.cpp
|
||||
filesystem/pathiterator.cpp
|
||||
filesystem/directory.cpp
|
||||
filesystem/filesystem.cpp
|
||||
filesystem/passthroughfs.cpp
|
||||
src/filestore/filestoretemplate.cpp
|
||||
src/filesystem/filelocation.cpp
|
||||
src/filesystem/pathiterator.cpp
|
||||
src/filesystem/directory.cpp
|
||||
src/filesystem/filesystem.cpp
|
||||
src/filesystem/passthroughfs.cpp
|
||||
)
|
||||
|
||||
if(NOT MSVC)
|
||||
@@ -33,10 +31,22 @@ target_link_libraries(
|
||||
OxMetalClaw
|
||||
)
|
||||
|
||||
target_include_directories(
|
||||
OxFS PUBLIC
|
||||
include
|
||||
)
|
||||
|
||||
install(
|
||||
DIRECTORY
|
||||
include/ox
|
||||
DESTINATION
|
||||
include
|
||||
)
|
||||
|
||||
if(NOT OX_BARE_METAL)
|
||||
add_executable(
|
||||
oxfs-tool
|
||||
tool.cpp
|
||||
src/tool.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(
|
||||
@@ -52,29 +62,6 @@ if(NOT OX_BARE_METAL)
|
||||
)
|
||||
endif()
|
||||
|
||||
install(
|
||||
FILES
|
||||
filestore/filestoretemplate.hpp
|
||||
DESTINATION
|
||||
include/ox/fs/filestore
|
||||
)
|
||||
|
||||
install(
|
||||
FILES
|
||||
filesystem/filesystem.hpp
|
||||
filesystem/pathiterator.hpp
|
||||
DESTINATION
|
||||
include/ox/fs/filesystem
|
||||
)
|
||||
|
||||
install(
|
||||
FILES
|
||||
ptrarith/nodebuffer.hpp
|
||||
ptrarith/ptr.hpp
|
||||
DESTINATION
|
||||
include/ox/fs/ptrarith
|
||||
)
|
||||
|
||||
install(
|
||||
TARGETS
|
||||
OxFS
|
||||
+1
-1
@@ -6,7 +6,7 @@
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
#include "filestoretemplate.hpp"
|
||||
#include <ox/fs/filestore/filestoretemplate.hpp>
|
||||
|
||||
namespace ox {
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
#include "directory.hpp"
|
||||
#include <ox/fs/filesystem/directory.hpp>
|
||||
|
||||
namespace ox {
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
#include <ox/model/modelops.hpp>
|
||||
|
||||
#include "filelocation.hpp"
|
||||
#include <ox/fs/filesystem/filelocation.hpp>
|
||||
|
||||
namespace ox {
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#include <ox/std/error.hpp>
|
||||
#include <ox/std/utility.hpp>
|
||||
|
||||
#include "filesystem.hpp"
|
||||
#include <ox/fs/filesystem/filesystem.hpp>
|
||||
|
||||
namespace ox {
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
#include <ox/std/error.hpp>
|
||||
|
||||
#include "passthroughfs.hpp"
|
||||
#include <ox/fs/filesystem/passthroughfs.hpp>
|
||||
|
||||
#if defined(OX_HAS_PASSTHROUGHFS)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#include <ox/std/memops.hpp>
|
||||
#include <ox/std/strops.hpp>
|
||||
#include <ox/std/trace.hpp>
|
||||
#include "pathiterator.hpp"
|
||||
#include <ox/fs/filesystem/pathiterator.hpp>
|
||||
|
||||
OX_CLANG_NOWARN_BEGIN(-Wunsafe-buffer-usage)
|
||||
|
||||
@@ -38,17 +38,6 @@ const std::map<ox::StringView, std::function<ox::Error(ox::StringView)>> tests =
|
||||
auto a1 = buffer->malloc(sizeof(String)).value;
|
||||
auto a2 = buffer->malloc(sizeof(String)).value;
|
||||
oxAssert(a1.valid(), "Allocation 1 failed.");
|
||||
oxAssert(a2.valid(), "Allocation 2 failed.");
|
||||
auto s1Buff = buffer->dataOf<String>(a1);
|
||||
auto s2Buff = buffer->dataOf<String>(a2);
|
||||
oxAssert(s1Buff.valid(), "s1 allocation 1 failed.");
|
||||
oxAssert(s2Buff.valid(), "s2 allocation 2 failed.");
|
||||
auto &s1 = *new (s1Buff) String("asdf");
|
||||
auto &s2 = *new (s2Buff) String("aoeu");
|
||||
oxTrace("test") << "s1: " << s1.c_str();
|
||||
oxTrace("test") << "s2: " << s2.c_str();
|
||||
oxAssert(s1 == "asdf", "Allocation 1 not as expected.");
|
||||
oxAssert(s2 == "aoeu", "Allocation 2 not as expected.");
|
||||
oxAssert(buffer->free(a1), "Free failed.");
|
||||
oxAssert(buffer->free(a2), "Free failed.");
|
||||
oxAssert(buffer->setSize(buffer->size() - buffer->available()), "Resize failed.");
|
||||
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.10)
|
||||
|
||||
add_library(
|
||||
OxLogConn
|
||||
logconn.cpp
|
||||
src/logconn.cpp
|
||||
)
|
||||
|
||||
set_property(
|
||||
@@ -24,12 +24,16 @@ target_link_libraries(
|
||||
$<$<BOOL:${OX_OS_WINDOWS}>:ws2_32>
|
||||
)
|
||||
|
||||
target_include_directories(
|
||||
OxLogConn PUBLIC
|
||||
include
|
||||
)
|
||||
|
||||
install(
|
||||
FILES
|
||||
circularbuff.hpp
|
||||
logconn.hpp
|
||||
DIRECTORY
|
||||
include/ox
|
||||
DESTINATION
|
||||
include/ox/logconn
|
||||
include
|
||||
)
|
||||
|
||||
install(
|
||||
@@ -6,7 +6,9 @@
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
#ifdef OX_USE_STDLIB
|
||||
#include <ox/std/defines.hpp>
|
||||
|
||||
#ifndef OX_OS_BareMetal
|
||||
#include <cstdio>
|
||||
|
||||
#ifndef _WIN32
|
||||
@@ -23,7 +25,7 @@
|
||||
#endif
|
||||
|
||||
|
||||
#include "logconn.hpp"
|
||||
#include <ox/logconn/logconn.hpp>
|
||||
|
||||
|
||||
namespace ox {
|
||||
@@ -1,7 +1,7 @@
|
||||
add_library(
|
||||
OxMetalClaw
|
||||
read.cpp
|
||||
write.cpp
|
||||
src/read.cpp
|
||||
src/write.cpp
|
||||
)
|
||||
|
||||
if(NOT MSVC)
|
||||
@@ -24,22 +24,22 @@ if(NOT OX_BARE_METAL)
|
||||
)
|
||||
endif()
|
||||
|
||||
install(
|
||||
FILES
|
||||
intops.hpp
|
||||
err.hpp
|
||||
mc.hpp
|
||||
presenceindicator.hpp
|
||||
read.hpp
|
||||
types.hpp
|
||||
write.hpp
|
||||
DESTINATION
|
||||
include/ox/mc
|
||||
target_include_directories(
|
||||
OxMetalClaw PUBLIC
|
||||
include
|
||||
)
|
||||
|
||||
install(TARGETS OxMetalClaw
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
install(
|
||||
DIRECTORY
|
||||
include/ox
|
||||
DESTINATION
|
||||
include
|
||||
)
|
||||
|
||||
install(
|
||||
TARGETS OxMetalClaw
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
)
|
||||
|
||||
if(OX_RUN_TESTS)
|
||||
@@ -44,15 +44,7 @@ class MetalClawWriter: public ModelHandlerBase<MetalClawWriter<Writer>, OpType::
|
||||
|
||||
constexpr ~MetalClawWriter() noexcept = default;
|
||||
|
||||
constexpr Error field(CString, int8_t const *val) noexcept;
|
||||
constexpr Error field(CString, int16_t const *val) noexcept;
|
||||
constexpr Error field(CString, int32_t const *val) noexcept;
|
||||
constexpr Error field(CString, int64_t const *val) noexcept;
|
||||
|
||||
constexpr Error field(CString, uint8_t const *val) noexcept;
|
||||
constexpr Error field(CString, uint16_t const *val) noexcept;
|
||||
constexpr Error field(CString, uint32_t const *val) noexcept;
|
||||
constexpr Error field(CString, uint64_t const *val) noexcept;
|
||||
constexpr Error field(CString, Integer_c auto const *val) noexcept;
|
||||
|
||||
constexpr Error field(CString, bool const *val) noexcept;
|
||||
|
||||
@@ -133,42 +125,7 @@ constexpr MetalClawWriter<Writer>::MetalClawWriter(Writer &writer, Optional<int>
|
||||
}
|
||||
|
||||
template<Writer_c Writer>
|
||||
constexpr Error MetalClawWriter<Writer>::field(CString, int8_t const *val) noexcept {
|
||||
return appendInteger(*val);
|
||||
}
|
||||
|
||||
template<Writer_c Writer>
|
||||
constexpr Error MetalClawWriter<Writer>::field(CString, int16_t const *val) noexcept {
|
||||
return appendInteger(*val);
|
||||
}
|
||||
|
||||
template<Writer_c Writer>
|
||||
constexpr Error MetalClawWriter<Writer>::field(CString, int32_t const *val) noexcept {
|
||||
return appendInteger(*val);
|
||||
}
|
||||
|
||||
template<Writer_c Writer>
|
||||
constexpr Error MetalClawWriter<Writer>::field(CString, int64_t const *val) noexcept {
|
||||
return appendInteger(*val);
|
||||
}
|
||||
|
||||
template<Writer_c Writer>
|
||||
constexpr Error MetalClawWriter<Writer>::field(CString, uint8_t const *val) noexcept {
|
||||
return appendInteger(*val);
|
||||
}
|
||||
|
||||
template<Writer_c Writer>
|
||||
constexpr Error MetalClawWriter<Writer>::field(CString, uint16_t const *val) noexcept {
|
||||
return appendInteger(*val);
|
||||
}
|
||||
|
||||
template<Writer_c Writer>
|
||||
constexpr Error MetalClawWriter<Writer>::field(CString, uint32_t const *val) noexcept {
|
||||
return appendInteger(*val);
|
||||
}
|
||||
|
||||
template<Writer_c Writer>
|
||||
constexpr Error MetalClawWriter<Writer>::field(CString, uint64_t const *val) noexcept {
|
||||
constexpr Error MetalClawWriter<Writer>::field(CString, Integer_c auto const *val) noexcept {
|
||||
return appendInteger(*val);
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#include <ox/std/buffer.hpp>
|
||||
#include <ox/std/reader.hpp>
|
||||
|
||||
#include "read.hpp"
|
||||
#include <ox/mc/read.hpp>
|
||||
|
||||
namespace ox {
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
#include <ox/std/memops.hpp>
|
||||
#include <ox/std/trace.hpp>
|
||||
|
||||
#include "write.hpp"
|
||||
#include <ox/mc/write.hpp>
|
||||
|
||||
namespace ox {
|
||||
|
||||
@@ -43,14 +43,14 @@ struct TestStruct {
|
||||
int32_t Int6 = 0;
|
||||
int32_t Int7 = 0;
|
||||
int32_t Int8 = 0;
|
||||
int unionIdx = 1;
|
||||
int32_t unionIdx = 1;
|
||||
TestUnion Union;
|
||||
ox::String String;
|
||||
ox::IString<32> IString = "";
|
||||
uint32_t List[4] = {0, 0, 0, 0};
|
||||
ox::Vector<uint32_t> Vector = {1, 2, 3, 4, 5};
|
||||
ox::Vector<uint32_t> Vector2 = {1, 2, 3, 4, 5};
|
||||
ox::HashMap<ox::String, int> Map;
|
||||
ox::HashMap<ox::String, int32_t> Map;
|
||||
TestStructNest EmptyStruct;
|
||||
TestStructNest Struct;
|
||||
constexpr ~TestStruct() noexcept {
|
||||
@@ -204,7 +204,8 @@ std::map<ox::StringView, ox::Error(*)()> tests = {
|
||||
std::cout << "val.length: " << val.length << '\n';
|
||||
return ox::Error(1);
|
||||
}
|
||||
ox::LittleEndian<decltype(expected)> decoded = *reinterpret_cast<decltype(expected)*>(&val.data[1]);
|
||||
ox::LittleEndian<decltype(expected)> decoded;
|
||||
ox::memcpy(&decoded, &val.data[1], sizeof(decoded));
|
||||
if (expected != decoded) {
|
||||
std::cout << "decoded: " << decoded << ", expected: " << expected << '\n';
|
||||
return ox::Error(1);
|
||||
@@ -370,7 +371,7 @@ std::map<ox::StringView, ox::Error(*)()> tests = {
|
||||
const auto [type, typeErr] = ox::buildTypeDef(typeStore, testIn);
|
||||
oxAssert(typeErr, "Descriptor write failed");
|
||||
ox::BufferReader br({dataBuff, dataBuffLen});
|
||||
OX_RETURN_ERROR(ox::walkModel<ox::MetalClawReader>(type, br,
|
||||
return ox::walkModel<ox::MetalClawReader>(type, br,
|
||||
[](const ox::Vector<ox::FieldName>&, const ox::Vector<ox::String>&, const ox::DescriptorField &f, ox::MetalClawReader *rdr) -> ox::Error {
|
||||
//std::cout << f.fieldName.c_str() << '\n';
|
||||
auto fieldName = f.fieldName.c_str();
|
||||
@@ -455,8 +456,7 @@ std::map<ox::StringView, ox::Error(*)()> tests = {
|
||||
}
|
||||
return ox::Error(0);
|
||||
}
|
||||
));
|
||||
return ox::Error(0);
|
||||
);
|
||||
}
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
add_library(
|
||||
OxModel
|
||||
src/desctypes.cpp
|
||||
src/descwrite.cpp
|
||||
src/modelvalue.cpp
|
||||
)
|
||||
|
||||
if(NOT MSVC)
|
||||
target_compile_options(OxModel PRIVATE -Wconversion)
|
||||
target_compile_options(OxModel PRIVATE -Wsign-conversion)
|
||||
endif()
|
||||
|
||||
target_link_libraries(
|
||||
OxModel PUBLIC
|
||||
OxStd
|
||||
)
|
||||
|
||||
if(NOT OX_BARE_METAL)
|
||||
set_property(
|
||||
TARGET
|
||||
OxModel
|
||||
PROPERTY
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
)
|
||||
endif()
|
||||
|
||||
target_link_libraries(
|
||||
OxModel PUBLIC
|
||||
OxStd
|
||||
)
|
||||
|
||||
target_include_directories(
|
||||
OxModel PUBLIC
|
||||
include
|
||||
)
|
||||
|
||||
install(
|
||||
TARGETS OxModel
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
)
|
||||
|
||||
if(OX_RUN_TESTS)
|
||||
add_subdirectory(test)
|
||||
endif()
|
||||
@@ -0,0 +1,7 @@
|
||||
<Type> : <TypeName><FieldList>
|
||||
<FieldList> : <FieldList> | <FieldList><Field>
|
||||
<Field> : <FieldType><TypeID><FieldName>
|
||||
<TypeID> : <TypeName> | <TypeName><Type>
|
||||
<TypeName> : <string>
|
||||
<FieldType> : <0: single> | <1: list>
|
||||
<FieldName> : <string>
|
||||
@@ -126,22 +126,7 @@ class TypeDescWriter {
|
||||
|
||||
private:
|
||||
[[nodiscard]]
|
||||
constexpr const DescriptorType *type(const int8_t *val) const noexcept;
|
||||
[[nodiscard]]
|
||||
constexpr const DescriptorType *type(const int16_t *val) const noexcept;
|
||||
[[nodiscard]]
|
||||
constexpr const DescriptorType *type(const int32_t *val) const noexcept;
|
||||
[[nodiscard]]
|
||||
constexpr const DescriptorType *type(const int64_t *val) const noexcept;
|
||||
|
||||
[[nodiscard]]
|
||||
constexpr const DescriptorType *type(const uint8_t *val) const noexcept;
|
||||
[[nodiscard]]
|
||||
constexpr const DescriptorType *type(const uint16_t *val) const noexcept;
|
||||
[[nodiscard]]
|
||||
constexpr const DescriptorType *type(const uint32_t *val) const noexcept;
|
||||
[[nodiscard]]
|
||||
constexpr const DescriptorType *type(const uint64_t *val) const noexcept;
|
||||
constexpr const DescriptorType *type(const Integer_c auto *val) const noexcept;
|
||||
|
||||
[[nodiscard]]
|
||||
constexpr const DescriptorType *type(const bool *val) const noexcept;
|
||||
@@ -295,52 +280,26 @@ constexpr const DescriptorType *TypeDescWriter::type(UnionView<U> val) const noe
|
||||
return t;
|
||||
}
|
||||
|
||||
constexpr const DescriptorType *TypeDescWriter::type(const int8_t*) const noexcept {
|
||||
constexpr auto PT = PrimitiveType::SignedInteger;
|
||||
constexpr auto Bytes = 1;
|
||||
return getType(types::Int8, 0, PT, Bytes);
|
||||
}
|
||||
|
||||
constexpr const DescriptorType *TypeDescWriter::type(const int16_t*) const noexcept {
|
||||
constexpr auto PT = PrimitiveType::SignedInteger;
|
||||
constexpr auto Bytes = 2;
|
||||
return getType(types::Int16, 0, PT, Bytes);
|
||||
}
|
||||
|
||||
constexpr const DescriptorType *TypeDescWriter::type(const int32_t*) const noexcept {
|
||||
constexpr auto PT = PrimitiveType::SignedInteger;
|
||||
constexpr auto Bytes = 4;
|
||||
return getType(types::Int32, 0, PT, Bytes);
|
||||
}
|
||||
|
||||
constexpr const DescriptorType *TypeDescWriter::type(const int64_t*) const noexcept {
|
||||
constexpr auto PT = PrimitiveType::SignedInteger;
|
||||
constexpr auto Bytes = 8;
|
||||
return getType(types::Int64, 0, PT, Bytes);
|
||||
}
|
||||
|
||||
constexpr const DescriptorType *TypeDescWriter::type(const uint8_t*) const noexcept {
|
||||
constexpr auto PT = PrimitiveType::UnsignedInteger;
|
||||
constexpr auto Bytes = 1;
|
||||
return getType(types::Uint8, 0, PT, Bytes);
|
||||
}
|
||||
|
||||
constexpr const DescriptorType *TypeDescWriter::type(const uint16_t*) const noexcept {
|
||||
constexpr auto PT = PrimitiveType::UnsignedInteger;
|
||||
constexpr auto Bytes = 2;
|
||||
return getType(types::Uint16, 0, PT, Bytes);
|
||||
}
|
||||
|
||||
constexpr const DescriptorType *TypeDescWriter::type(const uint32_t*) const noexcept {
|
||||
constexpr auto PT = PrimitiveType::UnsignedInteger;
|
||||
constexpr auto Bytes = 4;
|
||||
return getType(types::Uint32, 0, PT, Bytes);
|
||||
}
|
||||
|
||||
constexpr const DescriptorType *TypeDescWriter::type(const uint64_t*) const noexcept {
|
||||
constexpr auto PT = PrimitiveType::UnsignedInteger;
|
||||
constexpr auto Bytes = 8;
|
||||
return getType(types::Uint64, 0, PT, Bytes);
|
||||
constexpr const DescriptorType *TypeDescWriter::type(Integer_c auto const *val) const noexcept {
|
||||
constexpr auto isSigned = ox::is_signed_v<decltype(*val)>;
|
||||
constexpr auto PT = isSigned ?
|
||||
PrimitiveType::SignedInteger :
|
||||
PrimitiveType::UnsignedInteger;
|
||||
constexpr auto sz = sizeof(*val);
|
||||
constexpr auto bytes = sizeof(*val);
|
||||
return getType([] {
|
||||
switch (sz) {
|
||||
case 1:
|
||||
return isSigned ? types::Int8 : types::Uint8;
|
||||
case 2:
|
||||
return isSigned ? types::Int16 : types::Uint16;
|
||||
case 4:
|
||||
return isSigned ? types::Int32 : types::Uint32;
|
||||
case 8:
|
||||
return isSigned ? types::Int64 : types::Uint64;
|
||||
}
|
||||
return types::Int32;
|
||||
}(), 0, PT, bytes);
|
||||
}
|
||||
|
||||
constexpr const DescriptorType *TypeDescWriter::type(const bool*) const noexcept {
|
||||
@@ -6,7 +6,7 @@
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
#include "desctypes.hpp"
|
||||
#include <ox/model/desctypes.hpp>
|
||||
|
||||
namespace ox {
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
#include "descwrite.hpp"
|
||||
#include <ox/model/descwrite.hpp>
|
||||
|
||||
namespace ox {
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
#include <ox/std/hashmap.hpp>
|
||||
|
||||
#include "modelvalue.hpp"
|
||||
#include <ox/model/modelvalue.hpp>
|
||||
|
||||
namespace ox {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
add_library(
|
||||
OxOrganicClaw
|
||||
read.cpp
|
||||
write.cpp
|
||||
src/read.cpp
|
||||
src/write.cpp
|
||||
)
|
||||
|
||||
if(NOT MSVC)
|
||||
@@ -27,18 +27,22 @@ set_property(
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
)
|
||||
|
||||
install(
|
||||
FILES
|
||||
oc.hpp
|
||||
read.hpp
|
||||
write.hpp
|
||||
DESTINATION
|
||||
include/ox/oc
|
||||
target_include_directories(
|
||||
OxOrganicClaw PUBLIC
|
||||
include
|
||||
)
|
||||
|
||||
install(TARGETS OxOrganicClaw
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
install(
|
||||
DIRECTORY
|
||||
include/ox
|
||||
DESTINATION
|
||||
include
|
||||
)
|
||||
|
||||
install(
|
||||
TARGETS OxOrganicClaw
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
)
|
||||
|
||||
if(OX_RUN_TESTS)
|
||||
@@ -59,7 +59,7 @@ class OrganicClawWriter {
|
||||
|
||||
Error field(CString const key, int32_t const *val) noexcept {
|
||||
if (targetValid() && (*val || m_json.isArray())) {
|
||||
value(key) = *val;
|
||||
value(key) = static_cast<Json::Int>(*val);
|
||||
}
|
||||
++m_fieldIt;
|
||||
return {};
|
||||
@@ -92,7 +92,7 @@ class OrganicClawWriter {
|
||||
|
||||
Error field(CString const key, uint32_t const *val) noexcept {
|
||||
if (targetValid() && (*val || m_json.isArray())) {
|
||||
value(key) = *val;
|
||||
value(key) = static_cast<Json::UInt>(*val);
|
||||
}
|
||||
++m_fieldIt;
|
||||
return {};
|
||||
@@ -221,9 +221,9 @@ Error OrganicClawWriter::field(CString key, T const *val) noexcept {
|
||||
// the int type needs to be normalized because jsoncpp doesn't
|
||||
// factor in every permutation unsigned long, etc.
|
||||
if constexpr(is_signed_v<T>) {
|
||||
value(key) = static_cast<Int<8 * sizeof(*val)>>(*val);
|
||||
value(key) = static_cast<Json::Int64>(*val);
|
||||
} else {
|
||||
value(key) = static_cast<Uint<8 * sizeof(*val)>>(*val);
|
||||
value(key) = static_cast<Json::UInt64>(*val);
|
||||
}
|
||||
}
|
||||
} else if constexpr(isVector_v<T> || isArray_v<T>) {
|
||||
@@ -9,7 +9,7 @@
|
||||
#include <ox/std/bit.hpp>
|
||||
#include <utility>
|
||||
|
||||
#include "read.hpp"
|
||||
#include <ox/oc/read.hpp>
|
||||
|
||||
namespace ox {
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
#include "write.hpp"
|
||||
#include <ox/oc/write.hpp>
|
||||
|
||||
namespace ox {
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||
set(OX_OS_WINDOWS TRUE)
|
||||
endif()
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
|
||||
set(OX_OS_FREEBSD TRUE)
|
||||
else()
|
||||
set(OX_OS_FREEBSD FALSE)
|
||||
endif()
|
||||
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
||||
set(OX_OS_LINUX TRUE)
|
||||
else()
|
||||
set(OX_OS_LINUX FALSE)
|
||||
endif()
|
||||
|
||||
if(OX_USE_STDLIB)
|
||||
add_subdirectory(oc)
|
||||
endif()
|
||||
add_subdirectory(clargs)
|
||||
add_subdirectory(claw)
|
||||
add_subdirectory(event)
|
||||
add_subdirectory(fs)
|
||||
add_subdirectory(logconn)
|
||||
add_subdirectory(mc)
|
||||
add_subdirectory(model)
|
||||
add_subdirectory(preloader)
|
||||
add_subdirectory(std)
|
||||
@@ -1,46 +0,0 @@
|
||||
add_library(
|
||||
OxEvent
|
||||
signal.cpp
|
||||
)
|
||||
|
||||
if(NOT MSVC)
|
||||
target_compile_options(OxEvent PRIVATE -Wsign-conversion)
|
||||
target_compile_options(OxEvent PRIVATE -Wconversion)
|
||||
endif()
|
||||
|
||||
if(NOT OX_BARE_METAL)
|
||||
set_property(
|
||||
TARGET
|
||||
OxEvent
|
||||
PROPERTY
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
)
|
||||
endif()
|
||||
|
||||
target_compile_definitions(
|
||||
OxEvent PUBLIC
|
||||
$<$<BOOL:${OX_USE_STDLIB}>:OX_USE_STDLIB>
|
||||
$<$<BOOL:${OX_NODEBUG}>:OX_NODEBUG>
|
||||
)
|
||||
|
||||
target_link_libraries(
|
||||
OxEvent PUBLIC
|
||||
OxStd
|
||||
)
|
||||
|
||||
install(
|
||||
FILES
|
||||
event.hpp
|
||||
signal.hpp
|
||||
DESTINATION
|
||||
include/ox/event
|
||||
)
|
||||
|
||||
install(TARGETS OxEvent
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
)
|
||||
|
||||
if(OX_RUN_TESTS)
|
||||
add_subdirectory(test)
|
||||
endif()
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user