bool disable_tc = text_collection == 0 || text_positions == 0;
ufwrite(&disable_tc, sizeof(bool),1,fp);
- fprintf(stderr, "whoot\n");
- fflush(stderr);
+
if (!disable_tc) {
text_positions->save(fp);
ufwrite(&text_index_type,
if (size < BUFFER_SIZE) return;
uflush_r(fd, size);
}
+
void xml_tree::flush(int fd)
{
uflush_r(fd, print_buffer->size());
size_t written;
while (1) {
written = write(fd, print_buffer->data(), s);
- if ((written < 0) && (errno == EAGAIN || errno == EINTR))
+ if ((written < 0) && (errno == EAGAIN || errno == EINTR)){
continue;
+ };
break;
};
print_buffer->clear();
}
+
void xml_tree::uput_str(std::string s, int fd)
{
print_buffer->append(s);
return i;
}
-void xml_tree::print(int fd, xml_tree::node_t x, bool no_text)
+void xml_tree::print(xml_tree::node_t x, int fd, bool no_text)
{
+
if (print_buffer == 0) {
print_buffer = new std::string(BUFFER_SIZE, 0);
print_buffer->clear();
print_stack = new std::vector<std::string>();
print_stack->reserve(256);
};
+
xml_tree::node_t fin = bp_find_close(par, x);
xml_tree::node_t n = x;
xml_tree::tag_t label = tag(n);
uputc('>', fd);
print_stack->pop_back();
n++;
- } while (!bp_inspect(par, n) || print_stack->empty());
+ } while (!bp_inspect(par, n) && !print_stack->empty());
label = tag(n);
};
uputc('\n', fd);
//I/O functions
void save(int, char*);
static xml_tree* load(int, char*, bool, int);
- void print(int, node_t, bool no_text=false);
+ void print(node_t, int, bool no_text=false);
void flush(int);
private: