X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fsupport%2Ftypes.h;h=fc443dcf533e4b4443a153ae47d7ee6bfdb408eb;hb=bf56e2c8e1afa857cd5e313c19948040e41b8227;hp=2b3413fdeb5156c596288e06bb2daae2d71c893a;hpb=cd6e293ed7c588748fe0cf5927f46dc5e9ae6e35;p=lyx.git diff --git a/src/support/types.h b/src/support/types.h index 2b3413fdeb..fc443dcf53 100644 --- a/src/support/types.h +++ b/src/support/types.h @@ -1,27 +1,96 @@ +// -*- 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 whil trying to stay compatible with typse used by the standard -// containers. +#include + +namespace lyx { + + /*! + * 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; + + /*! + * 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; -// this probably could be improved by using ... -#include +// set this to '0' if you want to have really safe types +#if 1 -namespace lyx -{ /// a type for sizes - typedef std::vector::size_type size_type; + typedef size_t size_type; - /// 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::difference_type pos_type; +#else - /// a type used for numbering layouts - typedef std::vector::size_type layout_type; + // These structs wrap simple things to make them distinguishible + // to the compiler. + // It's a shame that different typedefs are not "really" different -} + struct size_type { + /// + typedef size_t base_type; + /// + size_type(base_type t) { data_ = t; } + /// + operator base_type() const { return 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 + }; + + /// + enum PageSides { + /// + OneSide, + /// + TwoSides + }; + +} // namespace lyx + +#endif // LYX_TYPES_H