/* This file is part of
- * ======================================================
- *
+ * ======================================================
+ *
* LyX, The Document Processor
- *
+ *
* Copyright 2000-2001 The LyX Team.
*
* @author: Jürgen Vigna
*
- * ======================================================
+ * ======================================================
*/
#include <config.h>
#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;
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());
}
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
bool getTokenValue(string const & str, const char * token, int & num)
{
string tmp;
+ num = 0;
if (!getTokenValue(str, token, tmp))
return false;
num = strToInt(tmp);
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)