<feed xmlns='http://www.w3.org/2005/Atom'>
<title>scintilla-mirror/src/RunStyles.cxx, branch rel-5-6-2</title>
<subtitle>Git mirror of the Scintilla editor component. Referenced by the SciTECO repository.</subtitle>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/scintilla-mirror/'/>
<entry>
<title>Support ptrdiff_t if it has the same storage size as int, but does *not* alias it</title>
<updated>2025-11-03T09:06:45+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>rhaberkorn@fmsbw.de</email>
</author>
<published>2025-11-03T09:06:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/scintilla-mirror/commit/?id=30ec0541d55d048467ad5de9a9718d89ad6c8c35'/>
<id>30ec0541d55d048467ad5de9a9718d89ad6c8c35</id>
<content type='text'>
* 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&lt;T&gt;::InsertLines() we are now using the C++17 construct
  std::is_convertible_v&lt;From*,To*&gt; instead.
* We need RunStyles&lt;ptrdiff_t&gt; as well on the affected platforms.
  This is impossible to test for in a constant expression that can be used
  with the preprocessor.
  Also, it's not possible to conditionally instantiate templates.
  We tried to instantiate RunStyles for all scalar types that could be behind ptrdiff_t,
  but it was causing warnings on MSVC.
  Implicitly instantiating RunStyles would be possible, but is not desired.
  Therefore as a workaround, you can now define the PTRDIFF_DOESNT_ALIAS_INT
  macro when invoking the build system, to force instantiating RunStyles&lt;ptrdiff_t&gt;.
  When writing portable applications, you may have to use a compile-time check
  for checking aliasability of ptrdiff_t and int in order to define PTRDIFF_DOESNT_ALIAS_INT.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 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&lt;T&gt;::InsertLines() we are now using the C++17 construct
  std::is_convertible_v&lt;From*,To*&gt; instead.
* We need RunStyles&lt;ptrdiff_t&gt; as well on the affected platforms.
  This is impossible to test for in a constant expression that can be used
  with the preprocessor.
  Also, it's not possible to conditionally instantiate templates.
  We tried to instantiate RunStyles for all scalar types that could be behind ptrdiff_t,
  but it was causing warnings on MSVC.
  Implicitly instantiating RunStyles would be possible, but is not desired.
  Therefore as a workaround, you can now define the PTRDIFF_DOESNT_ALIAS_INT
  macro when invoking the build system, to force instantiating RunStyles&lt;ptrdiff_t&gt;.
  When writing portable applications, you may have to use a compile-time check
  for checking aliasability of ptrdiff_t and int in order to define PTRDIFF_DOESNT_ALIAS_INT.
