commit d610030a1dffd79d7d4a9dbfea5d7baa26e27f7f Author: fallenoak Date: Wed Dec 2 18:19:49 2020 -0600 chore: initial commit diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..72547d1 --- /dev/null +++ b/.clang-format @@ -0,0 +1,54 @@ +--- +AccessModifierOffset: 0 +AlignConsecutiveAssignments: false +AlignConsecutiveDeclarations: false +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: false +AllowShortIfStatementsOnASingleLine: Never +AlwaysBreakTemplateDeclarations: Yes +BreakBeforeBraces: Attach +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeComma +ColumnLimit: 0 +CompactNamespaces: false +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: false +DeriveLineEnding: false +DerivePointerAlignment: false +IncludeBlocks: Merge +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + SortPriority: 2 + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + - Regex: "<[[:alnum:].]+>" + Priority: 4 + - Regex: ".*" + Priority: 1 + SortPriority: 0 +IndentGotoLabels: false +IndentWidth: 4 +MaxEmptyLinesToKeep: 1 +ObjCBlockIndentWidth: 4 +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: false +PointerAlignment: Left +SortIncludes: true +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCpp11BracedList: true +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: false +SpacesInAngles: false +SpacesInCStyleCastParentheses: false +SpacesInConditionalStatement: false +Standard: c++11 +TabWidth: 4 +UseCRLF: false +UseTab: Never diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..f74d2c0 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,15 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[cmake/**/*] +indent_size = 4 +indent_style = space + +[system/**/*] +indent_size = 4 +indent_style = space diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5976665 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +.DS_Store +.idea +.vscode + +/build +/dist diff --git a/cmake/system.cmake b/cmake/system.cmake new file mode 100644 index 0000000..7ecabcb --- /dev/null +++ b/cmake/system.cmake @@ -0,0 +1,87 @@ +# Arch defines +if(${CMAKE_SIZEOF_VOID_P} EQUAL 8) + set(WHOA_ARCH_64 1) + add_definitions(-DWHOA_ARCH_64=1) +elseif(${CMAKE_SIZEOF_VOID_P} EQUAL 4) + set(WHOA_ARCH_32 1) + add_definitions(-DWHOA_ARCH_32=1) +endif() + +# System defines +set(WHOA_WIN_UNK 9999) +set(WHOA_WIN_XP 510) +set(WHOA_WIN_VISTA 600) +set(WHOA_WIN_7 610) +set(WHOA_WIN_8 620) +set(WHOA_WIN_8_1 630) +set(WHOA_WIN_10 1000) +set(WHOA_MAC_UNK 9999) +set(WHOA_MAC_10_8 1008) +set(WHOA_MAC_10_9 1009) +set(WHOA_MAC_10_10 1010) +set(WHOA_MAC_10_11 1011) +set(WHOA_MAC_10_12 1012) +set(WHOA_MAC_10_13 1013) +set(WHOA_MAC_10_14 1014) +set(WHOA_MAC_10_15 1015) +set(WHOA_MAC_11_0 1100) +set(WHOA_LINUX_UNK 9999) + +if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") + set(WHOA_SYSTEM_WIN 1) + add_definitions(-DWHOA_SYSTEM_WIN=1) +elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set(WHOA_SYSTEM_MAC 1) + add_definitions(-DWHOA_SYSTEM_MAC=1) +elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + set(WHOA_SYSTEM_LINUX 1) + add_definitions(-DWHOA_SYSTEM_LINUX=1) +endif() + +if(${WHOA_SYSTEM_WIN}) + if(${CMAKE_SYSTEM_VERSION} EQUAL "5.1") + set(WHOA_SYSTEM_VERSION ${WHOA_WIN_XP}) + elseif(${CMAKE_SYSTEM_VERSION} EQUAL "6.0") + set(WHOA_SYSTEM_VERSION ${WHOA_WIN_VISTA}) + elseif(${CMAKE_SYSTEM_VERSION} EQUAL "6.1") + set(WHOA_SYSTEM_VERSION ${WHOA_WIN_7}) + elseif(${CMAKE_SYSTEM_VERSION} EQUAL "6.2") + set(WHOA_SYSTEM_VERSION ${WHOA_WIN_8}) + elseif(${CMAKE_SYSTEM_VERSION} EQUAL "6.3") + set(WHOA_SYSTEM_VERSION ${WHOA_WIN_8_1}) + elseif(${CMAKE_SYSTEM_VERSION} EQUAL "10.0") + set(WHOA_SYSTEM_VERSION ${WHOA_WIN_10}) + else() + set(WHOA_SYSTEM_VERSION ${WHOA_WIN_UNK}) + endif() + + add_definitions(-DWHOA_SYSTEM_VERSION=${WHOA_SYSTEM_VERSION}) +elseif(${WHOA_SYSTEM_MAC}) + if(${CMAKE_SYSTEM_VERSION} EQUAL "10.8") + set(WHOA_SYSTEM_VERSION ${WHOA_MAC_10_8}) + elseif(${CMAKE_SYSTEM_VERSION} EQUAL "10.9") + set(WHOA_SYSTEM_VERSION ${WHOA_MAC_10_9}) + elseif(${CMAKE_SYSTEM_VERSION} EQUAL "10.10") + set(WHOA_SYSTEM_VERSION ${WHOA_MAC_10_10}) + elseif(${CMAKE_SYSTEM_VERSION} EQUAL "10.11") + set(WHOA_SYSTEM_VERSION ${WHOA_MAC_10_11}) + elseif(${CMAKE_SYSTEM_VERSION} EQUAL "10.12") + set(WHOA_SYSTEM_VERSION ${WHOA_MAC_10_12}) + elseif(${CMAKE_SYSTEM_VERSION} EQUAL "10.13") + set(WHOA_SYSTEM_VERSION ${WHOA_MAC_10_13}) + elseif(${CMAKE_SYSTEM_VERSION} EQUAL "10.14") + set(WHOA_SYSTEM_VERSION ${WHOA_MAC_10_14}) + elseif(${CMAKE_SYSTEM_VERSION} EQUAL "10.15") + set(WHOA_SYSTEM_VERSION ${WHOA_MAC_10_15}) + elseif(${CMAKE_SYSTEM_VERSION} EQUAL "11.0") + set(WHOA_SYSTEM_VERSION ${WHOA_MAC_11_0}) + else() + set(WHOA_SYSTEM_VERSION ${WHOA_MAC_UNK}) + endif() + + add_definitions(-DWHOA_SYSTEM_VERSION=${WHOA_SYSTEM_VERSION}) +elseif(${WHOA_SYSTEM_LINUX}) + set(WHOA_SYSTEM_VERSION ${WHOA_LINUX_UNK}) + + add_definitions(-DWHOA_SYSTEM_VERSION=${WHOA_SYSTEM_VERSION}) +endif() diff --git a/script/clang-format-all b/script/clang-format-all new file mode 100755 index 0000000..b67507d --- /dev/null +++ b/script/clang-format-all @@ -0,0 +1,86 @@ +#!/bin/bash +# +# clang-format-all: a tool to run clang-format on an entire project +# Copyright (C) 2016 Evan Klitzke +# +# 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 . + +function usage { + echo "Usage: $0 DIR..." + exit 1 +} + +if [ $# -eq 0 ]; then + usage +fi + +# Variable that will hold the name of the clang-format command +FMT="" + +# Some distros just call it clang-format. Others (e.g. Ubuntu) are insistent +# that the version number be part of the command. We prefer clang-format if +# that's present, otherwise we work backwards from highest version to lowest +# version. +for clangfmt in clang-format{,-{11,10,9,8,7,6,5,4,3}.{9,8,7,6,5,4,3,2,1,0}}; do + if which "$clangfmt" &>/dev/null; then + FMT="$clangfmt" + break + fi +done + +# Check if we found a working clang-format +if [ -z "$FMT" ]; then + echo "failed to find clang-format" + exit 1 +fi + +# Check all of the arguments first to make sure they're all directories +for dir in "$@"; do + if [ ! -d "${dir}" ]; then + echo "${dir} is not a directory" + usage + fi +done + +# Find a dominating file, starting from a given directory and going up. +find-dominating-file() { + if [ -r "$1"/"$2" ]; then + return 0 + fi + if [ "$1" = "/" ]; then + return 1 + fi + find-dominating-file "$(realpath "$1"/..)" "$2" + return $? +} + +# Run clang-format -i on all of the things +for dir in "$@"; do + pushd "${dir}" &>/dev/null + if ! find-dominating-file . .clang-format; then + echo "Failed to find dominating .clang-format starting at $PWD" + continue + fi + find . \ + \( -name '*.c' \ + -o -name '*.cc' \ + -o -name '*.cpp' \ + -o -name '*.m' \ + -o -name '*.mm' \ + -o -name '*.h' \ + -o -name '*.hh' \ + -o -name '*.hpp' \) \ + -exec "${FMT}" -style=file -i '{}' \; + popd &>/dev/null +done diff --git a/system/System.hpp b/system/System.hpp new file mode 100644 index 0000000..76e1566 --- /dev/null +++ b/system/System.hpp @@ -0,0 +1,24 @@ +#ifndef SYSTEM_SYSTEM_HPP +#define SYSTEM_SYSTEM_HPP + +// System versions +#define WHOA_WIN_UNK 9999 +#define WHOA_WIN_XP 510 +#define WHOA_WIN_VISTA 600 +#define WHOA_WIN_7 610 +#define WHOA_WIN_8 620 +#define WHOA_WIN_8_1 630 +#define WHOA_WIN_10 1000 +#define WHOA_MAC_UNK 9999 +#define WHOA_MAC_10_8 1008 +#define WHOA_MAC_10_9 1009 +#define WHOA_MAC_10_10 1010 +#define WHOA_MAC_10_11 1011 +#define WHOA_MAC_10_12 1012 +#define WHOA_MAC_10_13 1013 +#define WHOA_MAC_10_14 1014 +#define WHOA_MAC_10_15 1015 +#define WHOA_MAC_11_0 1100 +#define WHOA_LINUX_UNK 9999 + +#endif