rename octastd to libostd
parent
36332dff40
commit
62676f4222
|
@ -1,4 +1,4 @@
|
||||||
OctaSTD is licensed under the University of Illinois/NCSA Open Source License,
|
Libostd is licensed under the University of Illinois/NCSA Open Source License,
|
||||||
a permissive, non-copyleft, BSD style license. The license text goes as follows:
|
a permissive, non-copyleft, BSD style license. The license text goes as follows:
|
||||||
|
|
||||||
Copyright (c) 2015 Daniel "q66" Kolesa. All rights reserved.
|
Copyright (c) 2015 Daniel "q66" Kolesa. All rights reserved.
|
||||||
|
@ -17,7 +17,7 @@ so, subject to the following conditions:
|
||||||
this list of conditions and the following disclaimers in the
|
this list of conditions and the following disclaimers in the
|
||||||
documentation and/or other materials provided with the distribution.
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
* Neither the names of OctaSTD developers nor any contributors may be
|
* Neither the names of libostd developers nor any contributors may be
|
||||||
used to endorse or promote products derived from this Software without
|
used to endorse or promote products derived from this Software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
# octastd
|
# libostd
|
||||||
|
|
||||||
**Work in progress, not ready for production use.**
|
**Work in progress, not ready for production use.**
|
||||||
|
|
||||||
OctaSTD is an extension of the C++17 standard library which mainly provides
|
Libostd is an extension of the C++17 standard library which mainly provides
|
||||||
ranges (to replace iterators) but also various other utilities like proper
|
ranges (to replace iterators) but also various other utilities like proper
|
||||||
streams, string formatting, coroutines, concurrency utilities and others. It's
|
streams, string formatting, coroutines, concurrency utilities and others. It's
|
||||||
meant to replace the more poorly designed parts of the C++ standard library to
|
meant to replace the more poorly designed parts of the C++ standard library to
|
||||||
|
@ -10,7 +10,7 @@ make the language easier and more convenient to use.
|
||||||
|
|
||||||
It is not feature complete right now, as most things are still being worked on.
|
It is not feature complete right now, as most things are still being worked on.
|
||||||
|
|
||||||
Documentation for OctaSTD can be found at https://docs.octaforge.org/octastd.
|
Documentation for libostd can be found at https://docs.octaforge.org/libostd.
|
||||||
Please refer to it for further information (the main page should be answer
|
Please refer to it for further information (the main page should be answer
|
||||||
some more of your questions). You can also read `doc/main_page.md` and other
|
some more of your questions). You can also read `doc/main_page.md` and other
|
||||||
files in there directly if you don't need the API documentation.
|
files in there directly if you don't need the API documentation.
|
|
@ -32,7 +32,7 @@ DOXYFILE_ENCODING = UTF-8
|
||||||
# title of most generated pages and in a few other places.
|
# title of most generated pages and in a few other places.
|
||||||
# The default value is: My Project.
|
# The default value is: My Project.
|
||||||
|
|
||||||
PROJECT_NAME = "OctaSTD"
|
PROJECT_NAME = "libostd"
|
||||||
|
|
||||||
# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
|
# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
|
||||||
# could be handy for archiving the generated documentation or if some version
|
# could be handy for archiving the generated documentation or if some version
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
# OctaSTD Documentation {#index}
|
# Libostd Documentation {#index}
|
||||||
|
|
||||||
## What is OctaSTD?
|
## What is libostd?
|
||||||
|
|
||||||
OctaSTD is an extension library for C++17. It enhances the standard library
|
Libostd is an extension library for C++17. It enhances the standard library
|
||||||
to make the language easier and more convenient to use. It's based on the
|
to make the language easier and more convenient to use. It's based on the
|
||||||
idea is that everything should do what one would expect it to; it strives
|
idea is that everything should do what one would expect it to; it strives
|
||||||
to aid programmers in writing clean and readable code.
|
to aid programmers in writing clean and readable code.
|
||||||
|
@ -21,20 +21,20 @@ to aid programmers in writing clean and readable code.
|
||||||
|
|
||||||
### Ranges
|
### Ranges
|
||||||
|
|
||||||
OctaSTD started as a range library. Ranges replace iterators; you no longer
|
Libostd started as a range library. Ranges replace iterators; you no longer
|
||||||
need two objects to represent a range and ranges themselves have a clean
|
need two objects to represent a range and ranges themselves have a clean
|
||||||
interface that is easy to adapt for your own thing. Additionally, there is
|
interface that is easy to adapt for your own thing. Additionally, there is
|
||||||
backwards compatibility with iterators, so you can create ranges out of
|
backwards compatibility with iterators, so you can create ranges out of
|
||||||
iterator pairs and even turn a range into an iterator! However, the primary
|
iterator pairs and even turn a range into an iterator! However, the primary
|
||||||
way of creating ranges is using native range types. The compatibility stuff
|
way of creating ranges is using native range types. The compatibility stuff
|
||||||
is there mostly so that OctaSTD can work with existing libraries. Additionally,
|
is there mostly so that libostd can work with existing libraries. Additionally,
|
||||||
a large library of generic range algorithms is provided.
|
a large library of generic range algorithms is provided.
|
||||||
|
|
||||||
For more on ranges, see [Ranges](@ref ranges).
|
For more on ranges, see [Ranges](@ref ranges).
|
||||||
|
|
||||||
### Concurrency
|
### Concurrency
|
||||||
|
|
||||||
OctaSTD is a complete concurrency framework, implementing a clean and
|
Libostd is a complete concurrency framework, implementing a clean and
|
||||||
extensible system for working with logical tasks. It allows for custom
|
extensible system for working with logical tasks. It allows for custom
|
||||||
schedulers and by default implements several scheduling approaches (1:1,
|
schedulers and by default implements several scheduling approaches (1:1,
|
||||||
N:1, M:N). It also implements stackful coroutines (on which the latter
|
N:1, M:N). It also implements stackful coroutines (on which the latter
|
||||||
|
@ -55,9 +55,9 @@ things.
|
||||||
|
|
||||||
### Strings and formatting
|
### Strings and formatting
|
||||||
|
|
||||||
Thanks to ranges, OctaSTD provides very lightweight string slices. The
|
Thanks to ranges, libostd provides very lightweight string slices. The
|
||||||
slices are not zero terminated, so creating sub-slices is fast and avoids
|
slices are not zero terminated, so creating sub-slices is fast and avoids
|
||||||
tons of potential heap allocations. None of the OctaSTD string APIs ever
|
tons of potential heap allocations. None of the libostd string APIs ever
|
||||||
assumes termination.
|
assumes termination.
|
||||||
|
|
||||||
Additionally, a completely type-safe string formatting system with C-like
|
Additionally, a completely type-safe string formatting system with C-like
|
||||||
|
@ -72,7 +72,7 @@ All of this is zero-allocation, it lets the output range take care of that.
|
||||||
|
|
||||||
There are other APIs, too, including environment variable handling, simple
|
There are other APIs, too, including environment variable handling, simple
|
||||||
platform specific checks, a signal-slot event system or vector math. The
|
platform specific checks, a signal-slot event system or vector math. The
|
||||||
amount is expected to grow in the future, as OctaSTD is still a work in
|
amount is expected to grow in the future, as libostd is still a work in
|
||||||
progress.
|
progress.
|
||||||
|
|
||||||
## Why C++17?
|
## Why C++17?
|
||||||
|
@ -80,7 +80,7 @@ progress.
|
||||||
C++17 includes several things that remove previous blockers, such as being
|
C++17 includes several things that remove previous blockers, such as being
|
||||||
able to hash string range types sanely. Additionally, there are several
|
able to hash string range types sanely. Additionally, there are several
|
||||||
language features (such as `if constexpr`) that greatly simplify the code.
|
language features (such as `if constexpr`) that greatly simplify the code.
|
||||||
OctaSTD does not make full use of the standard, so it works with current
|
Libostd does not make full use of the standard, so it works with current
|
||||||
compilers.
|
compilers.
|
||||||
|
|
||||||
## Supported compilers
|
## Supported compilers
|
||||||
|
@ -103,7 +103,7 @@ use GCC/Clang, if you need Visual Studio, LLVM integration exists.
|
||||||
|
|
||||||
## Supported operating systems and architectures
|
## Supported operating systems and architectures
|
||||||
|
|
||||||
OctaSTD targets POSIX compliant operating systems and Windows. Features are
|
Libostd targets POSIX compliant operating systems and Windows. Features are
|
||||||
written with those in mind, and other targets are currently not supported.
|
written with those in mind, and other targets are currently not supported.
|
||||||
|
|
||||||
Tier 1 targets are regularly tested. Tier 2 targets are irregularly tested.
|
Tier 1 targets are regularly tested. Tier 2 targets are irregularly tested.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Ranges {#ranges}
|
# Ranges {#ranges}
|
||||||
|
|
||||||
@brief Ranges are the backbone of OctaSTD iterable objects and algorithms.
|
@brief Ranges are the backbone of libostd iterable objects and algorithms.
|
||||||
|
|
||||||
## What are ranges?
|
## What are ranges?
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ two iterators as an argument.
|
||||||
|
|
||||||
However, a system like this can be both hard to use and hard to deal with in
|
However, a system like this can be both hard to use and hard to deal with in
|
||||||
custom objects, because you suddenly have your state split into two things.
|
custom objects, because you suddenly have your state split into two things.
|
||||||
That's why OctaSTD introduces ranges, inspired by D's range system but largely
|
That's why libostd introduces ranges, inspired by D's range system but largely
|
||||||
designed from scratch for C++.
|
designed from scratch for C++.
|
||||||
|
|
||||||
A range is a type that represents an interval of values. Just like with C++
|
A range is a type that represents an interval of values. Just like with C++
|
||||||
|
@ -19,7 +19,7 @@ iterators, there are several categories of ranges, with each enhancing the
|
||||||
previous in some way.
|
previous in some way.
|
||||||
|
|
||||||
You can use ranges with custom algorithms or standard algorithms that are
|
You can use ranges with custom algorithms or standard algorithms that are
|
||||||
implemented by OctaSTD. You can also iterate any input-type range directly
|
implemented by libostd. You can also iterate any input-type range directly
|
||||||
using the range-based for loop:
|
using the range-based for loop:
|
||||||
|
|
||||||
~~~{.cc}
|
~~~{.cc}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* Algorithms for OctaSTD.
|
/* Algorithms for libostd.
|
||||||
*
|
*
|
||||||
* This file is part of OctaSTD. See COPYING.md for futher information.
|
* This file is part of libostd. See COPYING.md for futher information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef OSTD_ALGORITHM_HH
|
#ifndef OSTD_ALGORITHM_HH
|
||||||
|
|
|
@ -39,7 +39,7 @@ struct channel_error: std::logic_error {
|
||||||
/** @brief A thread-safe message queue.
|
/** @brief A thread-safe message queue.
|
||||||
*
|
*
|
||||||
* A channel is a kind of message queue (FIFO) that is properly synchronized.
|
* A channel is a kind of message queue (FIFO) that is properly synchronized.
|
||||||
* It can be used standalone or it can be used as a part of OctaSTD's
|
* It can be used standalone or it can be used as a part of libostd's
|
||||||
* concurrency system.
|
* concurrency system.
|
||||||
*
|
*
|
||||||
* It stores its internal state in a reference counted manner, so multiple
|
* It stores its internal state in a reference counted manner, so multiple
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* @brief Concurrent/parallel task execution support and related APIs.
|
* @brief Concurrent/parallel task execution support and related APIs.
|
||||||
*
|
*
|
||||||
* OctaSTD provides an elaborate concurrency system that covers multiple
|
* libostd provides an elaborate concurrency system that covers multiple
|
||||||
* schedulers with different characteristics as well as different ways to
|
* schedulers with different characteristics as well as different ways to
|
||||||
* pass data between tasks.
|
* pass data between tasks.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* signals/slots for OctaSTD.
|
/* signals/slots for libostd.
|
||||||
*
|
*
|
||||||
* This file is part of OctaSTD. See COPYING.md for futher information.
|
* This file is part of libostd. See COPYING.md for futher information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef OSTD_EVENT_HH
|
#ifndef OSTD_EVENT_HH
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
/** @addtogroup Extensions
|
/** @addtogroup Extensions
|
||||||
*
|
*
|
||||||
* @brief Various extensions including integration of OctaSTD with other libs.
|
* @brief Various extensions including integration of libostd with other libs.
|
||||||
*
|
*
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @file sdl_rwops.hh
|
/** @file sdl_rwops.hh
|
||||||
*
|
*
|
||||||
* @brief Integration of OctaSTD streams with SDL RWops.
|
* @brief Integration of libostd streams with SDL RWops.
|
||||||
*
|
*
|
||||||
* This provides integration of OctaSTD streams with SDL RWops so that
|
* This provides integration of libostd streams with SDL RWops so that
|
||||||
* various APIs that provide a generic RWops interface to deal with
|
* various APIs that provide a generic RWops interface to deal with
|
||||||
* files can use OctaSTD streams.
|
* files can use libostd streams.
|
||||||
*
|
*
|
||||||
* Supports both SDL1 and SDL2, with SDL2 being default. If you want to
|
* Supports both SDL1 and SDL2, with SDL2 being default. If you want to
|
||||||
* use SDL1 compatibility, define `OSTD_EXT_SDL_USE_SDL1` at build time
|
* use SDL1 compatibility, define `OSTD_EXT_SDL_USE_SDL1` at build time
|
||||||
|
@ -38,7 +38,7 @@ namespace sdl {
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @brief Create an `SDL_RWops` using an OctaSTD stream.
|
/** @brief Create an `SDL_RWops` using an libostd stream.
|
||||||
*
|
*
|
||||||
* The resulting RWops object is created using `SDL_AllocRW()`.
|
* The resulting RWops object is created using `SDL_AllocRW()`.
|
||||||
*
|
*
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
*
|
*
|
||||||
* @brief APIs for type safe formatting using C-style format strings.
|
* @brief APIs for type safe formatting using C-style format strings.
|
||||||
*
|
*
|
||||||
* OctaSTD provides a powerful formatting system that lets you format into
|
* libostd provides a powerful formatting system that lets you format into
|
||||||
* arbitrary output ranges using C-style format strings. It's type safe
|
* arbitrary output ranges using C-style format strings. It's type safe
|
||||||
* and supports custom object formatting without heap allocations as well
|
* and supports custom object formatting without heap allocations as well
|
||||||
* as formatting of ranges, tuples and more.
|
* as formatting of ranges, tuples and more.
|
||||||
|
@ -88,7 +88,7 @@ struct format_spec;
|
||||||
* so for example when someone is formatting into an ostd::appender_range,
|
* so for example when someone is formatting into an ostd::appender_range,
|
||||||
* it will be just that.
|
* it will be just that.
|
||||||
*
|
*
|
||||||
* This may be specialized in other OctaSTD modules as well.
|
* This may be specialized in other libostd modules as well.
|
||||||
*/
|
*/
|
||||||
template<typename>
|
template<typename>
|
||||||
struct format_traits {};
|
struct format_traits {};
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* Windows includes.
|
/* Windows includes.
|
||||||
*
|
*
|
||||||
* This file is part of OctaSTD. See COPYING.md for futher information.
|
* This file is part of libostd. See COPYING.md for futher information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef OSTD_INTERNAL_WIN32_HH
|
#ifndef OSTD_INTERNAL_WIN32_HH
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* Standard I/O implementation for OctaSTD.
|
/* Standard I/O implementation for libostd.
|
||||||
*
|
*
|
||||||
* This file is part of OctaSTD. See COPYING.md for futher information.
|
* This file is part of libostd. See COPYING.md for futher information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef OSTD_IO_HH
|
#ifndef OSTD_IO_HH
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* @brief Abstractions for platform (OS, toolchain) specific code.
|
* @brief Abstractions for platform (OS, toolchain) specific code.
|
||||||
*
|
*
|
||||||
* OctaSTD is not only a simple utility library, it also aims to make writing
|
* libostd is not only a simple utility library, it also aims to make writing
|
||||||
* cross-platform code as simple as possible (while sticking to native features
|
* cross-platform code as simple as possible (while sticking to native features
|
||||||
* and therefore not making your code feel foreign on the platform). This
|
* and therefore not making your code feel foreign on the platform). This
|
||||||
* module represents the base layer to achieve this.
|
* module represents the base layer to achieve this.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* Ranges for OctaSTD.
|
/* Ranges for libostd.
|
||||||
*
|
*
|
||||||
* This file is part of OctaSTD. See COPYING.md for futher information.
|
* This file is part of libostd. See COPYING.md for futher information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef OSTD_RANGE_HH
|
#ifndef OSTD_RANGE_HH
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* Generic stream implementation for OctaSTD.
|
/* Generic stream implementation for libostd.
|
||||||
*
|
*
|
||||||
* This file is part of OctaSTD. See COPYING.md for futher information.
|
* This file is part of libostd. See COPYING.md for futher information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef OSTD_STREAM_HH
|
#ifndef OSTD_STREAM_HH
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* String utilities for OctaSTD.
|
/* String utilities for libostd.
|
||||||
*
|
*
|
||||||
* This file is part of OctaSTD. See COPYING.md for futher information.
|
* This file is part of libostd. See COPYING.md for futher information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef OSTD_STRING_HH
|
#ifndef OSTD_STRING_HH
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* Vector math for OctaSTD.
|
/* Vector math for libostd.
|
||||||
*
|
*
|
||||||
* This file is part of OctaSTD. See COPYING.md for futher information.
|
* This file is part of libostd. See COPYING.md for futher information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef OSTD_VECMATH_HH
|
#ifndef OSTD_VECMATH_HH
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* @brief New containers and extensions to standard containers.
|
* @brief New containers and extensions to standard containers.
|
||||||
*
|
*
|
||||||
* OctaSTD adds various new utilities for standard containers that allow
|
* libostd adds various new utilities for standard containers that allow
|
||||||
* besides other things construction of those containers from ranges.
|
* besides other things construction of those containers from ranges.
|
||||||
*
|
*
|
||||||
* Integration of ranges for iteration is however not necessary because
|
* Integration of ranges for iteration is however not necessary because
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
*Last sync: 82293a2c03ac2571aafa181ea58a67375a13ceb9.*
|
*Last sync: 82293a2c03ac2571aafa181ea58a67375a13ceb9.*
|
||||||
|
|
||||||
This directory contains assembly context switching code for different platforms,
|
This directory contains assembly context switching code for different platforms,
|
||||||
taken from the Boost.Context library and adapted to OctaSTD' needs. The files
|
taken from the Boost.Context library and adapted to libostd's needs. The files
|
||||||
are licensed under the Boost Software License, version 1.0, unless specified
|
are licensed under the Boost Software License, version 1.0, unless specified
|
||||||
otherwise.
|
otherwise.
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* A stub file that includes the right assembly according to the target
|
/* A stub file that includes the right assembly according to the target
|
||||||
* architecture and operating system, for gas only.
|
* architecture and operating system, for gas only.
|
||||||
*
|
*
|
||||||
* This file is a part of OctaSTD, provided to you under the NCSA license.
|
* This file is a part of libostd, provided to you under the NCSA license.
|
||||||
* See the COPYING.md file in the main distribution for further information.
|
* See the COPYING.md file in the main distribution for further information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* A stub file that includes the right assembly according to the target
|
/* A stub file that includes the right assembly according to the target
|
||||||
* architecture and operating system, for gas only.
|
* architecture and operating system, for gas only.
|
||||||
*
|
*
|
||||||
* This file is a part of OctaSTD, provided to you under the NCSA license.
|
* This file is a part of libostd, provided to you under the NCSA license.
|
||||||
* See the COPYING.md file in the main distribution for further information.
|
* See the COPYING.md file in the main distribution for further information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* A stub file that includes the right assembly according to the target
|
/* A stub file that includes the right assembly according to the target
|
||||||
* architecture and operating system, for gas only.
|
* architecture and operating system, for gas only.
|
||||||
*
|
*
|
||||||
* This file is a part of OctaSTD, provided to you under the NCSA license.
|
* This file is a part of libostd, provided to you under the NCSA license.
|
||||||
* See the COPYING.md file in the main distribution for further information.
|
* See the COPYING.md file in the main distribution for further information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* Concurrency C implementation bits.
|
/* Concurrency C implementation bits.
|
||||||
*
|
*
|
||||||
* This file is part of OctaSTD. See COPYING.md for futher information.
|
* This file is part of libostd. See COPYING.md for futher information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ostd/concurrency.hh"
|
#include "ostd/concurrency.hh"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* Stack allocation implementation for coroutine contexts.
|
/* Stack allocation implementation for coroutine contexts.
|
||||||
*
|
*
|
||||||
* This file is part of OctaSTD. See COPYING.md for futher information.
|
* This file is part of libostd. See COPYING.md for futher information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
|
Loading…
Reference in New Issue