]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/array.h
add std support
[lyx.git] / src / mathed / array.h
index 0f3257951aff0143ed476f0227ddc06139b90d32..158affcdbfb3d6350021e58da569b5394702f70e 100644 (file)
@@ -17,8 +17,9 @@
 #define MATHEDARRAY_H
 
 #include <vector>
+#include <iosfwd>
 
-#include "math_defs.h"
+#include "mathed/support.h"
 
 class MathedInset;
 
@@ -39,42 +40,64 @@ class MathedInset;
 class MathedArray  {
 public:
        ///
-       typedef std::vector<byte>         buffer_type;
-       typedef byte                      value_type;
-       typedef buffer_type::size_type    size_type;
+       typedef std::vector<byte>           buffer_type;
+       typedef byte                        value_type;
+       typedef buffer_type::size_type      size_type;
+       typedef buffer_type::iterator       iterator;
+       typedef buffer_type::const_iterator const_iterator;
+       
        ///
-       enum {
-               ///
-               ARRAY_SIZE = 256,
-               ///
-               ARRAY_STEP = 16,
-               ///
-               ARRAY_MIN_SIZE = 4
-       };
-
+       MathedArray();
+       ///
+       MathedArray(MathedArray const &);
        ///
-       explicit
-       MathedArray(int size = ARRAY_STEP);
+       MathedArray & operator=(MathedArray const &);
+       ///
+       ~MathedArray();
 
+       ///
+       iterator begin();
+       ///
+       iterator end();
+       ///
+       const_iterator begin() const;
+       ///
+       const_iterator end() const;
+       
        ///
        int empty() const;
+       ///
+       void clear();
    
        ///
        int last() const;
        ///
        void last(int l);
-   
-       /// Merge \a dx elements from array \a a at \apos.
-       /// This doesn't changes the size (dangerous)
-       void mergeF(MathedArray * a, int pos, int dx); 
 
-       /// Insert a character at position \a pos
-       void insert(int pos, byte);
+       ///
+       void swap(MathedArray &);
+       ///
+       void shrink(int pos1, int pos2);
 
+#if 0
+       ///
+       void insert(iterator pos, const_iterator beg, const_iterator end);
+#else
+       /// Merge \a dx elements from array \a a at \apos.
+       /// This doesn't changes the size (dangerous)
+       void merge(MathedArray const & a, int pos); 
+#endif
        ///
        void raw_pointer_copy(MathedInset ** p, int pos) const;
+#if 0
+       ///
+       void insertInset(int pos, MathedInset * p, int type);
+       ///
+       MathedInset * getInset(int pos);
+#else
        ///
        void raw_pointer_insert(void * p, int pos, int len);
+#endif
        ///
        void strange_copy(MathedArray * dest, int dpos, int spos, int len);
        ///
@@ -86,14 +109,30 @@ public:
        void move(int p, int shift);
        ///
        void resize(int newsize);
-       ///
-       int maxsize() const;
        /// Make sure we can access at least \a needed elements
        void need_size(int needed);
+       ///
+       void dump(std::ostream &) const;
 private:
-
        /// Buffer
        buffer_type bf_;
+#if 0
+       ///
+       struct InsetTable {
+               ///
+               int pos;
+               ///
+               MathedInset * inset;
+               ///
+               InsetTable(int p, MathedInset * i)
+                       : pos(p), inset(i) {}
+               
+       };
+       /// 
+       typedef std::vector<InsetTable> InsetList;
+       /// The list of insets in this array.
+       InsetList insetList_;
+#endif
        /// Last position inserted.
        int last_;
 };