From 0a538f989da53970ddb3776778d87230c7929e6d Mon Sep 17 00:00:00 2001 From: Neil Date: Fri, 26 Jan 2018 11:12:10 +1100 Subject: Backport: Add documentOption argument to SCI_CREATELOADER. Backport of changeset 6441:92c8f0f1b3e6. --- doc/ScintillaDoc.html | 29 ++++++++++++++++++++--------- include/Scintilla.h | 1 + include/Scintilla.iface | 7 +++++-- src/Editor.cxx | 1 + 4 files changed, 27 insertions(+), 11 deletions(-) diff --git a/doc/ScintillaDoc.html b/doc/ScintillaDoc.html index df08b19da..a1d46b1fa 100644 --- a/doc/ScintillaDoc.html +++ b/doc/ScintillaDoc.html @@ -116,7 +116,7 @@

Scintilla Documentation

-

Last edited 11 August 2017 NH

+

Last edited 31 January 2018 NH

There is an overview of the internal design of Scintilla.
@@ -5688,7 +5688,7 @@ sptr_t CallScintilla(unsigned int iMessage, uptr_t wParam, sptr_t lParam){ SCI_GETDOCPOINTER → document *
SCI_SETDOCPOINTER(<unused>, document *doc)
- SCI_CREATEDOCUMENT → document *
+ SCI_CREATEDOCUMENT(int bytes, int documentOption) → document *
SCI_ADDREFDOCUMENT(<unused>, document *doc)
SCI_RELEASEDOCUMENT(<unused>, document @@ -5709,13 +5709,20 @@ sptr_t CallScintilla(unsigned int iMessage, uptr_t wParam, sptr_t lParam){ window.
6. If doc was not 0, its reference count is increased by 1.

-

SCI_CREATEDOCUMENT → document *
+

SCI_CREATEDOCUMENT(int bytes, int documentOption) → document *
This message creates a new, empty document and returns a pointer to it. This document is not - selected into the editor and starts with a reference count of 1. This means that you have - ownership of it and must either reduce its reference count by 1 after using + selected into the editor and starts with a reference count of 1. This means that you have + ownership of it and must either reduce its reference count by 1 after using SCI_SETDOCPOINTER so that the Scintilla window owns it or you must make sure that - you reduce the reference count by 1 with SCI_RELEASEDOCUMENT before you close the - application to avoid memory leaks.

+ you reduce the reference count by 1 with SCI_RELEASEDOCUMENT before you close the + application to avoid memory leaks. The bytes argument determines + the initial memory allocation for the document as it is more efficient + to allocate once rather than rely on the buffer growing as data is added. + If SCI_CREATEDOCUMENT fails then 0 is returned.

+ +

The documentOption argument may be used in future versions + to choose between different document capabilities which affect memory allocation and performance. + The only valid value for now is SC_DOCUMENTOPTION_DEFAULT (0).

SCI_ADDREFDOCUMENT(<unused>, document *doc)
This increases the reference count of a document by 1. If you want to replace the current @@ -5742,7 +5749,7 @@ sptr_t CallScintilla(unsigned int iMessage, uptr_t wParam, sptr_t lParam){

Loading in the background

-
SCI_CREATELOADER(int bytes) → int
+ SCI_CREATELOADER(int bytes, int documentOption) → int

An application can load all of a file into a buffer it allocates on a background thread and then add the data in that buffer @@ -5751,13 +5758,17 @@ sptr_t CallScintilla(unsigned int iMessage, uptr_t wParam, sptr_t lParam){

To avoid these issues, a loader object may be created and used to load the file. The loader object supports the ILoader interface.

-

SCI_CREATELOADER(int bytes) → int
+

SCI_CREATELOADER(int bytes, int documentOption) → int
Create an object that supports the ILoader interface which can be used to load data and then be turned into a Scintilla document object for attachment to a view object. The bytes argument determines the initial memory allocation for the document as it is more efficient to allocate once rather than rely on the buffer growing as data is added. If SCI_CREATELOADER fails then 0 is returned.

+

The documentOption argument may be used in future versions + to choose between different document capabilities which affect memory allocation and performance. + The only valid value for now is SC_DOCUMENTOPTION_DEFAULT (0).

+

ILoader

diff --git a/include/Scintilla.h b/include/Scintilla.h index 6039f30d8..c87f67b81 100644 --- a/include/Scintilla.h +++ b/include/Scintilla.h @@ -691,6 +691,7 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam, #define SCI_SELECTIONISRECTANGLE 2372 #define SCI_SETZOOM 2373 #define SCI_GETZOOM 2374 +#define SC_DOCUMENTOPTION_DEFAULT 0 #define SCI_CREATEDOCUMENT 2375 #define SCI_ADDREFDOCUMENT 2376 #define SCI_RELEASEDOCUMENT 2377 diff --git a/include/Scintilla.iface b/include/Scintilla.iface index 0af6c211a..5420a7c80 100644 --- a/include/Scintilla.iface +++ b/include/Scintilla.iface @@ -1778,9 +1778,12 @@ set void SetZoom=2373(int zoomInPoints,) # Retrieve the zoom level. get int GetZoom=2374(,) +enu DocumentOption=SC_DOCUMENTOPTION_ +val SC_DOCUMENTOPTION_DEFAULT=0 + # Create a new document object. # Starts with reference count of 1 and not selected into editor. -fun int CreateDocument=2375(,) +fun int CreateDocument=2375(int bytes, int documentOption) # Extend life of document. fun void AddRefDocument=2376(, int doc) # Release a reference to the document, deleting document if it fades to black. @@ -2547,7 +2550,7 @@ set void SetTechnology=2630(int technology,) get int GetTechnology=2631(,) # Create an ILoader*. -fun int CreateLoader=2632(int bytes,) +fun int CreateLoader=2632(int bytes, int documentOption) # On OS X, show a find indicator. fun void FindIndicatorShow=2640(position start, position end) diff --git a/src/Editor.cxx b/src/Editor.cxx index f997181ad..a292a957c 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -7547,6 +7547,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { case SCI_CREATEDOCUMENT: { Document *doc = new Document(); doc->AddRef(); + doc->Allocate(static_cast(wParam)); return reinterpret_cast(doc); } -- cgit v1.2.3