"Fossies" - the Fresh Open Source Software Archive 
Member "qdiff-0.9.1/tdiffoutput.h" (21 Oct 2008, 3162 Bytes) of package /linux/privat/old/qdiff-0.9.1.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
1 /*GPL*START*
2 *
3 * Copyright (C) 1998 by Johannes Overmann <overmann@iname.com>
4 * Copyright (C) 2008 by Tong Sun <suntong001@users.sourceforge.net>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License along
17 * with this program; if not, write to the Free Software Foundation, Inc.,
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 * *GPL*END*/
20
21 #ifndef _tdiffoutput_h_
22 #define _tdiffoutput_h_
23
24 #include <sys/stat.h>
25 #include <sys/mman.h>
26 #include <sys/ioctl.h>
27 #include <fcntl.h>
28 #include <unistd.h>
29 #include <stdio.h>
30 #include <stdlib.h>
31
32 #include "terror.h"
33 #include "trotfile.h"
34 #include "tappconfig.h"
35
36 class TDiffOutput {
37 public:
38 // ctor & dtor
39 TDiffOutput(TROTFile& f1, TROTFile& f2, const TAppConfig& ac);
40 ~TDiffOutput();
41
42 // interface
43 void ins(int i); // insertion
44 void del(int i); // deletion
45 void sub(int i, int ins=0, int del=0); // substitution
46 void mat(int i); // match
47
48 void flush(); // flush buffers: assume no more output
49
50 private: // private data
51 TROTFile& f1; // file data
52 TROTFile& f2;
53 int o1; // current offset in file
54 int o2;
55 const TAppConfig& ac; // for command line options
56 enum MODE_T {VERTICAL, F_ASCII, U_ASCII, HEX} mode;
57 enum DIFF_T {NIL, MAT, SUB, DEL, INS};
58 bool verbose;
59
60 // output options:
61 bool hide_mat;
62 bool hide_ins;
63 bool hide_del;
64 bool hide_sub;
65 bool range_mat;
66 bool range_ins;
67 bool range_del;
68 bool range_sub;
69 bool no_color;
70 int width;
71 int bytes_per_line;
72 int max_bytes_per_line;
73 int half_line_len;
74 char *linebuf1;
75 char *linebuf2;
76 char *linebuf1p;
77 char *linebuf2p;
78 int bytesin1;
79 int bytesin2;
80 DIFF_T lastcolor1;
81 DIFF_T lastcolor2;
82 bool needadr1;
83 bool needadr2;
84 int line1;
85 int line2;
86 int tab_size;
87 bool alignment_marks;
88 bool show_lf_and_tab;
89 bool show_space;
90 bool line_numbers;
91 bool no_line_break;
92 char unprint;
93 bool control_hex;
94
95 // private methods
96 MODE_T autoMode();
97 void setStrLen(char *str, int len) const;
98 void printSplitLine(char *abuf1, char *abuf2) const;
99 void putHexElem(int o1, uchar b1, int o2, uchar b2, DIFF_T diff);
100 void putAscElem(int o1, uchar b1, int o2, uchar b2, DIFF_T diff, bool formatted);
101 const char *colorStr(DIFF_T diff) const;
102 int charLen(uchar c, int pos) const;
103 void putSpace(char **p, int num) const;
104 void putChar(char **p, uchar c, int pos) const;
105 const char *printChar(uchar c, char *buf) const;
106
107 // forbid copy
108 TDiffOutput(const TDiffOutput&);
109 const TDiffOutput& operator= (const TDiffOutput&);
110 };
111
112 #endif
113
114