4 * This file is part of LyX, the document processor.
5 * Licence details can be found in the file COPYING.
7 * Provide a set of typedefs for commonly used things like sizes and
8 * indices wile trying to stay compatible with types used
9 * by the standard containers.
11 * \author André Pönitz
13 * Full author contact details are available in file CREDITS.
24 * A type for positions used in paragraphs.
25 * Each position is either occupied by a single character or an inset.
26 * For insets, the placeholder META_INSET is stored in the paragraph
27 * text, and the actual insets are maintained separately.
29 // FIXME: should be unsigned, but needs to be signed for a while to
30 // hold the special value -1 that is used somewhere
31 // Specifically, TexRow::getDocIteratorsFromEntries uses negative pos
32 // the way Python does: counting from the end. So maybe this should just
34 // Note that the signed property is also used in loops counting to zero.
35 typedef ptrdiff_t pos_type;
38 * A type for paragraph offsets.
39 * This is used to address paragraphs in ParagraphList, Text etc.
41 // FIXME: should be unsigned as well.
42 // however, simply changing it breaks a downward loop somewhere...
43 typedef ptrdiff_t pit_type;
45 /// a type for the nesting depth of a paragraph
46 typedef size_t depth_type;
48 /// type for cell indices in inset
49 typedef size_t idx_type;
50 /// type for row indices
51 typedef size_t row_type;
52 /// type for col indices
53 typedef size_t col_type;
55 /// type for cells and math insets
56 typedef void const * uid_type;
58 // set this to '0' if you want to have really safe types
62 typedef size_t size_type;
66 // These structs wrap simple things to make them distinguishible
68 // It's a shame that different typedefs are not "really" different
72 typedef size_t base_type;
74 size_type(base_type t) { data_ = t; }
76 operator base_type() const { return data_; }
86 /// the word around the cursor, only if the cursor is
89 // the word around the cursor
91 /// the word beginning from the cursor position
93 /// the word around the cursor or before the cursor
95 /// the next word (not yet used)
109 #endif // LYX_TYPES_H