1 #ifndef INVOICEPRINTER_H
2 #define INVOICEPRINTER_H
3
4 #include <string>
5
6 using namespace std;
7
8 /**
9 Formats an invoice.
10 */
11 class InvoicePrinter
12 {
13 public:
14 /**
15 Prints the invoice header.
16 @param s the header string
17 */
18 virtual void print_header(string s) = 0;
19 /**
20 Prints a string in the next table cell
21 @param value the value to print
22 @param pad_right true if the cell is padded on the right
23 with spaces
24 */
25 virtual void print_string(string value, bool pad_right) = 0;
26 /**
27 Prints a number in the next table cell
28 @param value the value to print
29 @param precision the number of digits after the decimal point
30 */
31 virtual void print_number(double value, int precision) = 0;
32 /**
33 Prints the invoice footer.
34 @param s the footer string
35 @param total the total amount due
36 */
37 virtual void print_footer(string s, double total) = 0;
38 };
39
40 #endif