Files
core_make/ReadMe.md
Timothy Prepscius 46185db8f0 flatten 20260225
2026-02-25 12:34:54 -05:00

142 lines
2.1 KiB
Markdown
Executable File

# Core_Zero
Basic foundational classes
## Building
Most of Core_Zero is header-only.
To enable header-only use:
`#define TJP_CORE_HEADER_ONLY`
The entire Core_Zero project will be converted to header only compatible soon.
To build all of the project use these steps.
```
mkdir my_project
cd my_project
git clone http://github.com/timprepscius/Core_Libraries
git clone http://github.com/timprepscius/Core_Zero
git clone http://github.com/timprepscius/Core_Make
cd Core_Zero
make
cd tests
make
.bin/Core_Zero_Tests.exe
```
## How to use
### Locks
```
// ----------------------------------------
// example for locks
// ----------------------------------------
void example_lock_tjp()
{
Mutex mutex;
auto lock = lock_of(mutex);
do_something();
auto should_send_signal = true;
if (should_send_signal)
{
auto unlock = unlock_of(mutex);
do_something();
}
}
// using std
void example_lock_cpp()
{
std::mutex mutex;
std::lock_guard<std::mutex> lock(mutex);
do_something();
auto should_send_signal = true;
if (should_send_signal)
{
try
{
mutex.unlock();
do_something();
mutex.lock();
}
catch (...)
{
mutex.lock();
}
}
}
```
### Maps
```
// ----------------------------------------
// example for maps
// ----------------------------------------
void example_map_tjp()
{
Map<int, int> map;
if (auto value = map_value(map, 42))
do_something_with(*value);
if (auto value = map_value_erase(map, 42))
do_something_with(*value);
}
// using std
void example_map_cpp()
{
std::map<int, int> map;
auto i = map.find(42);
if (i != map.end())
{
do_something_with(*i);
}
auto j = map.find(42);
if (j != map.end())
{
auto v = std::move(j->second);
map.erase(j);
do_something_with(v);
}
}
```
### Range iteration
```
// ----------------------------------------
// example for range
// ----------------------------------------
void example_range_tjp()
{
for (auto i: range(42))
do_something_with(i);
}
// using std
void example_range_cpp()
{
for (auto k=0; k<42; ++k)
do_something_with(k);
}
```
### Other examples
Look at `Core_Zero/Examples.cpp` for more examples on how to use this library.