// -*- C++ -*-
-/* This file is part of
- * ======================================================
- *
- * LyX, The Document Processor
- * Copyright 1995 Matthias Ettrich
- * Copyright 1995-2000 The LyX Team
+/**
+ * \file TextCache.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
*
- * This file is Copyright 2000
- * Lars Gullik Bjønnes
+ * \author Lars Gullik Bjønnes
*
- * ====================================================== */
+ * Full author contact details are available in file CREDITS.
+ */
#ifndef TEXT_CACHE_H
#define TEXT_CACHE_H
-#ifdef __GNUG__
-#pragma interface
-#endif
+#include "LString.h"
#include <iosfwd>
-
-#include "LString.h"
-#include "lyxtext.h"
+#include <map>
class Buffer;
+class LyXText;
// This is only the very first implemetation and use of the TextCache,
// operations on it needs to be put into a class or a namespace, that part
//
// Q. What are we caching?
// A. We are caching the screen representations (LyXText) of the
-// documents (Buffer,LyXParagraph) for specific BufferView widths.
+// documents (Buffer,Paragraph) for specific BufferView widths.
// Q. Why the cache?
// A. It is not really needed, but it speeds things up a lot
// when you have more than one document loaded at once since a total
// I believe there are only three possible scenarios where the two first
// are also covered by the third.
// - The simplest scenario is what we have now, a single
-// BufferView only.
+// BufferView only.
// o Opening
// Nothing to do with the TextCache is done when opening a file.
// o Switching
class TextCache {
public:
///
- typedef std::vector<LyXText*> Cache;
+ typedef std::map<Buffer *, std::pair<int,LyXText *> > Cache;
+
///
- typedef LyXText * value_type;
+ typedef Cache::value_type value_type;
/** Returns a pointer to a LyXText that fits the provided buffer
and width. Of there is no match 0 is returned. */
- LyXText * findFit(Buffer * b, unsigned short p);
+ LyXText * findFit(Buffer * b, int p);
/** Lists all the LyXText's currently in the cache.
Uses msg as header for the list. */
void show(std::ostream & o, string const & msg);
/// Gives info on a single LyXText (buffer and width)
- static void show(std::ostream & o, LyXText *);
+ static void show(std::ostream & o, value_type const &);
/** Adds a LyXText to the cache iff its buffer is
present in bufferlist. */
- void add(LyXText *);
+ void add(Buffer *, int witdth, LyXText *);
/** Clears the cache. Deletes all LyXText's and releases
the allocated memory. */
void clear();
Cache cache;
};
-// bla bla
+///
extern TextCache textcache;
#endif