// -*- C++ -*-
/**
* \file lyxlength.h
- * Copyright 1995-2002 the LyX Team
- * Read the file COPYING
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
*
* \author Matthias Ettrich
+ * \author Lars Gullik Bjønnes
+ * \author Jean-Marc Lasgouttes
+ * \author John Levon
+ *
+ * Full author contact details are available in file CREDITS.
*/
-
#ifndef LYX_LENGTH_H
#define LYX_LENGTH_H
-#ifdef __GNUG__
-#pragma interface
+#include <string>
+
+// Solaris/x86 version 9 and earlier define these
+#ifdef PC
+# undef PC
+#endif
+#ifdef SP
+# undef SP
#endif
-#include "LString.h"
/**
* LyXLength - Represents latex length measurement
LyXLength(double v, LyXLength::UNIT u);
/// "data" must be a decimal number, followed by a unit
- explicit LyXLength(string const & data);
+ explicit LyXLength(std::string const & data);
+
+ void swap(LyXLength & rhs)
+ {
+ std::swap(val_, rhs.val_);
+ std::swap(unit_, rhs.unit_);
+ }
///
double value() const;
///
bool empty() const;
/// return string representation
- string const asString() const;
+ std::string const asString() const;
/// return string representation for LaTeX
- string const asLatexString() const;
+ std::string const asLatexString() const;
/// return the on-screen size of this length
int inPixels(int text_width, int em_width = 0) const;
/// return the on-screen size of this length of an image
int inBP() const;
- /** If "data" is valid, the length represented by it is
- stored into "result", if that is not 0. */
- friend bool isValidLength(string const & data, LyXLength * result = 0);
+ friend bool isValidLength(std::string const & data, LyXLength * result);
private:
///
bool operator==(LyXLength const & l1, LyXLength const & l2);
///
bool operator!=(LyXLength const & l1, LyXLength const & l2);
-///
-bool isValidLength(string const & data, LyXLength * result);
-/// return the name of the given unit number
+/** Test whether \p data represents a valid length.
+ *
+ * \returns whether \p data is a valid length
+ * \param data Length in LyX format. Since the only difference between LyX
+ * and LaTeX format is the representation of length variables as units (e.g.
+ * \c text% vs. \c \\textwidth) you can actually use this function as well
+ * for testing LaTeX lengths as long as they only contain real units like pt.
+ * \param result Pointer to a LyXLength variable. If \p result is not 0 and
+ * \p data is valid, the length represented by it is stored into \p result.
+ */
+bool isValidLength(std::string const & data, LyXLength * result = 0);
+/// return the LyX name of the given unit number
char const * stringFromUnit(int unit);
#endif // LYXLENGTH_H