aboutsummaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorNeil <nyamatongwe@gmail.com>2023-12-20 09:24:23 +1100
committerNeil <nyamatongwe@gmail.com>2023-12-20 09:24:23 +1100
commit1b153f8d8d4b2f09afc2d039256c958e94bd3b05 (patch)
tree00cdb1c67b137efb5715e90cc29640a78773b7a3 /include
parentef42bb46c5182037e276ceb251e604b1bcff8f38 (diff)
downloadscintilla-mirror-1b153f8d8d4b2f09afc2d039256c958e94bd3b05.tar.gz
Add IDocumentEditable interface for efficient interaction with document objects.
Diffstat (limited to 'include')
-rw-r--r--include/ILoader.h13
-rw-r--r--include/ScintillaCall.h12
2 files changed, 20 insertions, 5 deletions
diff --git a/include/ILoader.h b/include/ILoader.h
index 2fa69f527..5d2eb2571 100644
--- a/include/ILoader.h
+++ b/include/ILoader.h
@@ -1,6 +1,7 @@
// Scintilla source code edit control
/** @file ILoader.h
** Interface for loading into a Scintilla document from a background thread.
+ ** Interface for manipulating a document without a view.
**/
// Copyright 1998-2017 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
@@ -20,6 +21,18 @@ public:
virtual void * SCI_METHOD ConvertToDocument() = 0;
};
+static constexpr int deRelease0 = 0;
+
+class IDocumentEditable {
+public:
+ // Allow this interface to add methods over time and discover whether new methods available.
+ virtual int SCI_METHOD DEVersion() const noexcept = 0;
+
+ // Lifetime control
+ virtual int SCI_METHOD AddRef() noexcept = 0;
+ virtual int SCI_METHOD Release() = 0;
+};
+
}
#endif
diff --git a/include/ScintillaCall.h b/include/ScintillaCall.h
index 1a1a1e0f2..0ce4366d7 100644
--- a/include/ScintillaCall.h
+++ b/include/ScintillaCall.h
@@ -20,6 +20,8 @@ struct TextRangeFull;
struct TextToFindFull;
struct RangeToFormatFull;
+class IDocumentEditable;
+
using FunctionDirect = intptr_t(*)(intptr_t ptr, unsigned int iMessage, uintptr_t wParam, intptr_t lParam, int *pStatus);
struct Failure {
@@ -561,8 +563,8 @@ public:
Position BraceMatchNext(Position pos, Position startPos);
bool ViewEOL();
void SetViewEOL(bool visible);
- void *DocPointer();
- void SetDocPointer(void *doc);
+ IDocumentEditable *DocPointer();
+ void SetDocPointer(IDocumentEditable *doc);
void SetModEventMask(Scintilla::ModificationFlags eventMask);
Position EdgeColumn();
void SetEdgeColumn(Position column);
@@ -581,9 +583,9 @@ public:
bool SelectionIsRectangle();
void SetZoom(int zoomInPoints);
int Zoom();
- void *CreateDocument(Position bytes, Scintilla::DocumentOption documentOptions);
- void AddRefDocument(void *doc);
- void ReleaseDocument(void *doc);
+ IDocumentEditable *CreateDocument(Position bytes, Scintilla::DocumentOption documentOptions);
+ void AddRefDocument(IDocumentEditable *doc);
+ void ReleaseDocument(IDocumentEditable *doc);
Scintilla::DocumentOption DocumentOptions();
Scintilla::ModificationFlags ModEventMask();
void SetCommandEvents(bool commandEvents);