</pre>
</div>
</content>
</entry>
<entry>
<title>Improve performance of simple case where FillRange just inserts two entries and</title>
<updated>2024-12-02T08:58:22+00:00</updated>
<author>
<name>Neil</name>
<email>nyamatongwe@gmail.com</email>
</author>
<published>2024-12-02T08:58:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/scintilla-mirror/commit/?id=96a4a55dc33a3d51dc7fe94228f39fcd013124af'/>
<id>96a4a55dc33a3d51dc7fe94228f39fcd013124af</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove explicit initialization which is identical to default initialization.</title>
<updated>2024-12-02T08:38:38+00:00</updated>
<author>
<name>Neil</name>
<email>nyamatongwe@gmail.com</email>
</author>
<published>2024-12-02T08:38:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/scintilla-mirror/commit/?id=b3038de3e52df9a5fef52ab3f3a78573d2bf8c1d'/>
<id>b3038de3e52df9a5fef52ab3f3a78573d2bf8c1d</id>
<content type='text'>
Remove constructor argument which is same as default.
Shorten code and avoid else.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Remove constructor argument which is same as default.
Shorten code and avoid else.
</pre>
</div>
</content>
</entry>
<entry>
<title>Apply rule-of-zero to delete standard methods where possible as handled by</title>
<updated>2022-07-29T01:16:28+00:00</updated>
<author>
<name>Neil</name>
<email>nyamatongwe@gmail.com</email>
</author>
<published>2022-07-29T01:16:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/scintilla-mirror/commit/?id=e030b1d56785405cb35531758d603be88af9b487'/>
<id>e030b1d56785405cb35531758d603be88af9b487</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Flatten Partitioning and RunStyles to avoid a level of indirection by containing</title>
<updated>2022-07-29T00:16:34+00:00</updated>
<author>
<name>Neil</name>
<email>nyamatongwe@gmail.com</email>
</author>
<published>2022-07-29T00:16:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/scintilla-mirror/commit/?id=cb3ef02e9c483596f3c146bc72325457e61d0b19'/>
<id>cb3ef02e9c483596f3c146bc72325457e61d0b19</id>
<content type='text'>
SplitVector and Partitioning directly instead of using std::unique_ptr.
This will enable more value semantics and reduces potential memory allocation
failure scenarios.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
SplitVector and Partitioning directly instead of using std::unique_ptr.
This will enable more value semantics and reduces potential memory allocation
failure scenarios.
</pre>
</div>
</content>
</entry>
<entry>
<title>Use extra consts to avoid 32 to 64-bit widening warnings in headers.</title>
<updated>2022-07-28T06:42:17+00:00</updated>
<author>
<name>Neil</name>
<email>nyamatongwe@gmail.com</email>
</author>
<published>2022-07-28T06:42:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/scintilla-mirror/commit/?id=2a5ffea80aacbd6353f4462300e42c8d55ac19e9'/>
<id>2a5ffea80aacbd6353f4462300e42c8d55ac19e9</id>
<content type='text'>
This change wouldn't be worthwhile in implementation files but warnings in
headers obscure more important diagnostics.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This change wouldn't be worthwhile in implementation files but warnings in
headers obscure more important diagnostics.
</pre>
</div>
</content>
</entry>
<entry>
<title>Bug [#2315] Fix undefined macros. Fixes key map for GTK on macOS and Haiku build.</title>
<updated>2022-02-15T22:39:20+00:00</updated>
<author>
<name>Neil</name>
<email>nyamatongwe@gmail.com</email>
</author>
<published>2022-02-15T22:39:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/scintilla-mirror/commit/?id=ac99bf8caef4efbff29d031ab04f7e44ab5234d9'/>
<id>ac99bf8caef4efbff29d031ab04f7e44ab5234d9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Define C++ version of the Scintilla API in ScintillaTypes.h, ScintillaMessages.h</title>
<updated>2021-05-24T09:31:06+00:00</updated>
<author>
<name>Neil</name>
<email>nyamatongwe@gmail.com</email>
</author>
<published>2021-05-24T09:31:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/scintilla-mirror/commit/?id=92290868cf9753d2df0d494cb44e2ff62a570b58'/>
<id>92290868cf9753d2df0d494cb44e2ff62a570b58</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>std::optional is a basic vocabulary type that may be used widely so include</title>
<updated>2021-03-18T08:04:08+00:00</updated>
<author>
<name>Neil</name>
<email>nyamatongwe@gmail.com</email>
</author>
<published>2021-03-18T08:04:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/scintilla-mirror/commit/?id=43c4b61bdd3669c2cc08d50f10401f0b04befcc9'/>
<id>43c4b61bdd3669c2cc08d50f10401f0b04befcc9</id>
<content type='text'>
almost everywhere.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
almost everywhere.
</pre>
</div>
</content>
</entry>
<entry>
<title>Move assert and debug trace functions into their own header Debugging.h.</title>
<updated>2021-03-18T07:14:09+00:00</updated>
<author>
<name>Neil</name>
<email>nyamatongwe@gmail.com</email>
</author>
<published>2021-03-18T07:14:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/scintilla-mirror/commit/?id=cb7f77559b1682e7655af5a88b5bbeb63899eca4'/>
<id>cb7f77559b1682e7655af5a88b5bbeb63899eca4</id>
<content type='text'>
PLATFORM_ASSERT is used in data structure headers which led to including
graphics and windowing APIs in data structure modules.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
PLATFORM_ASSERT is used in data structure headers which led to including
graphics and windowing APIs in data structure modules.
</pre>
</div>
</content>
</entry>
</feed>
