]> git.lyx.org Git - lyx.git/blobdiff - src/support/types.h
prepare Qt 5.6 builds
[lyx.git] / src / support / types.h
index f7dfad62feb78675b802b4a8dbb7fffcfbd16645..fc443dcf533e4b4443a153ae47d7ee6bfdb408eb 100644 (file)
@@ -1,35 +1,52 @@
+// -*- C++ -*-
+/**
+ * \file types.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * Provide a set of typedefs for commonly used things like sizes and
+ * indices wile trying to stay compatible with types used
+ * by the standard containers.
+ *
+ * \author André Pönitz
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
 #ifndef LYX_TYPES_H
 #define LYX_TYPES_H
 
-// provide a set of typedefs for commonly used things like sizes and
-// indices while trying to stay compatible with types used by the standard
-// containers.
+#include <cstddef>
 
+namespace lyx {
 
-// this probably could be improved by using <cstddef>...
-#include <vector>
+       /*!
+        * A type for positions used in paragraphs.
+        * Each position is either occupied by a single character or an inset.
+        * For insets, the placeholder META_INSET is stored in the paragraph
+        * text, and the actual insets are maintained separately.
+        */
+       // FIXME: should be unsigned, but needs to be signed for a while to
+       // hold the special value -1 that is used somewhere
+       // Note that the signed property is also used in loops counting to zero.
+       typedef ptrdiff_t  pos_type;
 
-namespace lyx
-{
-       /// a type for positions used in paragraphs
-       // needs to be signed for a while to hold the special value -1 that is
-       // used there...
-       typedef std::vector<char>::difference_type   pos_type;
+       /*!
+        * A type for paragraph offsets.
+        * This is used to address paragraphs in ParagraphList, Text etc.
+        */
+       // FIXME: should be unsigned as well.
+       // however, simply changing it breaks a downward loop somewhere...
+       typedef ptrdiff_t  pit_type;
 
+       /// a type for the nesting depth of a paragraph
+       typedef size_t     depth_type;
 
 // set this to '0' if you want to have really safe types
 #if 1
 
        /// a type for sizes
-       typedef std::vector<char>::size_type         size_type;
-
-       /// a type used for numbering layouts   within a text class
-       // used to be LyXTextClass::size_type
-       typedef std::vector<char>::size_type         layout_type;
-
-       /// a type used for numbering text classes
-       // used to be LyXTextClassList::size_type
-       typedef std::vector<char>::size_type         textclass_type;
+       typedef size_t     size_type;
 
 #else
 
@@ -39,47 +56,41 @@ namespace lyx
 
        struct size_type {
                ///
-               typedef std::vector<char>::size_type  base_type;
+               typedef size_t base_type;
                ///
                size_type(base_type t) { data_ = t; }
                ///
                operator base_type() const { return data_; }
                ///
-               private:
+       private:
                base_type data_;
        };
-               
 
-       struct layout_type {
-               ///
-               typedef std::vector<char>::size_type  base_type;
-               ///
-               layout_type(base_type t) { data_ = t; }
-               ///
-               operator base_type() const { return data_; }
-               ///
-               void operator++() { ++data_; }
-               ///
-               private:
-               base_type data_;
+#endif
+
+       ///
+       enum word_location {
+               /// the word around the cursor, only if the cursor is
+               /// not at a boundary
+               WHOLE_WORD_STRICT,
+               // the word around the cursor
+               WHOLE_WORD,
+               /// the word begining from the cursor position
+               PARTIAL_WORD,
+               /// the word around the cursor or before the cursor
+               PREVIOUS_WORD,
+               /// the next word (not yet used)
+               NEXT_WORD
        };
-               
 
-       struct textclass_type {
-               ///
-               typedef std::vector<char>::size_type  base_type;
+       ///
+       enum PageSides {
                ///
-               textclass_type(base_type t) { data_ = t; }
-               ///
-               operator base_type() const { return data_; }
+               OneSide,
                ///
-               private:
-               base_type data_;
+               TwoSides
        };
-               
-
-#endif
 
-}
+} // namespace lyx
 
-#endif
+#endif // LYX_TYPES_H