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 5
00065 # define RECLS_VER_H_RECLS_PLATFORM_TYPES_REVISION 1
00066 # define RECLS_VER_H_RECLS_PLATFORM_TYPES_EDIT 12
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 # define RECLS_LITERAL(x) L ## x
00151 #else
00152 typedef recls_char_a_t recls_char_t;
00153 # define RECLS_CHAR_TYPE_IS_CHAR
00154 # define RECLS_LITERAL(x) x
00155 #endif
00156
00157
00159 struct recls_strptrs_t
00160 {
00162 recls_char_t const *begin;
00164 recls_char_t const *end;
00165 };
00166
00168 struct recls_strptrsptrs_t
00169 {
00171 struct recls_strptrs_t const *begin;
00173 struct recls_strptrs_t const *end;
00174 };
00175
00180 struct recls_fileinfo_t
00181 {
00185 recls_uint32_t attributes;
00193 struct recls_strptrs_t path;
00194 #if defined(RECLS_PLATFORM_IS_WIN32)
00195
00200 struct recls_strptrs_t shortFile;
00202 recls_char_t drive;
00203 #endif
00204
00208 struct recls_strptrs_t directory;
00213 struct recls_strptrs_t fileName;
00218 struct recls_strptrs_t fileExt;
00223 struct recls_strptrsptrs_t directoryParts;
00227 #if defined(RECLS_PLATFORM_IS_WIN32)
00228
00232 recls_time_t creationTime;
00233 #endif
00234
00235 recls_time_t modificationTime;
00237 recls_time_t lastAccessTime;
00238 #if defined(RECLS_PLATFORM_IS_UNIX)
00239
00243 recls_time_t lastStatusChangeTime;
00244 #endif
00245
00249 recls_filesize_t size;
00251
00255 recls_byte_t data[1];
00256
00257
00258
00259
00260
00261
00262 };
00263
00264
00265
00266
00267
00268 #if !defined(RECLS_NO_NAMESPACE)
00269 }
00270 #endif
00271
00272
00273
00274
00275
00276