chore: initial commit

This commit is contained in:
fallenoak 2020-12-02 18:19:49 -06:00
commit d610030a1d
No known key found for this signature in database
GPG key ID: 7628F8E61AEA070D
6 changed files with 272 additions and 0 deletions

54
.clang-format Normal file
View file

@ -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

15
.editorconfig Normal file
View file

@ -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

6
.gitignore vendored Normal file
View file

@ -0,0 +1,6 @@
.DS_Store
.idea
.vscode
/build
/dist

87
cmake/system.cmake Normal file
View file

@ -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()

86
script/clang-format-all Executable file
View file

@ -0,0 +1,86 @@
#!/bin/bash
#
# clang-format-all: a tool to run clang-format on an entire project
# Copyright (C) 2016 Evan Klitzke <evan@eklitzke.org>
#
# 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 <http://www.gnu.org/licenses/>.
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

24
system/System.hpp Normal file
View file

@ -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