<commit_before># oomuse-core

Small core C++ library with essentials that all other oomuse libraries are built on top of. This library is not music-related, so feel free to use it in any C++ project.


## What's in the Core Library?

File or Class | Description
--------------|--------------------------------------------------
[int_types](https://github.com/Lindurion/oomuse-core/blob/master/include/oomuse/core/int_types.h) | Shorter to type aliases like `int32` and `uint64`
[readability_macros](https://github.com/Lindurion/oomuse-core/blob/master/include/oomuse/core/readability_macros.h) | `CANT_COPY(MyClass)`, `CANT_MOVE(MyClass)`, `CALL_MEMBER_FN(obj, fnPtr)`, ...
[FixedArray](https://github.com/Lindurion/oomuse-core/blob/master/include/oomuse/core/FixedArray.h) | Runtime-determined fixed-length array
[Optional](https://github.com/Lindurion/oomuse-core/blob/master/include/oomuse/core/Optional.h) | Optional value that may or may not be present (useful return type)
[Validator](https://github.com/Lindurion/oomuse-core/blob/master/include/oomuse/core/Validator.h), <br> [Validators](https://github.com/Lindurion/oomuse-core/blob/master/include/oomuse/core/Validators.h) | Simple value validation for numeric ranges, non-empty strings, etc.
[strings](https://github.com/Lindurion/oomuse-core/blob/master/include/oomuse/core/strings.h) | Simple string utilities like case conversion and whitespace trimming


## Prerequisites

- A modern C++ compiler toolchain that supports most C++14 language features and libraries. Recommendations:
  - **Windows**: [Microsoft Visual Studio Community 2015](https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx) (make sure to choose custom installation and install support for C++).
  - **Mac**: [Xcode](https://developer.apple.com/xcode/download/), which should install Clang (otherwise see [Xcode Command Line Tools](https://developer.apple.com/library/ios/technotes/tn2339)); or you can directly install the [Clang](http://llvm.org/releases/download.html) compiler.
  - **Linux**: [GCC](https://gcc.gnu.org/) (almost certainly preinstalled) or [Clang](http://llvm.org/releases/download.html).
- A recent version (3.0 or higher) of [CMake](https://cmake.org/download/).
- Build and install [Google Test](https://github.com/google/googletest), the C++ unit testing framework used by oomuse-core. See instructions below.


## Install Google Test

One day, a cross-platform build and dependency management tool will exist supporting C++ projects that makes depending on a library as simple as adding a single line and running one build command. But today is not yet that day&mdash;so for now, you've got to jump through a few hoops to get each dependency installed so that CMake projects (this one and your own if you're depending on oomuse-core from another CMake project) can find and use them.

- Clone the [Google Test](https://github.com/google/googletest) git repo somewhere (_e.g._ `C:\github\googletest` or `~/github/googletest`).
- Create a separate directory to use for building Google Test (_e.g._ `C:\cmakebuild\googletest` or `~/cmakebuild/googletest`).
- Set up a CMake build environment and run `cmake-gui` to customize the output location:<commit_msg>Tweak README for line wrapping<commit_after># oomuse-core

Small core C++ library with essentials that all other oomuse libraries are built on top of. This library is not music-related, so feel free to use it in any C++ project.


## What's in the Core Library?

File or Class | Description
--------------|--------------------------------------------------
[int_types](https://github.com/Lindurion/oomuse-core/blob/master/include/oomuse/core/int_types.h) | Shorter to type aliases like `int32` and `uint64`
[readability_macros](https://github.com/Lindurion/oomuse-core/blob/master/include/oomuse/core/readability_macros.h) | `CANT_COPY(MyClass)`, `CANT_MOVE(MyClass)`, `CALL_MEMBER_FN()`, ...
[FixedArray](https://github.com/Lindurion/oomuse-core/blob/master/include/oomuse/core/FixedArray.h) | Runtime-determined fixed-length array
[Optional](https://github.com/Lindurion/oomuse-core/blob/master/include/oomuse/core/Optional.h) | Optional value that may or may not be present (useful return type)
[Validator](https://github.com/Lindurion/oomuse-core/blob/master/include/oomuse/core/Validator.h), <br> [Validators](https://github.com/Lindurion/oomuse-core/blob/master/include/oomuse/core/Validators.h) | Simple value validation for numeric ranges, non-empty strings, etc.
[strings](https://github.com/Lindurion/oomuse-core/blob/master/include/oomuse/core/strings.h) | Simple string utilities like case conversion and whitespace trimming


## Prerequisites

- A modern C++ compiler toolchain that supports most C++14 language features and libraries. Recommendations:
  - **Windows**: [Microsoft Visual Studio Community 2015](https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx) (make sure to choose custom installation and install support for C++).
  - **Mac**: [Xcode](https://developer.apple.com/xcode/download/), which should install Clang (otherwise see [Xcode Command Line Tools](https://developer.apple.com/library/ios/technotes/tn2339)); or you can directly install the [Clang](http://llvm.org/releases/download.html) compiler.
  - **Linux**: [GCC](https://gcc.gnu.org/) (almost certainly preinstalled) or [Clang](http://llvm.org/releases/download.html).
- A recent version (3.0 or higher) of [CMake](https://cmake.org/download/).
- Build and install [Google Test](https://github.com/google/googletest), the C++ unit testing framework used by oomuse-core. See instructions below.


## Install Google Test

One day, a cross-platform build and dependency management tool will exist supporting C++ projects that makes depending on a library as simple as adding a single line and running one build command. But today is not yet that day&mdash;so for now, you've got to jump through a few hoops to get each dependency installed so that CMake projects (this one and your own if you're depending on oomuse-core from another CMake project) can find and use them.

- Clone the [Google Test](https://github.com/google/googletest) git repo somewhere (_e.g._ `C:\github\googletest` or `~/github/googletest`).
- Create a separate directory to use for building Google Test (_e.g._ `C:\cmakebuild\googletest` or `~/cmakebuild/googletest`).
- Set up a CMake build environment and run `cmake-gui` to customize the output location:
{'fraction_non_alphanumeric': 0.1412254977620003, 'fraction_numerical': 0.004939033801512579, 'mean_word_length': 4.418060200668896, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 28, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 8, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3033005', 'n_tokens_mistral': 1973, 'n_tokens_neox': 1861, 'n_words': 596}