diff options
Diffstat (limited to 'qt/qextscintilladocument.cpp')
-rw-r--r-- | qt/qextscintilladocument.cpp | 142 |
1 files changed, 0 insertions, 142 deletions
diff --git a/qt/qextscintilladocument.cpp b/qt/qextscintilladocument.cpp deleted file mode 100644 index 3bb4cda..0000000 --- a/qt/qextscintilladocument.cpp +++ /dev/null @@ -1,142 +0,0 @@ -// This module implements the QextScintillaDocument class. -// -// Copyright (c) 2006 -// Riverbank Computing Limited <info@riverbankcomputing.co.uk> -// -// This file is part of TQScintilla. -// -// This copy of TQScintilla is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2, or (at your option) any -// later version. -// -// TQScintilla is supplied in the hope that it will be useful, but WITHOUT ANY -// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -// details. -// -// You should have received a copy of the GNU General Public License along with -// TQScintilla; see the file LICENSE. If not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include "qextscintilladocument.h" -#include "qextscintillabase.h" - - -// This internal class encapsulates the underlying document and is shared by -// QextScintillaDocument instances. -class QextScintillaDocumentP -{ -public: - QextScintillaDocumentP() : doc(0), nr_displays(0), nr_attaches(1) {} - - long doc; // The Scintilla document. - int nr_displays; // The number of displays. - int nr_attaches; // The number of attaches. -}; - - -// The ctor. -QextScintillaDocument::QextScintillaDocument() -{ - pdoc = new QextScintillaDocumentP(); -} - - -// The dtor. -QextScintillaDocument::~QextScintillaDocument() -{ - detach(); -} - - -// The copy ctor. -QextScintillaDocument::QextScintillaDocument(const QextScintillaDocument &that) -{ - attach(that); -} - - -// The assignment operator. -QextScintillaDocument &QextScintillaDocument::operator=(const QextScintillaDocument &that) -{ - if (pdoc != that.pdoc) - { - detach(); - attach(that); - } - - return *this; -} - - -// Attach an existing document to this one. -void QextScintillaDocument::attach(const QextScintillaDocument &that) -{ - ++that.pdoc -> nr_attaches; - pdoc = that.pdoc; -} - - -// Detach the underlying document. -void QextScintillaDocument::detach() -{ - if (!pdoc) - return; - - if (--pdoc -> nr_attaches == 0) - { - if (pdoc -> doc && pdoc -> nr_displays == 0) - { - QextScintillaBase *qsb = QextScintillaBase::pool(); - - // Release the explicit reference to the document. If - // the pool is empty then we just accept the memory - // leak. - if (qsb) - qsb -> SendScintilla(QextScintillaBase::SCI_RELEASEDOCUMENT,0,pdoc -> doc); - } - - delete pdoc; - } - - pdoc = 0; -} - - -// Undisplay and detach the underlying document. -void QextScintillaDocument::undisplay(QextScintillaBase *qsb) -{ - if (--pdoc -> nr_attaches == 0) - delete pdoc; - else if (--pdoc -> nr_displays == 0) - { - // Create an explicit reference to the document to keep it - // alive. - qsb -> SendScintilla(QextScintillaBase::SCI_ADDREFDOCUMENT,0,pdoc -> doc); - } - - pdoc = 0; -} - - -// Display the underlying document. -void QextScintillaDocument::display(QextScintillaBase *qsb,const QextScintillaDocument *from) -{ - long ndoc; - - if (from) - { - ndoc = from -> pdoc -> doc; - qsb -> SendScintilla(QextScintillaBase::SCI_SETDOCPOINTER,0,ndoc); - } - else - ndoc = qsb -> SendScintilla(QextScintillaBase::SCI_GETDOCPOINTER); - - pdoc -> doc = ndoc; - ++pdoc -> nr_displays; -} |