The SWORD Project  1.9.0.svnversion
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
SWCompress Class Reference

#include <swcomprs.h>

+ Inheritance diagram for SWCompress:
+ Collaboration diagram for SWCompress:

Public Member Functions

virtual void decode (void)
 
virtual void encode (void)
 
virtual unsigned long getChars (char *buf, unsigned long len)
 
virtual char * getCompressedBuf (unsigned long *len=0)
 
virtual int getLevel ()
 
virtual char * getUncompressedBuf (unsigned long *len=0)
 
virtual unsigned long sendChars (char *buf, unsigned long len)
 
virtual void setCompressedBuf (unsigned long *len, char *buf=0)
 
virtual void setLevel (int l)
 
virtual void setUncompressedBuf (const char *buf=0, unsigned long *len=0)
 
 SWCompress ()
 
virtual ~SWCompress ()
 

Protected Attributes

char * buf
 
char direct
 
int level
 
unsigned long pos
 
unsigned long slen
 
char * zbuf
 
unsigned long zlen
 
unsigned long zpos
 

Private Member Functions

void cycleStream ()
 
void init ()
 

Detailed Description

Definition at line 31 of file swcomprs.h.

Constructor & Destructor Documentation

SWORD_NAMESPACE_START SWCompress::SWCompress ( )

Definition at line 35 of file swcomprs.cpp.

36 {
37  buf = zbuf = 0;
38  level = 6;
39  init();
40 }
int level
Definition: swcomprs.h:40
char * buf
Definition: swcomprs.h:38
void init()
Definition: swcomprs.cpp:57
char * zbuf
Definition: swcomprs.h:38
SWCompress::~SWCompress ( )
virtual

Definition at line 47 of file swcomprs.cpp.

48 {
49  if (zbuf)
50  free(zbuf);
51 
52  if (buf)
53  free(buf);
54 }
free(preg->fastmap)
char * buf
Definition: swcomprs.h:38
char * zbuf
Definition: swcomprs.h:38

Member Function Documentation

void SWCompress::cycleStream ( )
private

Definition at line 198 of file swcomprs.cpp.

198  {
199  char buf[1024];
200  unsigned long len, totlen = 0;
201 
202  do {
203  len = getChars(buf, 1024);
204  if (len)
205  totlen += sendChars(buf, len);
206  } while (len == 1024);
207 
208  zlen = slen = totlen;
209 }
unsigned long zlen
Definition: swcomprs.h:39
unsigned long slen
Definition: swcomprs.h:39
char * buf
Definition: swcomprs.h:38
virtual unsigned long getChars(char *buf, unsigned long len)
Definition: swcomprs.cpp:121
virtual unsigned long sendChars(char *buf, unsigned long len)
Definition: swcomprs.cpp:141
void SWCompress::decode ( void  )
virtual

Reimplemented in XzCompress, ZipCompress, Bzip2Compress, and LZSSCompress.

Definition at line 193 of file swcomprs.cpp.

193  {
194  cycleStream();
195 }
void cycleStream()
Definition: swcomprs.cpp:198
void SWCompress::encode ( void  )
virtual

Reimplemented in XzCompress, ZipCompress, Bzip2Compress, and LZSSCompress.

Definition at line 180 of file swcomprs.cpp.

180  {
181  cycleStream();
182 }
void cycleStream()
Definition: swcomprs.cpp:198
unsigned long SWCompress::getChars ( char *  buf,
unsigned long  len 
)
virtual

Definition at line 121 of file swcomprs.cpp.

121  {
122  if (direct) {
123  len = (((zlen - zpos) > (unsigned)len) ? len : zlen - zpos);
124  if (len > 0) {
125  memmove(ibuf, &zbuf[zpos], len);
126  zpos += len;
127  }
128  }
129  else {
130 // slen = strlen(buf);
131  len = (((slen - pos) > (unsigned)len) ? len : slen - pos);
132  if (len > 0) {
133  memmove(ibuf, &buf[pos], len);
134  pos += len;
135  }
136  }
137  return len;
138 }
unsigned long zlen
Definition: swcomprs.h:39
unsigned long slen
Definition: swcomprs.h:39
char * buf
Definition: swcomprs.h:38
unsigned long zpos
Definition: swcomprs.h:39
char direct
Definition: swcomprs.h:38
unsigned long pos
Definition: swcomprs.h:39
char * zbuf
Definition: swcomprs.h:38
char * SWCompress::getCompressedBuf ( unsigned long *  len = 0)
virtual

Definition at line 111 of file swcomprs.cpp.

111  {
112  if (!zbuf) {
113  direct = 0;
114  encode();
115  }
116  if (len) *len = zlen;
117  return zbuf;
118 }
unsigned long zlen
Definition: swcomprs.h:39
virtual void encode(void)
Definition: swcomprs.cpp:180
char direct
Definition: swcomprs.h:38
char * zbuf
Definition: swcomprs.h:38
virtual int SWCompress::getLevel ( )
inlinevirtual

Definition at line 54 of file swcomprs.h.

54 {return level;};
int level
Definition: swcomprs.h:40
char * SWCompress::getUncompressedBuf ( unsigned long *  len = 0)
virtual

