- if (!i) {
- os << "<Column" <<
- write_attribute("alignment", column_info[j].alignment) <<
- write_attribute("valignment", column_info[j].valignment) <<
- write_attribute("leftline", column_info[j].left_line) <<
- write_attribute("rightline", column_info[j].right_line) <<
- write_attribute("width", VSpace(column_info[j].p_width).asLyXCommand()) <<
- write_attribute("special", column_info[j].align_special) <<
- ">\n";
- } else {
- os << "<Column>\n";
- }
- os << "<Cell" <<
- write_attribute("multicolumn", cell_info[i][j].multicolumn) <<
- write_attribute("alignment", cell_info[i][j].alignment) <<
- write_attribute("valignment", cell_info[i][j].valignment) <<
- write_attribute("topline", cell_info[i][j].top_line) <<
- write_attribute("bottomline", cell_info[i][j].bottom_line) <<
- write_attribute("leftline", cell_info[i][j].left_line) <<
- write_attribute("rightline", cell_info[i][j].right_line) <<
- write_attribute("rotate", cell_info[i][j].rotate) <<
- write_attribute("usebox", (int)cell_info[i][j].usebox) <<
- write_attribute("width", cell_info[i][j].p_width) <<
- write_attribute("special", cell_info[i][j].align_special) <<
- ">\n";
- os << "\\begin_inset ";
- cell_info[i][j].inset.Write(buf, os);
- os << "\n\\end_inset \n"
- << "</Cell>\n"
- << "</Column>\n";
- }
- os << "</Row>\n";
- }
- os << "</LyXTabular>\n";
-}
-
-
-static
-bool getTokenValue(string const str, const char * token, string & ret)
-{
- int pos = str.find(token);
- char ch = str[pos+strlen(token)];
-
- if ((pos < 0) || (ch != '='))
- return false;
- ret.erase();
- pos += strlen(token)+1;
- ch = str[pos];
- if ((ch != '"') && (ch != '\'')) { // only read till next space
- ret += ch;
- ch = ' ';
- }
- while((pos < int(str.length()-1)) && (str[++pos] != ch))
- ret += str[pos];
-
- return true;
-}
-
-
-static
-bool getTokenValue(string const str, const char * token, int & num)
-{
- int pos = str.find(token);
- char ch = str[pos+strlen(token)];
-
- if ((pos < 0) || (ch != '='))
- return false;
- string ret;
- //ret.erase(); // why? (Lgb)
- pos += strlen(token)+1;
- ch = str[pos];
- if ((ch != '"') && (ch != '\'')) { // only read till next space
- if (!isdigit(ch))
- return false;
- ret += ch;
- }
- ++pos;
- while((pos < int(str.length()-1)) && isdigit(str[pos]))
- ret += str[pos++];
-
- num = strToInt(ret);
- return true;
-}
-
-
-static
-bool getTokenValue(string const str, const char * token, LyXAlignment & num)
-{
- int tmp;
- bool ret = getTokenValue(str, token, tmp);
- num = static_cast<LyXAlignment>(tmp);
- return ret;
-}
-
-
-static
-bool getTokenValue(string const str, const char * token,
- LyXTabular::VAlignment & num)
-{
- int tmp;
- bool ret = getTokenValue(str, token, tmp);
- num = static_cast<LyXTabular::VAlignment>(tmp);
- return ret;
-}
-
-
-static
-bool getTokenValue(string const str, const char * token,
- LyXTabular::BoxType & num)
-{
- int tmp;
- bool ret = getTokenValue(str, token, tmp);
- num = static_cast<LyXTabular::BoxType>(tmp);
- return ret;
+ os << "<column"
+ << write_attribute("alignment", column_info[j].alignment)
+ << write_attribute("valignment", column_info[j].valignment)
+ << write_attribute("leftline", column_info[j].left_line)
+ << write_attribute("rightline", column_info[j].right_line)
+ << write_attribute("width", column_info[j].p_width.asString())
+ << write_attribute("special", column_info[j].align_special)
+ << ">\n";
+ }
+ for (int i = 0; i < rows_; ++i) {
+ os << "<row"
+ << write_attribute("topline", row_info[i].top_line)
+ << write_attribute("bottomline", row_info[i].bottom_line)
+ << write_attribute("endhead", row_info[i].endhead)
+ << write_attribute("endfirsthead", row_info[i].endfirsthead)
+ << write_attribute("endfoot", row_info[i].endfoot)
+ << write_attribute("endlastfoot", row_info[i].endlastfoot)
+ << write_attribute("newpage", row_info[i].newpage)
+ << ">\n";
+ for (int j = 0; j < columns_; ++j) {
+ os << "<cell"
+ << write_attribute("multicolumn", cell_info[i][j].multicolumn)
+ << write_attribute("alignment", cell_info[i][j].alignment)
+ << write_attribute("valignment", cell_info[i][j].valignment)
+ << write_attribute("topline", cell_info[i][j].top_line)
+ << write_attribute("bottomline", cell_info[i][j].bottom_line)
+ << write_attribute("leftline", cell_info[i][j].left_line)
+ << write_attribute("rightline", cell_info[i][j].right_line)
+ << write_attribute("rotate", cell_info[i][j].rotate)
+ << write_attribute("usebox", cell_info[i][j].usebox)
+ << write_attribute("width", cell_info[i][j].p_width)
+ << write_attribute("special", cell_info[i][j].align_special)
+ << ">\n";
+ os << "\\begin_inset ";
+ cell_info[i][j].inset.write(buf, os);
+ os << "\n\\end_inset \n"
+ << "</cell>\n";
+ }
+ os << "</row>\n";
+ }
+ os << "</lyxtabular>\n";