1 | #ifndef EPUB_H |
2 | #define EPUB_H 1 |
3 | |
4 | #include <epub_shared.h> |
5 | /** \struct epub is a private struct containting information about the epub file */ |
6 | struct epub; |
7 | |
8 | /** \struct eiterator is a private iterator struct */ |
9 | struct eiterator; |
10 | struct titerator; |
11 | |
12 | #ifdef __cplusplus |
13 | extern "C" { |
14 | #endif /* C++ */ |
15 | |
16 | /** |
17 | This function accepts an epub filename. It then parses its information and |
18 | returns it as an epub struct. |
19 | |
20 | @param filename the name of the file to open |
21 | @param debug is the debug level (0=none, 1=errors, 2=warnings, 3=info) |
22 | @return epub struct with the information of the file or NULL on error |
23 | |
24 | */ |
25 | EPUB_EXPORT struct epub *epub_open(const char *filename, int debug); |
26 | |
27 | /** |
28 | This function sets the debug level to the given level. |
29 | |
30 | @param filename is the name of the file to open |
31 | @param debug is the debug level (0=none, 1=errors, 2=warnings, 3=info) |
32 | */ |
33 | EPUB_EXPORT void epub_set_debug(struct epub *epub, int debug); |
34 | |
35 | /** |
36 | returns the file with the give filename |
37 | |
38 | @param epub struct of the epub file we want to read from |
39 | @param filename the name of the file we want to read |
40 | @param pointer to where the file data is stored |
41 | @return the number of bytes read |
42 | */ |
43 | EPUB_EXPORT int epub_get_ocf_file(struct epub *epub, const char *filename, char **data); |
44 | |
45 | /** |
46 | Frees the memory held by the given iterator |
47 | |
48 | @param it the iterator |
49 | */ |
50 | EPUB_EXPORT void epub_free_iterator(struct eiterator *it); |
51 | |
52 | /** |
53 | This function closes a given epub. It also frees the epub struct. |
54 | So you can use it after calling this function. |
55 | |
56 | @param epub the struct of the epub to close. |
57 | */ |
58 | EPUB_EXPORT int epub_close(struct epub *epub); |
59 | |
60 | /** |
61 | Debugging function dumping various file information. |
62 | |
63 | @param epub the struct of the epub to close. |
64 | */ |
65 | EPUB_EXPORT void epub_dump(struct epub *epub); |
66 | |
67 | |
68 | /** |
69 | (Bad xml might cause some of it to be NULL). |
70 | |
71 | @param epub the struct . |
72 | */ |
73 | EPUB_EXPORT unsigned char **epub_get_metadata(struct epub *epub, enum epub_metadata type, |
74 | int *size); |
75 | |
76 | /** |
77 | returns the file with the give filename. The file is looked |
78 | for in the data directory. (Useful for getting book files). |
79 | |
80 | @param epub struct of the epub file we want to read from |
81 | @param filename the name of the file we want to read |
82 | @param pointer to where the file data is stored |
83 | @return the number of bytes read |
84 | */ |
85 | EPUB_EXPORT int epub_get_data(struct epub *epub, const char *name, char **data); |
86 | |
87 | |
88 | /** |
89 | Returns a book iterator of the requested type |
90 | for the given epub struct. |
91 | |
92 | @param epub struct of the epub file |
93 | @param type the iterator type |
94 | @param opt other options (ignored for now) |
95 | @return eiterator to the epub book |
96 | */ |
97 | EPUB_EXPORT struct eiterator *epub_get_iterator(struct epub *epub, |
98 | enum eiterator_type type, int opt); |
99 | |
100 | /** |
101 | updates the iterator to the next element and returns a pointer |
102 | to the data. the iterator handles the freeing of the memory. |
103 | |
104 | @param it the iterator |
105 | @return pointer to the data |
106 | */ |
107 | EPUB_EXPORT char *epub_it_get_next(struct eiterator *it); |
108 | |
109 | /** |
110 | Returns a pointer to the iterator's data. the iterator handles |
111 | the freeing of the memory. |
112 | |
113 | @param it the iterator |
114 | @return pointer to the data |
115 | */ |
116 | EPUB_EXPORT char *epub_it_get_curr(struct eiterator *it); |
117 | |
118 | /** |
119 | Returns a pointer to the url of the iterator's current data. |
120 | the iterator handles the freeing of the memory. |
121 | |
122 | @param it the iterator |
123 | @return pointer to the current data's url |
124 | */ |
125 | EPUB_EXPORT char *epub_it_get_curr_url(struct eiterator *it); |
126 | |
127 | /** |
128 | Returns a book toc iterator of the requested type |
129 | for the given epub struct. |
130 | |
131 | @param epub struct of the epub file |
132 | @param type the iterator type |
133 | @param opt other options (ignored for now) |
134 | @return toc iterator to the epub book |
135 | */ |
136 | EPUB_EXPORT struct titerator *epub_get_titerator(struct epub *epub, |
137 | enum titerator_type type, int opt); |
138 | |
139 | |
140 | /** |
141 | Returns 1 if the current entry is valid and 0 otherwise. |
142 | |
143 | @param tit the iterator |
144 | @return 1 if the current entry is valid and 0 otherwise |
145 | */ |
146 | EPUB_EXPORT int epub_tit_curr_valid(struct titerator *tit); |
147 | |
148 | /** |
149 | Returns a pointer to the depth of the toc iterator's current entry. |
150 | the iterator handles the freeing of the memory. |
151 | |
152 | @param tit the iterator |
153 | @return pointer to the current entry's depth |
154 | */ |
155 | EPUB_EXPORT int epub_tit_get_curr_depth(struct titerator *tit); |
156 | |
157 | /** |
158 | Returns a pointer to the link of the toc iterator's current entry. |
159 | the iterator handles the freeing of the memory. |
160 | |
161 | @param tit the iterator |
162 | @return the current entry's depth |
163 | */ |
164 | EPUB_EXPORT char *epub_tit_get_curr_link(struct titerator *tit); |
165 | |
166 | /** |
167 | Returns a pointer to the label of the toc iterator's current entry. |
168 | the iterator handles the freeing of the memory. |
169 | |
170 | @param tit the iterator |
171 | @return pointer to the current entry's lable |
172 | */ |
173 | EPUB_EXPORT char *epub_tit_get_curr_label(struct titerator *tit); |
174 | |
175 | /** |
176 | Frees the memory held by the given iterator |
177 | |
178 | @param tit the iterator |
179 | */ |
180 | EPUB_EXPORT void epub_free_titerator(struct titerator *tit); |
181 | |
182 | /** |
183 | updates the iterator to the next element. |
184 | |
185 | @param tit the iterator |
186 | @return 1 on success and 0 otherwise |
187 | */ |
188 | EPUB_EXPORT int epub_tit_next(struct titerator *tit); |
189 | |
190 | /** |
191 | Cleans up after the library. Call this when you are done with the library. |
192 | */ |
193 | EPUB_EXPORT void epub_cleanup(); |
194 | |
195 | #ifdef __cplusplus |
196 | } |
197 | #endif /* C++ */ |
198 | |
199 | #endif /* EPUB_H */ |
200 | |