// -*- C++ -*-
/* This file is part of
- * ======================================================
- *
- * LyX, The Document Processor
+ * ======================================================
+ *
+ * LyX, The Document Processor
* Copyright 1995 Matthias Ettrich
- * Copyright 1995-2000 The LyX Team
+ * Copyright 1995-2001 The LyX Team
*
- * This file is Copyright 2000
+ * This file is Copyright 2000-2001
* Lars Gullik Bjønnes
*
* ====================================================== */
#ifndef TEXT_CACHE_H
#define TEXT_CACHE_H
-#ifdef __GNUG__
-#pragma interface
-#endif
-
#include "LString.h"
-#include "support/LOstream.h"
-#include "lyxtext.h"
+
+#include <iosfwd>
+#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 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(ostream & o, string const & msg);
+ void show(std::ostream & o, string const & msg);
/// Gives info on a single LyXText (buffer and width)
- static void show(ostream & o, LyXText const *);
+ 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