X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ftabular_funcs.C;h=aa6b634dd359ce34d4f4f8371f8fb9fff4ef7e69;hb=29f01faa17495e3d80c08f234c8f049c7d699ac1;hp=72d28384a481154535b225a8c1d5b5c3aa733f94;hpb=7f0644416bb75ea5410333d1f3857d42e2c3bb6b;p=lyx.git diff --git a/src/tabular_funcs.C b/src/tabular_funcs.C index 72d28384a4..aa6b634dd3 100644 --- a/src/tabular_funcs.C +++ b/src/tabular_funcs.C @@ -1,13 +1,13 @@ /* This file is part of - * ====================================================== - * + * ====================================================== + * * LyX, The Document Processor - * + * * Copyright 2000-2001 The LyX Team. * * @author: Jürgen Vigna * - * ====================================================== + * ====================================================== */ #include @@ -18,9 +18,12 @@ #include "tabular_funcs.h" -#include "support/lstrings.h" #include "support/LIstream.h" +#ifndef CXX_GLOBAL_CSTD +using std::strlen; +#endif + using std::istream; using std::getline; @@ -30,18 +33,38 @@ using std::getline; 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: @@ -63,7 +86,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: @@ -77,7 +100,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: @@ -149,13 +172,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 @@ -172,6 +195,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); @@ -210,20 +234,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)