[*] Readme while I work on network
This commit is contained in:
parent
c826df484e
commit
395dd0aa97
49
README.md
49
README.md
@ -131,7 +131,7 @@ SysPushError[EFailureCategory shorthand] can be used to include additional side-
|
|||||||
information about the execution of a program. SysPushError_(...) takes a string format sequence and
|
information about the execution of a program. SysPushError_(...) takes a string format sequence and
|
||||||
a variadic sequence of substitute values - or no arguments whatsoever.
|
a variadic sequence of substitute values - or no arguments whatsoever.
|
||||||
|
|
||||||
examaple:
|
#### Example:
|
||||||
```cpp
|
```cpp
|
||||||
IBufferedCharacterConsumer *BufferConsumerFromProviderNew(const AuSPtr<ICharacterProvider> &provider)
|
IBufferedCharacterConsumer *BufferConsumerFromProviderNew(const AuSPtr<ICharacterProvider> &provider)
|
||||||
{
|
{
|
||||||
@ -147,6 +147,9 @@ IBufferedCharacterConsumer *BufferConsumerFromProviderNew(const AuSPtr<ICharacte
|
|||||||
|
|
||||||
### Asserts
|
### Asserts
|
||||||
|
|
||||||
|
[TODO]
|
||||||
|
|
||||||
|
#### Example:
|
||||||
Debug, Release, and Ship (all) assertions:
|
Debug, Release, and Ship (all) assertions:
|
||||||
```cpp
|
```cpp
|
||||||
SysAssert(AuFunction{}, "unexpected default function")
|
SysAssert(AuFunction{}, "unexpected default function")
|
||||||
@ -163,6 +166,7 @@ You should ensure AuDebug::CheckErrors() or a SysPushError-like function is call
|
|||||||
captured. AuDebug::PrintErrors() will print the the errors gathered by the debug subsystem for telemetry purposes. These may
|
captured. AuDebug::PrintErrors() will print the the errors gathered by the debug subsystem for telemetry purposes. These may
|
||||||
include the crts errno, the last reported posix return value, the last Win32 error code, and/or last reported microkernel error.
|
include the crts errno, the last reported posix return value, the last Win32 error code, and/or last reported microkernel error.
|
||||||
|
|
||||||
|
#### Example
|
||||||
Try/Catch:
|
Try/Catch:
|
||||||
```
|
```
|
||||||
try
|
try
|
||||||
@ -263,6 +267,16 @@ binary blob of UTF-8. Looking to switch to `tiny-utf8` for UTF-8 safety.
|
|||||||
|
|
||||||
## Memory
|
## Memory
|
||||||
|
|
||||||
|
### Allocator
|
||||||
|
|
||||||
|
Objects are allocated across API/Module boundaries; and so long as the high level API design isn't horribly inefficient, the
|
||||||
|
cache invalidation and indirect lookups should be minimalized. On modern hardware, indirect branching versus short jumps aren't
|
||||||
|
so expensive, and in combination with a fast enough allocator, it's a model that could provide reasonable OOP performance
|
||||||
|
through a C-with-classes-like API.
|
||||||
|
|
||||||
|
As for allocation, we generally expect a dependence on Microsoft's mimalloc. Linking against the Aurora Runtime in the Aurora
|
||||||
|
Ecosystem will automatically replace global allocators with `Aurora::Memory`, which in turn, proxies any other suitable allocator
|
||||||
|
with extended re[zero]allocate[aligned] with uniform deallocate APIs.
|
||||||
|
|
||||||
### Memory Heap
|
### Memory Heap
|
||||||
|
|
||||||
@ -271,11 +285,11 @@ Aurora provides a heap allocator for dividing up a large preallocated region of
|
|||||||
### Shared Pointers
|
### Shared Pointers
|
||||||
|
|
||||||
By default, AuSPtr is backed by `std::shared_ptr`, extended by `#include <Aurora/Memory/ExtendStlLikeSharedPtr>`. Using this
|
By default, AuSPtr is backed by `std::shared_ptr`, extended by `#include <Aurora/Memory/ExtendStlLikeSharedPtr>`. Using this
|
||||||
class, undefined behaviour on dereference and operator pointer is altered to guarantee an AU_THROW_STRING. It would be 'nice'
|
class, undefined behaviour on dereference and operator pointer is altered to guarantee an AU_THROW_STRING. Such hacks without
|
||||||
to live in a world without C++ exceptions; however, noexcept simply requires that `std::terminate` is called, and not handling
|
support for native behaviour from the language drivers themselves can be rather expensive; however, it's an experiment worth
|
||||||
them at all should be handled as a fatal error. Defer to [exceptions](#exceptions) on how we log and report internal errors.
|
trying now that modern hardware can make up for software and microcode flaws; and architecture translation. Null exception
|
||||||
Those who live in noexcept land can eat the exception, turning it into a terminate condition. Smarter applications may be able
|
experiments can be easily disabled or configured from within your AuroraConfiguration.h file globally.
|
||||||
to catch the null dereference and continue operation without brining the whole kingdom down with it. Either way, no UB.
|
|
||||||
|
|
||||||
```
|
```
|
||||||
Types:
|
Types:
|
||||||
@ -347,17 +361,20 @@ UTF-8 and attempt to read a BOM to translate any other input to UTF-8.
|
|||||||
We assume all paths are messy. Incorrect splitters, double splitters, relative paths, and keywords are resolved internally.
|
We assume all paths are messy. Incorrect splitters, double splitters, relative paths, and keywords are resolved internally.
|
||||||
No URL or path builder, data structure to hold a tokenized URI expression, or similar concept exists in the codebase.
|
No URL or path builder, data structure to hold a tokenized URI expression, or similar concept exists in the codebase.
|
||||||
All string 'paths' are simply expanded, similar to MSCRT's `fullpath` or UNIX's `realpath`, at time of usage.
|
All string 'paths' are simply expanded, similar to MSCRT's `fullpath` or UNIX's `realpath`, at time of usage.
|
||||||
<br>
|
|
||||||
Path tokens include:<br>
|
|
||||||
[0] == '.' = cwd<br>
|
|
||||||
[0] == '~' = platform specific user directory / brand / Profile<br>
|
|
||||||
[0] == '!' = platform specific app config directory / brand / System<br>
|
|
||||||
[0] == '?' = ., !, or ~<br>
|
|
||||||
.. = go back<br>
|
|
||||||
/ = splitter<br>
|
|
||||||
\ = splitter<br>
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
| Expression | Meaning |
|
||||||
|
|------------------|-------------------------------------|
|
||||||
|
| `Path[0] == '.'` | Current Working Directory |
|
||||||
|
| `Path[0] == '^'` | Executable module's Directory |
|
||||||
|
| `Path[0] == '~'` | User Profile Storage + SDK brand |
|
||||||
|
| `Path[0] == '!'` | All User Shared Storage + SDK brand |
|
||||||
|
| `..` | Go up a directory |
|
||||||
|
| `/` | Agnostic Directory Splitter |
|
||||||
|
| `\` | Agnostic Directory Splitter |
|
||||||
|
| `.` [SPLITTER] | Nothing |
|
||||||
|
|
||||||
|
|
||||||
[TODO] Aurora Branding <br>
|
[TODO] Aurora Branding <br>
|
||||||
|
|
||||||
### Resources
|
### Resources
|
||||||
|
Loading…
Reference in New Issue
Block a user