]> git.lyx.org Git - lyx.git/blobdiff - src/support/types.h
remove NO_PEXTRA_STUFF
[lyx.git] / src / support / types.h
index 2b3413fdeb5156c596288e06bb2daae2d71c893a..013743b376a20dd62471ef4b943eba4a5638f437 100644 (file)
@@ -1,27 +1,72 @@
+/**
+ * \file types.h
+ * Copyright 2002 the LyX Team
+ * Read 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
+ */
+
 #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.
-
-
 // this probably could be improved by using <cstddef>...
 #include <vector>
 
 namespace lyx
 {
-       /// a type for sizes
-       typedef std::vector<char>::size_type         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<char>::difference_type   pos_type;
 
-       /// a type used for numbering layouts   
-       typedef std::vector<char>::size_type         layout_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 text classes
+       // used to be LyXTextClassList::size_type
+       typedef std::vector<char>::size_type         textclass_type;
+
+#else
+
+       // 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 std::vector<char>::size_type  base_type;
+               ///
+               size_type(base_type t) { data_ = t; }
+               ///
+               operator base_type() const { return data_; }
+               ///
+               private:
+               base_type data_;
+       };
+
+       struct textclass_type {
+               ///
+               typedef std::vector<char>::size_type  base_type;
+               ///
+               textclass_type(base_type t) { data_ = t; }
+               ///
+               operator base_type() const { return data_; }
+               ///
+               private:
+               base_type data_;
+       };
+
 
 #endif
+
+}
+
+#endif // LYX_TYPES_H