File: tabzip.h

package info (click to toggle)
mariadb 1%3A11.8.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 772,520 kB
  • sloc: ansic: 2,414,714; cpp: 1,791,394; asm: 381,336; perl: 62,905; sh: 49,647; pascal: 40,897; java: 39,363; python: 20,791; yacc: 20,432; sql: 17,907; xml: 12,344; ruby: 8,544; cs: 6,542; makefile: 6,145; ada: 1,879; lex: 1,193; javascript: 996; objc: 80; tcl: 73; awk: 46; php: 22
file content (102 lines) | stat: -rw-r--r-- 3,381 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/*************** tabzip H Declares Source Code File (.H) ***************/
/*  Name: tabzip.h   Version 1.0                                       */
/*                                                                     */
/*  (C) Copyright to the author Olivier BERTRAND          2016         */
/*                                                                     */
/*  This file contains the ZIP classe declares.                        */
/***********************************************************************/
#include "osutil.h"
#include "block.h"
#include "colblk.h"
#include "xtable.h"
#include "unzip.h"

typedef class ZIPDEF *PZIPDEF;
typedef class TDBZIP *PTDBZIP;
typedef class ZIPCOL *PZIPCOL;

/***********************************************************************/
/*  ZIP table: display info about a ZIP file.                          */
/***********************************************************************/
class DllExport ZIPDEF : public DOSDEF {          /* Table description */
	friend class TDBZIP;
	friend class UNZFAM;
public:
	// Constructor
	ZIPDEF(void) = default;

	// Implementation
	const char *GetType(void) override {return "ZIP";}

	// Methods
	bool DefineAM(PGLOBAL g, LPCSTR am, int poff) override;
	PTDB GetTable(PGLOBAL g, MODE m) override;

protected:
	// Members
	PCSZ        target;								 // The inside file to query
}; // end of ZIPDEF

/***********************************************************************/
/*  This is the ZIP Access Method class declaration.                   */
/***********************************************************************/
class DllExport TDBZIP : public TDBASE {
	friend class ZIPCOL;
public:
	// Constructor
	TDBZIP(PZIPDEF tdp);

	// Implementation
	AMT  GetAmType(void) override {return TYPE_AM_ZIP;}
	PCSZ GetFile(PGLOBAL) override {return zfn;}
	void SetFile(PGLOBAL, PCSZ fn) override {zfn = fn;}

	// Methods
	PCOL MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n) override;
	int  Cardinality(PGLOBAL g) override;
	int  GetMaxSize(PGLOBAL g) override;
	int  GetRecpos(void) override {return 0;}

	// Database routines
	bool OpenDB(PGLOBAL g) override;
	int  ReadDB(PGLOBAL g) override;
	int  WriteDB(PGLOBAL g) override;
	int  DeleteDB(PGLOBAL g, int irc) override;
	void CloseDB(PGLOBAL g) override;

protected:
	bool open(PGLOBAL g, const char *filename);
	void close(void);

	// Members
	unzFile         zipfile;							   // The ZIP container file
	PCSZ            zfn;									   // The ZIP file name
//PSZ             target;
	unz_file_info64 finfo;									 // The current file info
	char            fn[FILENAME_MAX];     	 // The current file name
	int             nexterr;								 // Next file error
}; // end of class TDBZIP

/***********************************************************************/
/*  Class ZIPCOL: ZIP access method column descriptor.                 */
/***********************************************************************/
class DllExport ZIPCOL : public COLBLK {
	friend class TDBZIP;
public:
	// Constructors
	ZIPCOL(PCOLDEF cdp, PTDB tdbp, PCOL cprec, int i, PCSZ am = "ZIP");

	// Implementation
	int  GetAmType(void) override { return TYPE_AM_ZIP; }

	// Methods
	void ReadColumn(PGLOBAL g) override;

protected:
	// Default constructor not to be used
	ZIPCOL(void) = default;

	// Members
	TDBZIP *Tdbz;
	int     flag;
}; // end of class ZIPCOL