3 * Purpose: A general purpose resizable array.
4 * Author: Alejandro Aguilar Sierra <asierra@servidor.unam.mx>
5 * Created: January 1996
7 * Dependencies: None (almost)
9 * Copyright: 1996, Alejandro Aguilar Sierra
12 * You are free to use and modify this code under the terms of
13 * the GNU General Public Licence version 2 or later.
29 #define byte unsigned char
32 /** \class MathedArray
33 \brief A resizable array.
35 A general purpose resizable array.
37 \author Alejandro Aguilar Sierra
39 \author Lars Gullik Bjønnes
40 \version February 2001
45 typedef std::vector<byte> buffer_type;
46 typedef byte value_type;
47 typedef buffer_type::size_type size_type;
60 MathedArray(int size = ARRAY_STEP);
70 /// Merge \a dx elements from array \a a at \apos.
71 /// This doesn't changes the size (dangerous)
72 void mergeF(MathedArray * a, int pos, int dx);
74 /// Insert a character at position \a pos
75 void insert(int pos, byte);
78 void raw_pointer_copy(MathedInset ** p, int pos) const;
80 void raw_pointer_insert(void * p, int pos, int len);
82 void strange_copy(MathedArray * dest, int dpos, int spos, int len);
84 byte operator[](int) const;
86 byte & operator[](int i);
89 void move(int p, int shift);
91 void resize(int newsize);
94 /// Make sure we can access at least \a needed elements
95 void need_size(int needed);
100 /// Last position inserted.