Xinqi Bao's Git

README.md: updated paper url
[XbSlicer.git] / src / BufferWrite.hh
1 /*
2 Buffer for writing
3 */
4
5 #pragma once
6
7 #include <fcntl.h>
8 #include <stdio.h>
9 #include <sys/stat.h>
10 #include <unistd.h>
11
12 #include <string>
13
14 #include "DoubleToString.hh"
15 //#include "Components.hh"
16
17 class BufferWrite
18 {
19 private:
20 char* postbuffer; // just after buffer
21 char* buffer;
22 char* phead;
23 int fn;
24 uint32_t BUFFER_SIZE = 32768; // 32K
25 uint32_t POSTBUFFER_SIZE = 256;
26 void flushOnlyBuffer();
27
28 public:
29 void writeG0(double x, double y);
30 void writeG1(double x, double y, double e);
31 void flush();
32
33 BufferWrite(std::string& fileTarget);
34 ~BufferWrite();
35 friend BufferWrite& operator<<(BufferWrite& buf, const char* ch);
36 friend BufferWrite& operator<<(BufferWrite& buf, char ch);
37 friend BufferWrite& operator<<(BufferWrite& buf, std::string& str);
38 friend BufferWrite& operator<<(BufferWrite& buf, double val);
39 };