Definition at line 90 of file swcomprs.cpp.

90  {
91  if (!buf) {
92  buf = (char *)calloc(1,1); // be sure we at least allocate an empty buf for return;
93  direct = 1;
94  decode();
95  }
96  if (len) *len = slen;
97  return buf;
98 }
virtual void decode(void)
Definition: swcomprs.cpp:193
unsigned long slen
Definition: swcomprs.h:39
char * buf
Definition: swcomprs.h:38
char direct
Definition: swcomprs.h:38
void SWCompress::init ( )
private

Definition at line 57 of file swcomprs.cpp.

58 {
59  if (buf)
60  free(buf);
61 
62  if (zbuf)
63  free(zbuf);
64 
65  buf = 0;
66  zbuf = 0;
67  direct = 0;
68  zlen = 0;
69  slen = 0;
70  zpos = 0;
71  pos = 0;
72 }
unsigned long zlen
Definition: swcomprs.h:39
unsigned long slen
Definition: swcomprs.h:39
free(preg->fastmap)
char * buf
Definition: swcomprs.h:38
unsigned long zpos
Definition: swcomprs.h:39
char direct
Definition: swcomprs.h:38
unsigned long pos
Definition: swcomprs.h:39
char * zbuf
Definition: swcomprs.h:38
unsigned long SWCompress::sendChars ( char *  buf,
unsigned long  len 
)
virtual

Definition at line 141 of file swcomprs.cpp.

141  {
142  if (direct) {
143  if (buf) {
144 // slen = strlen(buf);
145  if ((pos + len) > (unsigned)slen) {
146  buf = (char *) realloc(buf, pos + len + 1024);
147  memset(&buf[pos], 0, len + 1024);
148  }
149  }
150  else buf = (char *)calloc(1, len + 1024);
151  memmove(&buf[pos], ibuf, len);
152  pos += len;
153  }
154  else {
155  if (zbuf) {
156  if ((zpos + len) > zlen) {
157  zbuf = (char *) realloc(zbuf, zpos + len + 1024);
158  zlen = zpos + len + 1024;
159  }
160  }
161  else {
162  zbuf = (char *)calloc(1, len + 1024);
163  zlen = len + 1024;
164  }
165  memmove(&zbuf[zpos], ibuf, len);
166  zpos += len;
167  }
168  return len;
169 }
unsigned long zlen
Definition: swcomprs.h:39
unsigned long slen
Definition: swcomprs.h:39
char * realloc()
char * buf
Definition: swcomprs.h:38
unsigned long zpos
Definition: swcomprs.h:39
char direct
Definition: swcomprs.h:38
unsigned long pos
Definition: swcomprs.h:39
char * zbuf
Definition: swcomprs.h:38
void SWCompress::setCompressedBuf ( unsigned long *  len,
char *  buf = 0 
)
virtual

Definition at line 101 of file swcomprs.cpp.

101  {
102  if (ibuf) {
103  init();
104  zbuf = (char *) malloc(*len);
105  memcpy(zbuf, ibuf, *len);
106  zlen = *len;
107  }
108  *len = zlen;
109 }
unsigned long zlen
Definition: swcomprs.h:39
char * malloc()
void init()
Definition: swcomprs.cpp:57
char * zbuf
Definition: swcomprs.h:38
virtual void SWCompress::setLevel ( int  l)
inlinevirtual

Reimplemented in XzCompress.

Definition at line 53 of file swcomprs.h.

53 {level = l;};
int level
Definition: swcomprs.h:40
void SWCompress::setUncompressedBuf ( const char *  buf = 0,
unsigned long *  len = 0 
)
virtual

Definition at line 75 of file swcomprs.cpp.

75  {
76  if (ibuf) {
77  init();
78  slen = (len) ? *len : strlen(ibuf);
79  buf = (char *) calloc(slen + 1, 1);
80  memcpy(buf, ibuf, slen);
81  }
82  if (!buf) {
83  buf = (char *)calloc(1,1); // be sure we at least allocate an empty buf for return;
84  direct = 1;
85  decode();
86  if (len) *len = slen;
87  }
88 }
virtual void decode(void)
Definition: swcomprs.cpp:193
unsigned long slen
Definition: swcomprs.h:39
char * buf
Definition: swcomprs.h:38
void init()
Definition: swcomprs.cpp:57
char direct
Definition: swcomprs.h:38

Member Data Documentation

char* SWCompress::buf
mutableprotected

Definition at line 38 of file swcomprs.h.

char SWCompress::direct
mutableprotected

Definition at line 38 of file swcomprs.h.

int SWCompress::level
protected

Definition at line 40 of file swcomprs.h.

unsigned long SWCompress::pos
protected

Definition at line 39 of file swcomprs.h.

unsigned long SWCompress::slen
protected

Definition at line 39 of file swcomprs.h.

char * SWCompress::zbuf
mutableprotected

Definition at line 38 of file swcomprs.h.

unsigned long SWCompress::zlen
protected

Definition at line 39 of file swcomprs.h.

unsigned long SWCompress::zpos
protected

Definition at line 39 of file swcomprs.h.


The documentation for this class was generated from the following files: