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 #ifndef RECLS_DOCUMENTATION_SKIP_SECTION
00046 # define RECLS_VER_H_RECLS_PLATFORM_TYPES_MAJOR 2
00047 # define RECLS_VER_H_RECLS_PLATFORM_TYPES_MINOR 0
00048 # define RECLS_VER_H_RECLS_PLATFORM_TYPES_REVISION 2
00049 # define RECLS_VER_H_RECLS_PLATFORM_TYPES_EDIT 16
00050 #endif
00051
00054
00055
00056
00057
00058 #ifndef RECLS_INCL_H_RECLS_PLATFORM
00059 # error recls_platform_types.h must not be included directly. You should include recls.h
00060 #endif
00061
00062 #if defined(RECLS_PURE_API) || \
00063 defined(RECLS_PLATFORM_IS_UNIX)
00064 # include <time.h>
00065 # include <sys/types.h>
00066 #elif defined(RECLS_PLATFORM_IS_WIN32)
00067 # include <windows.h>
00068 #elif defined(RECLS_OVERRIDE_PLATFORM)
00069
00070 #else
00071 # error Platform not (yet) recognised
00072 #endif
00073
00074
00075
00076
00077
00078 #if !defined(RECLS_NO_NAMESPACE)
00079 namespace recls
00080 {
00081 #endif
00082
00083
00084
00085
00086
00090 #if defined(RECLS_PURE_API) || \
00091 defined(RECLS_PLATFORM_IS_UNIX)
00092
00093 typedef time_t recls_time_t;
00094 typedef off_t recls_filesize_t;
00095
00096 #elif defined(RECLS_PLATFORM_IS_WIN32)
00097
00098 typedef FILETIME recls_time_t;
00099 typedef ULARGE_INTEGER recls_filesize_t;
00100
00101 #elif defined(RECLS_OVERRIDE_PLATFORM)
00102
00103 # ifndef RECLS_CUSTOM_TIME_T
00104 # error Must define RECLS_CUSTOM_TIME_T if compiling with RECLS_OVERRIDE_PLATFORM
00105 # endif
00106
00107 # ifndef RECLS_CUSTOM_FILESIZE_T
00108 # error Must define RECLS_CUSTOM_FILESIZE_T if compiling with RECLS_OVERRIDE_PLATFORM
00109 # endif
00110
00111 typedef RECLS_CUSTOM_TIME_T recls_time_t;
00112 typedef RECLS_CUSTOM_FILESIZE_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 #if !defined(RECLS_PURE_API)
00181 struct recls_fileinfo_t
00182 {
00186 recls_uint32_t attributes;
00194 struct recls_strptrs_t path;
00195 # if defined(RECLS_PLATFORM_IS_WIN32)
00196
00201 struct recls_strptrs_t shortFile;
00203 recls_char_t drive;
00204 # endif
00205
00209 struct recls_strptrs_t directory;
00214 struct recls_strptrs_t fileName;
00219 struct recls_strptrs_t fileExt;
00224 struct recls_strptrsptrs_t directoryParts;
00228 # if defined(RECLS_PLATFORM_IS_WIN32)
00229
00233 recls_time_t creationTime;
00234 # endif
00235
00236 recls_time_t modificationTime;
00238 recls_time_t lastAccessTime;
00239 # if defined(RECLS_PLATFORM_IS_UNIX)
00240
00244 recls_time_t lastStatusChangeTime;
00245 # endif
00246
00250 recls_filesize_t size;
00252
00256 recls_byte_t data[1];
00257
00258
00259
00260
00261
00262
00263 };
00264 #endif
00265
00266
00267
00268
00269
00270 #if !defined(RECLS_NO_NAMESPACE)
00271 }
00272 #endif
00273
00274
00275
00276
00277
00278