Age | Commit message (Collapse) | Author | Files | Lines |
|
Allows building Scinterm without removing references to RunStyles.o.
63cee0686964d789e6b53406abcc0bdbed50206a, which removed RunStyles.cxx,
is still experimental and not yet merged upstream.
|
|
storage size as int, but does *not* alias it
* This is the case e.g. on NetBSD 10 for ARMv6 where Sci::Position == ptrdiff_t == long int,
but obviously for other platforms as well, where it causes "invalid conversion"
and "undefined symbol" errors.
Scintilla was testing for aliasability by comparing the storage size with sizeof()
or PTRDIFF_MAX == INT_MAX at the preprocessor level.
This was fundamentally flawed.
* In LineVector<T>::InsertLines() we are now using the C++17 construct
std::is_convertible_v<From*,To*> instead.
* We need RunStyles<ptrdiff_t> as well on the affected platforms.
AFAIK this is impossible to test for in a constant expression that can be used
with the preprocessor.
A workaround has been added previously for Haiku:
https://groups.google.com/g/scintilla-interest/c/xPXquJUIXo8/m/BLXBpTTgBwAJ
The workaround is not very robust, as probably nobody guarantees that ptrdiff_t
never aliases on Haiku. If it does, you will suddenly get errors about duplicate
template instantiations.
Quite possibly, the explicit instantiations of RunStyles were wrong on certain
32-bit Linux variants as well.
* We could have tried to explicitly instantiate RunStyles for all scalar types that could possibly be behind ptrdiff_t.
Unfortunately, it would result in "possible loss of data" warnings on MSVC.
Instead, we now implicitly instantiate RunStyles.
|
|
*not* alias it"
This reverts commit 0953ffeee80abdd8e79ddacc7066eb02c78968e7.
|
|
alias it
* This is the case e.g. on NetBSD 10 for ARMv6 where Sci::Position == ptrdiff_t == long int,
but obviously for other platforms as well, where it causes "invalid conversion"
and "undefined symbol" errors.
Scintilla was testing for aliasability by comparing the storage size with sizeof()
or PTRDIFF_MAX == INT_MAX at the preprocessor level.
This was fundamentally flawed.
* In LineVector<T>::InsertLines() we are now using the C++17 construct
std::is_convertible_v<From*,To*> instead.
* We need RunStyles<ptrdiff_t> as well on the affected platforms.
AFAIK this is impossible to test for in a constant expression that can be used
with the preprocessor.
A workaround has been added previously for Haiku:
https://groups.google.com/g/scintilla-interest/c/xPXquJUIXo8/m/BLXBpTTgBwAJ
The workaround is not very robust, as probably nobody guarantees that ptrdiff_t
never aliases on Haiku. If it does, you will suddenly get errors about duplicate
template instantiations.
Instead we now instantiate RunStyles for all scalar types that could possibly be behind ptrdiff_t.
This will always be more than what is required on any particular platform,
but the linker should eliminate unused symbols.
|
|
does not need to split, merge, or delete runs.
This avoids multiple binary searches and is a significant improvement for
situations such as marking large numbers of search matches in a huge document.
|
|
Remove constructor argument which is same as default.
Shorten code and avoid else.
|
|
contained types. This allows flexibility as most lower-level data types can be
moved and SplitVector and Partitioning of non-move-only types may be copied.
CellBuffer still needs destructor due to incomplete type so retains all standard
operations.
|
|
SplitVector and Partitioning directly instead of using std::unique_ptr.
This will enable more value semantics and reduces potential memory allocation
failure scenarios.
|
|
This change wouldn't be worthwhile in implementation files but warnings in
headers obscure more important diagnostics.
|
|
build.
|
|
and ScintillaStructures.h using scoped enumerations.
Use these headers instead of Scintilla.h internally.
External definitions go in the Scintilla namespace and internal definitio0ns in
Scintilla::Internal.
|
|
almost everywhere.
|
|
PLATFORM_ASSERT is used in data structure headers which led to including
graphics and windowing APIs in data structure modules.
|
|
|
|
|
|
Haiku where ptrdiff_t and int are the same size but different types.
|
|
|
|
Declare the standard member functions in more classes
|
|
ptrdiff_t are the same type.
|
|
This option is provisional and experimental.
|
|
arguments as that is clumsy when converting types.
|
|
|
|
From Effective Modern C++ Item 21.
|
|
different style types.
Currently only instantiated over <int, int>.
|
|
|
|
interfaces ILexer4 and IDocument.
|
|
Provide InsertEmpty and both const and non-const reference returning operator[].
Add and fix comments.
|
|
Document.
|
|
|
|
|
|
where it may be needed in the future.
|
|
|
|
|
|
|
|
|
|
return instead of throwing exceptions.
|
|
past end
so throw std::invalid_argument exceptions for these conditions.
Provide a Check method to validate the consistency of a RunStyles and throw
std::runtime_error if corruption is detected.
|
|
not remove that run causing iteration over the indicator to hang.
|
|
|
|
|
|
Make RunStyles internal methods private.
RunFromPosition is const so marker as const.
|
|
This fixes the last remaining issue from bug #3291579.
From Marko Njezic
|
|
From Tino Weinkauf.
|
|
|
|
modifying data near an insertion or deletion when there is good locality of
modification.
|
|
in rest of document being set.
|
|
run start.
|
|
message :)
- now uses namespaces (optionally for non-os x) to avoid conflicts with OS X libraries
- several fixes in the OS X layer since the branch was commited in 2005
- used in Komodo since 2005, so pretty stable
|
|
notification flag.
|
|
although this isn't optimal. Some checking for null changes. Messages
documented. Methods for changing indicators in Accessor so can be used by
lexers.
|