00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062 #ifndef RECLS_DOCUMENTATION_SKIP_SECTION
00063 # define RECLS_VER_H_RECLS_PLATFORM_TYPES_MAJOR 1
00064 # define RECLS_VER_H_RECLS_PLATFORM_TYPES_MINOR 4
00065 # define RECLS_VER_H_RECLS_PLATFORM_TYPES_REVISION 1
00066 # define RECLS_VER_H_RECLS_PLATFORM_TYPES_EDIT 9
00067 #endif
00068
00071
00072
00073
00074
00075 #ifndef RECLS_INCL_H_RECLS_PLATFORM
00076 # error recls_platform_types.h must not be included directly. You should include recls.h
00077 #endif
00078
00079 #if defined(RECLS_PLATFORM_IS_WIN32)
00080
00081 #elif defined(RECLS_PLATFORM_IS_UNIX)
00082 # include <time.h>
00083 # include <sys/types.h>
00084 #else
00085 # error Platform not (yet) recognised
00086 #endif
00087
00088
00089
00090
00091
00092 #if !defined(RECLS_NO_NAMESPACE)
00093 namespace recls
00094 {
00095 #endif
00096
00097
00098
00099
00100
00104 #if defined(RECLS_PLATFORM_IS_WIN32)
00105
00106 typedef FILETIME recls_time_t;
00107 typedef ULARGE_INTEGER recls_filesize_t;
00108
00109 #elif defined(RECLS_PLATFORM_IS_UNIX)
00110
00111 typedef time_t recls_time_t;
00112 typedef off_t recls_filesize_t;
00113
00114 #else
00115
00116 # error Platform not (yet) recognised
00117
00118 typedef platform-dependent-type recls_time_t;
00119 typedef platform-dependent-type recls_filesize_t;
00120
00121 #endif
00122
00123
00124
00125
00126
00127 #if defined(_UNICODE) && \
00128 !defined(UNICODE)
00129 # define UNICODE
00130 #endif
00131
00132 #if defined(UNICODE) && \
00133 !defined(_UNICODE)
00134 # define _UNICODE
00135 #endif
00136
00137 #ifdef RECLS_CHAR_TYPE_IS_CHAR
00138 # undef RECLS_CHAR_TYPE_IS_CHAR
00139 #endif
00140
00141 #ifdef RECLS_CHAR_TYPE_IS_WCHAR
00142 # undef RECLS_CHAR_TYPE_IS_WCHAR
00143 #endif
00144
00146 #if defined(UNICODE) && \
00147 !defined(RECLS_NO_UNICODE)
00148 typedef recls_char_w_t recls_char_t;
00149 # define RECLS_CHAR_TYPE_IS_WCHAR
00150 #else
00151 typedef recls_char_a_t recls_char_t;
00152 # define RECLS_CHAR_TYPE_IS_CHAR
00153 #endif
00154
00155
00157 struct recls_strptrs_t
00158 {
00160 recls_char_t const *begin;
00162 recls_char_t const *end;
00163 };
00164
00166 struct recls_strptrsptrs_t
00167 {
00169 struct recls_strptrs_t const *begin;
00171 struct recls_strptrs_t const *end;
00172 };
00173
00178 struct recls_fileinfo_t
00179 {
00183 recls_uint32_t attributes;
00188 struct recls_strptrs_t path;
00189 #if defined(RECLS_PLATFORM_IS_WIN32)
00190
00194 struct recls_strptrs_t shortFile;
00196 recls_char_t drive;
00197 #endif
00198
00199 struct recls_strptrs_t directory;
00201 struct recls_strptrs_t fileName;
00203 struct recls_strptrs_t fileExt;
00205 struct recls_strptrsptrs_t directoryParts;
00209 #if defined(RECLS_PLATFORM_IS_WIN32)
00210
00214 recls_time_t creationTime;
00215 #endif
00216
00217 recls_time_t modificationTime;
00219 recls_time_t lastAccessTime;
00220 #if defined(RECLS_PLATFORM_IS_UNIX)
00221
00225 recls_time_t lastStatusChangeTime;
00226 #endif
00227
00231 recls_filesize_t size;
00233
00235 recls_byte_t data[1];
00236
00237
00238
00239
00240
00241
00242 };
00243
00244
00245
00246
00247
00248 #if !defined(RECLS_NO_NAMESPACE)
00249 }
00250 #endif
00251
00252
00253
00254
00255
00256