Skip to content

Commit 77bca11

Browse files
committed
Now supports reading blob files.
1 parent ff8798e commit 77bca11

File tree

4 files changed

+524
-222
lines changed

4 files changed

+524
-222
lines changed

paradox.pxd

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ cdef extern from "paradox.h":
4646
pxfFileTypSecIndex = 4
4747
pxfFileTypIncSecIndex = 5
4848
pxfFileTypNonIncSecIndexG = 6
49-
pxfFileTypSecIndexG = 7
50-
pxfFileTypIncSecIndexG = 8
49+
pxfFileTypSecIndexG = 7
50+
pxfFileTypIncSecIndexG = 8
5151

5252
ctypedef struct pxfield_t:
5353
char *px_fname
@@ -86,38 +86,43 @@ cdef extern from "paradox.h":
8686
ctypedef struct pxdoc_t:
8787
char *px_name
8888
pxhead_t *px_head
89-
char *targetencoding
9089
void *(*malloc)(pxdoc_t *p, unsigned int size, char *caller)
9190
void (*free)(pxdoc_t *p, void *mem)
91+
char *targetencoding
92+
char *inputencoding
93+
pxblob_t *px_blob
9294

9395
ctypedef struct pxdatablockinfo_t
96+
9497
ctypedef struct pxblob_t:
95-
char *px_name
96-
pxdoc_t * pxdoc
98+
char *mb_name
99+
pxdoc_t *pxdoc
97100

98101
ctypedef struct pxpindex_t
99-
ctypedef struct pxstream_t
100102

103+
ctypedef struct pxstream_t
101104

102105
ctypedef struct Pxval_str:
103106
char *val
104107
int len
108+
105109
ctypedef union Pxval_value:
106110
long lval
107111
double dval
108112
Pxval_str str
113+
109114
ctypedef struct pxval_t:
110115
char isnull
111116
int type
112117
Pxval_value value
113118

114119

115-
pxdoc_t *PX_new()
120+
pxdoc_t* PX_new()
116121
pxdoc_t* PX_new2(void (*errorhandler)(pxdoc_t *p, int type, const_char_ptr msg, void *data),
117122
void* (*allocproc)(pxdoc_t *p, size_t size, const_char_ptr caller),
118123
void* (*reallocproc)(pxdoc_t *p, void *mem, size_t size, const_char_ptr caller),
119124
void (*freeproc)(pxdoc_t *p, void *mem))
120-
char *PX_strdup(pxdoc_t *pxdoc, char *str)
125+
char* PX_strdup(pxdoc_t *pxdoc, char *str)
121126
int PX_open_file(pxdoc_t *pxdoc, const_char_ptr filename)
122127
int PX_create_file(pxdoc_t *pxdoc, pxfield_t *px_fields, unsigned int numfields, char *filename, int type)
123128
int PX_read_primary_index(pxdoc_t *pindex)
@@ -126,28 +131,29 @@ cdef extern from "paradox.h":
126131
int PX_set_inputencoding(pxdoc_t *pxdoc, char *encoding)
127132
int PX_set_parameter(pxdoc_t *pxdoc, char *name, char *value)
128133
int PX_set_value(pxdoc_t *pxdoc, char *name, float value)
129-
pxblob_t *PX_new_blob(pxdoc_t *pxdoc)
130-
int PX_open_blob_file(pxblob_t *pxdoc, char *filename)
134+
int PX_set_blob_file(pxdoc_t *pxdoc, const_char_ptr filename)
135+
int PX_has_blob_file(pxdoc_t *pxdoc)
131136
int PX_close(pxdoc_t *pxdoc)
132-
int PX_close_blob(pxblob_t *pxdoc)
133-
void *PX_get_record(pxdoc_t *pxdoc, int recno, void *data)
134-
void *PX_get_record2(pxdoc_t *pxdoc, int recno, void *data, int *deleted, pxdatablockinfo_t *pxdbinfo)
137+
138+
void* PX_get_record(pxdoc_t *pxdoc, int recno, void *data)
139+
void* PX_get_record2(pxdoc_t *pxdoc, int recno, void *data, int *deleted, pxdatablockinfo_t *pxdbinfo)
135140
int PX_get_data_alpha(pxdoc_t *pxdoc, void *data, int len, char **value)
136141
int PX_get_data_bytes(pxdoc_t *pxdoc, void *data, int len, char **value)
137142
int PX_get_data_double(pxdoc_t *pxdoc, void *data, int len, double *value)
138143
int PX_get_data_long(pxdoc_t *pxdoc, void *data, int len, long *value)
139144
int PX_get_data_short(pxdoc_t *pxdoc, void *data, int len, short int *value)
140145
int PX_get_data_byte(pxdoc_t *pxdoc, void *data, int len, char *value)
146+
int PX_get_data_blob(pxdoc_t *pxdoc, void *data, int len, int *mod, int *blobsize, char **value)
147+
int PX_get_data_graphic(pxdoc_t *pxdoc, void *data, int len, int *mod, int *blobsize, char **value)
141148
int PX_get_parameter(pxdoc_t *pxdoc, const_char_ptr name, char **value)
149+
pxval_t** PX_retrieve_record(pxdoc_t *pxdoc, int recno)
142150

143151
int PX_put_record(pxdoc_t *pxdoc, char *data)
144-
145152
void PX_put_data_alpha(pxdoc_t *pxdoc, char *data, int len, char *value)
146153
void PX_put_data_double(pxdoc_t *pxdoc, char *data, int len, double value)
147154
void PX_put_data_long(pxdoc_t *pxdoc, char *data, int len, int value)
148155
void PX_put_data_short(pxdoc_t *pxdoc, char *data, int len, short int value)
149156

150-
char *PX_read_blobdata(pxblob_t *pxblob, void *data, int len, int *mod, int *blobsize)
151157
void PX_SdnToGregorian(long int sdn, int *pYear, int *pMonth, int *pDay)
152158
long int PX_GregorianToSdn(int year, int month, int day)
153159

0 commit comments

Comments
 (0)