Skip to content

Commit

Permalink
Clean up the C++ style
Browse files Browse the repository at this point in the history
  • Loading branch information
chainsawriot committed Aug 27, 2023
1 parent 7f3b3b7 commit 965f7d1
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 47 deletions.
8 changes: 4 additions & 4 deletions R/cpp11.R
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ read_ods_ <- function(file, start_row, stop_row, start_col, stop_col, sheet, for
.Call(`_readODS_read_ods_`, file, start_row, stop_row, start_col, stop_col, sheet, formula_as_formula)
}

splice_sheet <- function(original_xml, sheet_xml, flat) {
.Call(`_readODS_splice_sheet`, original_xml, sheet_xml, flat)
splice_sheet_ <- function(original_xml, sheet_xml, flat) {
.Call(`_readODS_splice_sheet_`, original_xml, sheet_xml, flat)
}

update_sheet <- function(original_xml, sheet_xml, flat, sheet) {
.Call(`_readODS_update_sheet`, original_xml, sheet_xml, flat, sheet)
update_sheet_ <- function(original_xml, sheet_xml, flat, sheet) {
.Call(`_readODS_update_sheet_`, original_xml, sheet_xml, flat, sheet)
}

write_sheet_ <- function(filename, x, sheet, row_names, col_names, na_as_string, padding, header, footer) {
Expand Down
4 changes: 2 additions & 2 deletions R/write_ods.R
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,9 @@
throwaway_xml_file <- .convert_df_to_sheet(x = x, sheet = sheet, row_names = row_names, col_names = col_names,
na_as_string = na_as_string, padding = padding)
if (append) {
return(splice_sheet(contentfile, throwaway_xml_file, flat))
return(splice_sheet_(contentfile, throwaway_xml_file, flat))
}
return(update_sheet(contentfile, throwaway_xml_file, flat, normalized_sheet))
return(update_sheet_(contentfile, throwaway_xml_file, flat, normalized_sheet))
}

.write_ods <- function(x, path = tempfile(fileext = ".ods"), sheet = "Sheet1", append = FALSE, update = FALSE, row_names = FALSE, col_names = TRUE, na_as_string = FALSE, padding = FALSE, flat = FALSE) {
Expand Down
16 changes: 8 additions & 8 deletions src/cpp11.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,17 +34,17 @@ extern "C" SEXP _readODS_read_ods_(SEXP file, SEXP start_row, SEXP stop_row, SEX
END_CPP11
}
// splice.cpp
std::string splice_sheet(const std::string original_xml, const std::string sheet_xml, const bool flat);
extern "C" SEXP _readODS_splice_sheet(SEXP original_xml, SEXP sheet_xml, SEXP flat) {
std::string splice_sheet_(const std::string original_xml, const std::string sheet_xml, const bool flat);
extern "C" SEXP _readODS_splice_sheet_(SEXP original_xml, SEXP sheet_xml, SEXP flat) {
BEGIN_CPP11
return cpp11::as_sexp(splice_sheet(cpp11::as_cpp<cpp11::decay_t<const std::string>>(original_xml), cpp11::as_cpp<cpp11::decay_t<const std::string>>(sheet_xml), cpp11::as_cpp<cpp11::decay_t<const bool>>(flat)));
return cpp11::as_sexp(splice_sheet_(cpp11::as_cpp<cpp11::decay_t<const std::string>>(original_xml), cpp11::as_cpp<cpp11::decay_t<const std::string>>(sheet_xml), cpp11::as_cpp<cpp11::decay_t<const bool>>(flat)));
END_CPP11
}
// splice.cpp
std::string update_sheet(const std::string original_xml, const std::string sheet_xml, const bool flat, const int sheet);
extern "C" SEXP _readODS_update_sheet(SEXP original_xml, SEXP sheet_xml, SEXP flat, SEXP sheet) {
std::string update_sheet_(const std::string original_xml, const std::string sheet_xml, const bool flat, const int sheet);
extern "C" SEXP _readODS_update_sheet_(SEXP original_xml, SEXP sheet_xml, SEXP flat, SEXP sheet) {
BEGIN_CPP11
return cpp11::as_sexp(update_sheet(cpp11::as_cpp<cpp11::decay_t<const std::string>>(original_xml), cpp11::as_cpp<cpp11::decay_t<const std::string>>(sheet_xml), cpp11::as_cpp<cpp11::decay_t<const bool>>(flat), cpp11::as_cpp<cpp11::decay_t<const int>>(sheet)));
return cpp11::as_sexp(update_sheet_(cpp11::as_cpp<cpp11::decay_t<const std::string>>(original_xml), cpp11::as_cpp<cpp11::decay_t<const std::string>>(sheet_xml), cpp11::as_cpp<cpp11::decay_t<const bool>>(flat), cpp11::as_cpp<cpp11::decay_t<const int>>(sheet)));
END_CPP11
}
// write_sheet_.cpp
Expand All @@ -68,8 +68,8 @@ static const R_CallMethodDef CallEntries[] = {
{"_readODS_get_sheet_names_", (DL_FUNC) &_readODS_get_sheet_names_, 2},
{"_readODS_read_flat_ods_", (DL_FUNC) &_readODS_read_flat_ods_, 7},
{"_readODS_read_ods_", (DL_FUNC) &_readODS_read_ods_, 7},
{"_readODS_splice_sheet", (DL_FUNC) &_readODS_splice_sheet, 3},
{"_readODS_update_sheet", (DL_FUNC) &_readODS_update_sheet, 4},
{"_readODS_splice_sheet_", (DL_FUNC) &_readODS_splice_sheet_, 3},
{"_readODS_update_sheet_", (DL_FUNC) &_readODS_update_sheet_, 4},
{"_readODS_write_sheet_", (DL_FUNC) &_readODS_write_sheet_, 9},
{"_readODS_write_sheet_list_", (DL_FUNC) &_readODS_write_sheet_list_, 9},
{NULL, NULL, 0}
Expand Down
66 changes: 33 additions & 33 deletions src/splice.cpp
Original file line number Diff line number Diff line change
@@ -1,72 +1,72 @@
#include "splice.h"

[[cpp11::register]]
std::string splice_sheet(const std::string original_xml, const std::string sheet_xml, const bool flat) {
std::string splice_sheet_(const std::string original_xml, const std::string sheet_xml, const bool flat) {
rapidxml::xml_document<> spreadsheet1;
// read the content in heap
rapidxml::file<> *xmlFile = new rapidxml::file<>(original_xml.c_str());
spreadsheet1.parse<0>((char*)xmlFile->data());
rapidxml::xml_node<>* rootNode;
rapidxml::file<> *xml_file = new rapidxml::file<>(original_xml.c_str());
spreadsheet1.parse<0>((char*)xml_file->data());
rapidxml::xml_node<>* root_node;
if (!flat) {
rootNode = spreadsheet1.first_node()->first_node("office:body")->
root_node = spreadsheet1.first_node()->first_node("office:body")->
first_node("office:spreadsheet");
} else {
rootNode = spreadsheet1.first_node("office:document")->first_node("office:body")->
root_node = spreadsheet1.first_node("office:document")->first_node("office:body")->
first_node("office:spreadsheet");
}
rapidxml::xml_document<> spreadsheet2;
rapidxml::file<> *xmlFile2 = new rapidxml::file<>(sheet_xml.c_str());
spreadsheet2.parse<0>((char*)xmlFile2->data());
rapidxml::xml_node<> *rootNode2;
rootNode2 = spreadsheet2.first_node("table:table");
rapidxml::xml_node<> *newnode = spreadsheet2.clone_node(rootNode2);
rootNode->append_node(newnode);
rapidxml::file<> *xml_file2 = new rapidxml::file<>(sheet_xml.c_str());
spreadsheet2.parse<0>((char*)xml_file2->data());
rapidxml::xml_node<> *root_node2;
root_node2 = spreadsheet2.first_node("table:table");
rapidxml::xml_node<> *new_node = spreadsheet2.clone_node(root_node2);
root_node->append_node(new_node);
std::ofstream output_file(original_xml);
output_file << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
output_file << spreadsheet1;
output_file.close();
delete xmlFile;
delete xmlFile2;
delete xml_file;
delete xml_file2;
return original_xml;
}

[[cpp11::register]]
std::string update_sheet(const std::string original_xml, const std::string sheet_xml, const bool flat, const int sheet) {
std::string update_sheet_(const std::string original_xml, const std::string sheet_xml, const bool flat, const int sheet) {
rapidxml::xml_document<> spreadsheet1;
rapidxml::file<> *xmlFile = new rapidxml::file<>(original_xml.c_str());
spreadsheet1.parse<0>((char*)xmlFile->data());
rapidxml::xml_node<>* rootNode;
rapidxml::xml_node<>* parNode;
rapidxml::file<> *xml_file = new rapidxml::file<>(original_xml.c_str());
spreadsheet1.parse<0>((char*)xml_file->data());
rapidxml::xml_node<>* root_node;
rapidxml::xml_node<>* parent_node;

if (!flat) {
rootNode = spreadsheet1.first_node()->first_node("office:body")->
root_node = spreadsheet1.first_node()->first_node("office:body")->
first_node("office:spreadsheet")->first_node("table:table");
parNode = spreadsheet1.first_node()->first_node("office:body")->
parent_node = spreadsheet1.first_node()->first_node("office:body")->
first_node("office:spreadsheet");

} else {
rootNode = spreadsheet1.first_node("office:document")->first_node("office:body")->
root_node = spreadsheet1.first_node("office:document")->first_node("office:body")->
first_node("office:spreadsheet")->first_node("table:table");
parNode = spreadsheet1.first_node("office:document")->first_node("office:body")->
parent_node = spreadsheet1.first_node("office:document")->first_node("office:body")->
first_node("office:spreadsheet");
}
for (int i = 1; i < sheet; i++){
rootNode = rootNode->next_sibling("table:table");
root_node = root_node->next_sibling("table:table");
}

rapidxml::xml_document<> spreadsheet2;
rapidxml::file<> *xmlFile2 = new rapidxml::file<>(sheet_xml.c_str());
spreadsheet2.parse<0>((char*)xmlFile2->data());
rapidxml::xml_node<> *rootNode2;
rootNode2 = spreadsheet2.first_node("table:table");
rapidxml::xml_node<> *newnode = spreadsheet2.clone_node(rootNode2);
parNode->insert_node(rootNode, newnode);
parNode->remove_node(rootNode);
rapidxml::file<> *xml_file2 = new rapidxml::file<>(sheet_xml.c_str());
spreadsheet2.parse<0>((char*)xml_file2->data());
rapidxml::xml_node<> *root_node2;
root_node2 = spreadsheet2.first_node("table:table");
rapidxml::xml_node<> *new_node = spreadsheet2.clone_node(root_node2);
parent_node->insert_node(root_node, new_node);
parent_node->remove_node(root_node);
std::ofstream output_file(original_xml);
output_file << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
output_file << spreadsheet1;
output_file.close();
delete xmlFile;
delete xmlFile2;
delete xml_file;
delete xml_file2;
return original_xml;
}

0 comments on commit 965f7d1

Please sign in to comment.