Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
|
|
All users of BitStream were in fact using a specific, hardcoded variant,
so we can hardcode that variant, removing the need for virtual calls,
and enabling inlining.
|
|
This allows MemoryReadWriteStream to be passed successfully to
functions that use the SeekableReadStream type so that they can
call the `pos` method, like the DPCMStream class of the VMD
decoder.
|
|
|
|
|
|
Thanks to N.E.C <beholdnec@gmail.com> for this.
|
|
|
|
|
|
|
|
This reverts commit eefa72afa1978a9dea10f5b1833fcc8f58a3468e.
With this patch ConfigManager is broken.
|
|
This fixes tons of warnings with clang from a recent xcode version on
macOS (and possibly other systems) complaining that an instantiation
of _singleton is required but no definition is available.
|
|
SCI engine has very many game options.
|
|
Thanks again to @waltervn.
|
|
To move data from one SpanOwner to another, use `moveFrom`.
Thanks @waltervn for pointing out the problem.
|
|
Until C++11 (which introduces the z and t length modifiers), there
is no consistent way to print size_t and ptrdiff_t types using
printf formatting across 32-bit, LLP64, and LP64 architectures
without using a cumbersome macro to select the appropriate length
modifier for the target architecture. Since ScummVM engines
currently need to support 32-bit targets, there is no reason at
the moment to support any larger memory sizes in Span anyway.
Span error output is also updated in this commit to reflect that
index values are unsigned.
|
|
The SpanImpl template was generating a bunch of C2248 errors that
protected fields of the SpanBase template could not be accessed
|
|
|
|
|
|
|
|
|
|
Fixes erratic speeds in analog pointer motion
Implemented option to set analog/keyboard pointer speed
and control the analog joystick deadzone. The deadzone option appears
only if the build supports analog joystick (via JOY_ANALOG define)
|
|
ANDROIDSDL: added tab Control in main Options menu for switching some features
|
|
|
|
hasFeature... condition, renamed some fields and methods
|
|
GUI: Add three new options for volume slider controls
|
|
|
|
This for example fixes the compilation of the fullpipe engine on 64 bits
platforms when using create_project.
|
|
GUIO_NOSPEECHVOLUME can be used for games that allow toggling of
speech but do not provide the ability for users to control speech
volume.
GUIO_LINKMUSICTOSFX and GUI_LINKSPEECHTOSFX can be used for games
that allow control of music, sfx, and speech in combinations, like
games that provide control of digital audio separately from MIDI,
or games that only control all three audio types through a single
volume control.
|
|
|
|
|
|
|
|
|
|
Ports with -DNONSTANDARD_PORT need this too.
|
|
|
|
COMMON: Add Span to common library
|
|
|
|
|
|
Now it is possible to enforce checking by specifying level -1,
that is, debug level 11 will not turn it on.
|
|
|
|
Implicitly generated constructors can be used instead of explicit
constructors, which reduces the amount of necessary boilerplate.
Long lists of identical typedefs to the superclass are now defined
using a macro.
data() const now returns a pointer to data that matches the
value_type of the data, instead of forcing the data to be const.
This better matches the intent of the Span class, which provides
a view into data, rather than being a container that holds data.
|
|
The data access helpers as written are effectively little-endian
when reading from spans with value_types larger than the size of
the requested data (e.g. more than 1 byte for getting a char,
more than 2 bytes for getting a uint16, etc.). For now, restrict
use of these methods at compile time until someone actually needs
to read memory that way.
|
|
|
|
|
|
Span is roughly modelled on the GSL span<T> type, and is intended
to replace direct access to raw pointers -- especially pointers
that are passed to functions along with a separate size
parameter. It provides low-cost bounds-checked reads and writes,
as well as convenience functions for reading common values
(integers of varying endianness, strings, etc.). While similar to
MemoryReadStream in purpose, Span is superior in cases where
memory is writable, where memory is accessed randomly rather than
sequentially, or where any invalid access should be treated as an
unrecoverable error. It should also be more efficient than a
MemoryReadStream because it is implemented using CRTP, so there is
no runtime overhead from dynamic dispatch.
NamedSpan is an extension of Span which provides enhanced
debugging information when out-of-bounds memory accesses occur.
It allows programmers to name the memory span at construction time,
and it also tracks the offsets of subspans so that the absolute
byte offset of the original memory can be provided in the error
message if an out-of-bounds access occurs.
SpanOwner is similar to ScopedPtr but has awareness of the design
of Span objects, so allows the memory pointed to by the Span object
inside the SpanOwner to be freed when the SpanOwner is freed
without requiring holding a separate pointer to the start of
memory. It also provides some copy semantics, so unlike a ScopedPtr,
SpanOwners can be held by objects in movable containers like
Common::Array -- but note that because there are no move semantics
in C++98, this means that a new, complete memory copy of the
pointed-to data will be created, rather than just a new Span
pointing to the same block of memory, when a container holding a
SpanOwner expands.
|
|
Type traits allow conditional selection and manipulation of types
during compilation.
|
|
This API is intended for use in cases where C strings come
from untrusted sources like game files, where malformed data
missing the null terminator would cause strlen to read out of
bounds.
|