]> git.lyx.org Git - lyx.git/blobdiff - src/tabular_funcs.C
fix typo that put too many include paths for most people
[lyx.git] / src / tabular_funcs.C
index 2f44fd3e169a3a16fd2a21ecbd71233eb903cbe3..dd1a2a01c5696dc07158c1b5beb6c860dea684f7 100644 (file)
@@ -1,13 +1,13 @@
 /* This file is part of
- * ====================================================== 
- * 
+ * ======================================================
+ *
  *           LyX, The Document Processor
- *      
+ *
  *           Copyright 2000-2001 The LyX Team.
  *
  *           @author: Jürgen Vigna
  *
- * ====================================================== 
+ * ======================================================
  */
 
 #include <config.h>
@@ -22,6 +22,7 @@
 #include "support/LIstream.h"
 
 using std::istream;
+using std::getline;
 
 // Perfect case for a template... (Lgb)
 // or perhaps not...
@@ -29,18 +30,38 @@ using std::istream;
 template <>
 string const write_attribute(string const & name, bool const & b)
 {
-       return write_attribute(name, int(b));
+       // we write only true attribute values so we remove a bit of the
+       // file format bloat for tabulars.
+       if (!b)
+               return string();
+
+       return write_attribute(name, tostr(b));
+}
+
+template <>
+string const write_attribute(string const & name, int const & i)
+{
+       // we write only true attribute values so we remove a bit of the
+       // file format bloat for tabulars.
+       if (!i)
+               return string();
+
+       return write_attribute(name, tostr(i));
 }
 
 template <>
 string const write_attribute(string const & name, LyXLength const & value)
 {
+       // we write only the value if we really have one same reson as above.
+       if (value.zero())
+               return string();
+
        return write_attribute(name, value.asString());
 }
 
 string const tostr(LyXAlignment const & num)
 {
-       switch(num) {
+       switch (num) {
        case LYX_ALIGN_NONE:
                return "none";
        case LYX_ALIGN_BLOCK:
@@ -62,7 +83,7 @@ string const tostr(LyXAlignment const & num)
 
 string const tostr(LyXTabular::VAlignment const & num)
 {
-       switch(num) {
+       switch (num) {
        case LyXTabular::LYX_VALIGN_TOP:
                return "top";
        case LyXTabular::LYX_VALIGN_CENTER:
@@ -76,7 +97,7 @@ string const tostr(LyXTabular::VAlignment const & num)
 
 string const tostr(LyXTabular::BoxType const & num)
 {
-       switch(num) {
+       switch (num) {
        case LyXTabular::BOX_NONE:
                return "none";
        case LyXTabular::BOX_PARBOX:
@@ -148,13 +169,13 @@ bool string2type(string const str, bool & num)
 
 bool getTokenValue(string const & str, const char * token, string & ret)
 {
+       ret.erase();
        size_t token_length = strlen(token);
        string::size_type pos = str.find(token);
 
        if (pos == string::npos || pos + token_length + 1 >= str.length()
                || str[pos + token_length] != '=')
                return false;
-       ret.erase();
        pos += token_length + 1;
        char ch = str[pos];
        if ((ch != '"') && (ch != '\'')) { // only read till next space
@@ -171,6 +192,7 @@ bool getTokenValue(string const & str, const char * token, string & ret)
 bool getTokenValue(string const & str, const char * token, int & num)
 {
        string tmp;
+       num = 0;
        if (!getTokenValue(str, token, tmp))
                return false;
        num = strToInt(tmp);
@@ -209,20 +231,26 @@ bool getTokenValue(string const & str, const char * token,
 
 bool getTokenValue(string const & str, const char * token, bool & flag)
 {
+       // set the flag always to false as this should be the default for bools
+       // not in the file-format.
+       flag = false;
        string tmp;
        if (!getTokenValue(str, token, tmp))
                return false;
        return string2type(tmp, flag);
-}    
+}
 
 
 bool getTokenValue(string const & str, const char * token, LyXLength & len)
 {
+       // set the lenght to be zero() as default as this it should be if not
+       // in the file format.
+       len = LyXLength();
        string tmp;
        if (!getTokenValue(str, token, tmp))
                return false;
        return isValidLength(tmp, &len);
-}    
+}
 
 
 void l_getline(istream & is, string & str)