summaryrefslogtreecommitdiffstats
path: root/storage/connect/tabzip.h
diff options
context:
space:
mode:
Diffstat (limited to 'storage/connect/tabzip.h')
-rw-r--r--storage/connect/tabzip.h102
1 files changed, 102 insertions, 0 deletions
diff --git a/storage/connect/tabzip.h b/storage/connect/tabzip.h
new file mode 100644
index 00000000..3c16fae9
--- /dev/null
+++ b/storage/connect/tabzip.h
@@ -0,0 +1,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
+ virtual const char *GetType(void) {return "ZIP";}
+
+ // Methods
+ virtual bool DefineAM(PGLOBAL g, LPCSTR am, int poff);
+ virtual PTDB GetTable(PGLOBAL g, MODE m);
+
+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
+ virtual AMT GetAmType(void) {return TYPE_AM_ZIP;}
+ virtual PCSZ GetFile(PGLOBAL) {return zfn;}
+ virtual void SetFile(PGLOBAL, PCSZ fn) {zfn = fn;}
+
+ // Methods
+ virtual PCOL MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n);
+ virtual int Cardinality(PGLOBAL g);
+ virtual int GetMaxSize(PGLOBAL g);
+ virtual int GetRecpos(void) {return 0;}
+
+ // Database routines
+ virtual bool OpenDB(PGLOBAL g);
+ virtual int ReadDB(PGLOBAL g);
+ virtual int WriteDB(PGLOBAL g);
+ virtual int DeleteDB(PGLOBAL g, int irc);
+ virtual void CloseDB(PGLOBAL g);
+
+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
+ virtual int GetAmType(void) { return TYPE_AM_ZIP; }
+
+ // Methods
+ virtual void ReadColumn(PGLOBAL g);
+
+protected:
+ // Default constructor not to be used
+ ZIPCOL(void) = default;
+
+ // Members
+ TDBZIP *Tdbz;
+ int flag;
+}; // end of class ZIPCOL