gwenhywfar
4.3.1
|
00001 /********************************************************** 00002 * This file has been automatically created by "typemaker2" 00003 * from the file "gwen_sar_fileheader.xml". 00004 * Please do not edit this file, all changes will be lost. 00005 * Better edit the mentioned source file instead. 00006 **********************************************************/ 00007 00008 #ifdef HAVE_CONFIG_H 00009 # include <config.h> 00010 #endif 00011 00012 #include "gwen_sar_fileheader_p.h" 00013 00014 #include <gwenhywfar/misc.h> 00015 #include <gwenhywfar/debug.h> 00016 00017 /* code headers */ 00018 00019 /* macro functions */ 00020 GWEN_LIST_FUNCTIONS(GWEN_SAR_FILEHEADER, GWEN_SarFileHeader) 00021 GWEN_LIST2_FUNCTIONS(GWEN_SAR_FILEHEADER, GWEN_SarFileHeader) 00022 00023 00024 GWEN_SAR_FILEHEADER_FTYPE GWEN_SarFileHeader_FType_fromString(const char *p_s) { 00025 if (p_s && *p_s) { 00026 if (strcasecmp(p_s, "none") == 0) 00027 return GWEN_SarFileHeader_FType_None; 00028 else if (strcasecmp(p_s, "file") == 0) 00029 return GWEN_SarFileHeader_FType_File; 00030 else if (strcasecmp(p_s, "dir") == 0) 00031 return GWEN_SarFileHeader_FType_Dir; 00032 else if (strcasecmp(p_s, "symLink") == 0) 00033 return GWEN_SarFileHeader_FType_SymLink; 00034 } 00035 return GWEN_SarFileHeader_FType_Unknown; 00036 } 00037 00038 GWEN_SAR_FILEHEADER_STATUS GWEN_SarFileHeader_Status_fromString(const char *p_s) { 00039 if (p_s && *p_s) { 00040 if (strcasecmp(p_s, "active") == 0) 00041 return GWEN_SarFileHeader_Status_Active; 00042 else if (strcasecmp(p_s, "deleted") == 0) 00043 return GWEN_SarFileHeader_Status_Deleted; 00044 } 00045 return GWEN_SarFileHeader_Status_Unknown; 00046 } 00047 00048 const char *GWEN_SarFileHeader_FType_toString(GWEN_SAR_FILEHEADER_FTYPE p_i) { 00049 switch(p_i) { 00050 case GWEN_SarFileHeader_FType_None: 00051 return "none"; 00052 case GWEN_SarFileHeader_FType_File: 00053 return "file"; 00054 case GWEN_SarFileHeader_FType_Dir: 00055 return "dir"; 00056 case GWEN_SarFileHeader_FType_SymLink: 00057 return "symLink"; 00058 default: 00059 return "unknown"; 00060 } 00061 } 00062 00063 const char *GWEN_SarFileHeader_Status_toString(GWEN_SAR_FILEHEADER_STATUS p_i) { 00064 switch(p_i) { 00065 case GWEN_SarFileHeader_Status_Active: 00066 return "active"; 00067 case GWEN_SarFileHeader_Status_Deleted: 00068 return "deleted"; 00069 default: 00070 return "unknown"; 00071 } 00072 } 00073 00074 GWEN_SAR_FILEHEADER *GWEN_SarFileHeader_new(void) { 00075 GWEN_SAR_FILEHEADER *p_struct; 00076 00077 GWEN_NEW_OBJECT(GWEN_SAR_FILEHEADER, p_struct) 00078 p_struct->_refCount = 1; 00079 GWEN_LIST_INIT(GWEN_SAR_FILEHEADER, p_struct) 00080 /* members */ 00081 p_struct->status = 0; 00082 p_struct->flags = 0; 00083 p_struct->path = NULL; 00084 p_struct->fileType = 0; 00085 p_struct->permissions = 0; 00086 p_struct->atime = NULL; 00087 p_struct->mtime = NULL; 00088 p_struct->ctime = NULL; 00089 p_struct->fileSize = 0; 00090 p_struct->headerStartPos = 0; 00091 p_struct->headerSize = 0; 00092 p_struct->dataPos = 0; 00093 p_struct->dataSize = 0; 00094 p_struct->hashPos = 0; 00095 00096 return p_struct; 00097 } 00098 00099 void GWEN_SarFileHeader_free(GWEN_SAR_FILEHEADER *p_struct) { 00100 if (p_struct) { 00101 assert(p_struct->_refCount); 00102 if (p_struct->_refCount == 1) { 00103 GWEN_LIST_FINI(GWEN_SAR_FILEHEADER, p_struct) 00104 /* members */ 00105 free(p_struct->path); 00106 GWEN_Time_free(p_struct->atime); 00107 GWEN_Time_free(p_struct->mtime); 00108 GWEN_Time_free(p_struct->ctime); 00109 p_struct->_refCount = 0; 00110 GWEN_FREE_OBJECT(p_struct); 00111 } else 00112 p_struct->_refCount--; 00113 } 00114 } 00115 00116 void GWEN_SarFileHeader_Attach(GWEN_SAR_FILEHEADER *p_struct) { 00117 assert(p_struct); 00118 assert(p_struct->_refCount); 00119 p_struct->_refCount++; 00120 } 00121 00122 GWEN_SAR_FILEHEADER *GWEN_SarFileHeader_dup(const GWEN_SAR_FILEHEADER *p_src) { 00123 GWEN_SAR_FILEHEADER *p_struct; 00124 00125 assert(p_src); 00126 p_struct = GWEN_SarFileHeader_new(); 00127 /* member "status" */ 00128 p_struct->status = p_src->status; 00129 00130 /* member "flags" */ 00131 p_struct->flags = p_src->flags; 00132 00133 /* member "path" */ 00134 if (p_struct->path) { 00135 free(p_struct->path); 00136 p_struct->path = NULL; 00137 } 00138 if (p_src->path) { 00139 p_struct->path = strdup(p_src->path); 00140 } 00141 00142 /* member "fileType" */ 00143 p_struct->fileType = p_src->fileType; 00144 00145 /* member "permissions" */ 00146 p_struct->permissions = p_src->permissions; 00147 00148 /* member "atime" */ 00149 if (p_struct->atime) { 00150 GWEN_Time_free(p_struct->atime); 00151 p_struct->atime = NULL; 00152 } 00153 if (p_src->atime) { 00154 p_struct->atime = GWEN_Time_dup(p_src->atime); 00155 } 00156 00157 /* member "mtime" */ 00158 if (p_struct->mtime) { 00159 GWEN_Time_free(p_struct->mtime); 00160 p_struct->mtime = NULL; 00161 } 00162 if (p_src->mtime) { 00163 p_struct->mtime = GWEN_Time_dup(p_src->mtime); 00164 } 00165 00166 /* member "ctime" */ 00167 if (p_struct->ctime) { 00168 GWEN_Time_free(p_struct->ctime); 00169 p_struct->ctime = NULL; 00170 } 00171 if (p_src->ctime) { 00172 p_struct->ctime = GWEN_Time_dup(p_src->ctime); 00173 } 00174 00175 /* member "fileSize" */ 00176 p_struct->fileSize = p_src->fileSize; 00177 00178 /* member "headerStartPos" */ 00179 p_struct->headerStartPos = p_src->headerStartPos; 00180 00181 /* member "headerSize" */ 00182 p_struct->headerSize = p_src->headerSize; 00183 00184 /* member "dataPos" */ 00185 p_struct->dataPos = p_src->dataPos; 00186 00187 /* member "dataSize" */ 00188 p_struct->dataSize = p_src->dataSize; 00189 00190 /* member "hashPos" */ 00191 p_struct->hashPos = p_src->hashPos; 00192 00193 return p_struct; 00194 } 00195 00196 int GWEN_SarFileHeader_GetStatus(const GWEN_SAR_FILEHEADER *p_struct) { 00197 assert(p_struct); 00198 return p_struct->status; 00199 } 00200 00201 uint32_t GWEN_SarFileHeader_GetFlags(const GWEN_SAR_FILEHEADER *p_struct) { 00202 assert(p_struct); 00203 return p_struct->flags; 00204 } 00205 00206 const char *GWEN_SarFileHeader_GetPath(const GWEN_SAR_FILEHEADER *p_struct) { 00207 assert(p_struct); 00208 return p_struct->path; 00209 } 00210 00211 int GWEN_SarFileHeader_GetFileType(const GWEN_SAR_FILEHEADER *p_struct) { 00212 assert(p_struct); 00213 return p_struct->fileType; 00214 } 00215 00216 uint32_t GWEN_SarFileHeader_GetPermissions(const GWEN_SAR_FILEHEADER *p_struct) { 00217 assert(p_struct); 00218 return p_struct->permissions; 00219 } 00220 00221 const GWEN_TIME *GWEN_SarFileHeader_GetAtime(const GWEN_SAR_FILEHEADER *p_struct) { 00222 assert(p_struct); 00223 return p_struct->atime; 00224 } 00225 00226 const GWEN_TIME *GWEN_SarFileHeader_GetMtime(const GWEN_SAR_FILEHEADER *p_struct) { 00227 assert(p_struct); 00228 return p_struct->mtime; 00229 } 00230 00231 const GWEN_TIME *GWEN_SarFileHeader_GetCtime(const GWEN_SAR_FILEHEADER *p_struct) { 00232 assert(p_struct); 00233 return p_struct->ctime; 00234 } 00235 00236 uint64_t GWEN_SarFileHeader_GetFileSize(const GWEN_SAR_FILEHEADER *p_struct) { 00237 assert(p_struct); 00238 return p_struct->fileSize; 00239 } 00240 00241 uint64_t GWEN_SarFileHeader_GetHeaderStartPos(const GWEN_SAR_FILEHEADER *p_struct) { 00242 assert(p_struct); 00243 return p_struct->headerStartPos; 00244 } 00245 00246 uint64_t GWEN_SarFileHeader_GetHeaderSize(const GWEN_SAR_FILEHEADER *p_struct) { 00247 assert(p_struct); 00248 return p_struct->headerSize; 00249 } 00250 00251 uint64_t GWEN_SarFileHeader_GetDataPos(const GWEN_SAR_FILEHEADER *p_struct) { 00252 assert(p_struct); 00253 return p_struct->dataPos; 00254 } 00255 00256 uint64_t GWEN_SarFileHeader_GetDataSize(const GWEN_SAR_FILEHEADER *p_struct) { 00257 assert(p_struct); 00258 return p_struct->dataSize; 00259 } 00260 00261 uint64_t GWEN_SarFileHeader_GetHashPos(const GWEN_SAR_FILEHEADER *p_struct) { 00262 assert(p_struct); 00263 return p_struct->hashPos; 00264 } 00265 00266 void GWEN_SarFileHeader_SetStatus(GWEN_SAR_FILEHEADER *p_struct, int p_src) { 00267 assert(p_struct); 00268 p_struct->status = p_src; 00269 } 00270 00271 void GWEN_SarFileHeader_AddStatus(GWEN_SAR_FILEHEADER *p_struct, int p_src) { 00272 assert(p_struct); 00273 p_struct->status |= p_src; 00274 } 00275 00276 void GWEN_SarFileHeader_SubStatus(GWEN_SAR_FILEHEADER *p_struct, int p_src) { 00277 assert(p_struct); 00278 p_struct->status &= ~p_src; 00279 } 00280 00281 void GWEN_SarFileHeader_SetFlags(GWEN_SAR_FILEHEADER *p_struct, uint32_t p_src) { 00282 assert(p_struct); 00283 p_struct->flags = p_src; 00284 } 00285 00286 void GWEN_SarFileHeader_AddFlags(GWEN_SAR_FILEHEADER *p_struct, uint32_t p_src) { 00287 assert(p_struct); 00288 p_struct->flags |= p_src; 00289 } 00290 00291 void GWEN_SarFileHeader_SubFlags(GWEN_SAR_FILEHEADER *p_struct, uint32_t p_src) { 00292 assert(p_struct); 00293 p_struct->flags &= ~p_src; 00294 } 00295 00296 void GWEN_SarFileHeader_SetPath(GWEN_SAR_FILEHEADER *p_struct, const char *p_src) { 00297 assert(p_struct); 00298 if (p_struct->path) { 00299 free(p_struct->path); 00300 } 00301 if (p_src) { 00302 p_struct->path = strdup(p_src); 00303 } else { 00304 p_struct->path = NULL; 00305 } 00306 } 00307 00308 void GWEN_SarFileHeader_SetFileType(GWEN_SAR_FILEHEADER *p_struct, int p_src) { 00309 assert(p_struct); 00310 p_struct->fileType = p_src; 00311 } 00312 00313 void GWEN_SarFileHeader_SetPermissions(GWEN_SAR_FILEHEADER *p_struct, uint32_t p_src) { 00314 assert(p_struct); 00315 p_struct->permissions = p_src; 00316 } 00317 00318 void GWEN_SarFileHeader_AddPermissions(GWEN_SAR_FILEHEADER *p_struct, uint32_t p_src) { 00319 assert(p_struct); 00320 p_struct->permissions |= p_src; 00321 } 00322 00323 void GWEN_SarFileHeader_SubPermissions(GWEN_SAR_FILEHEADER *p_struct, uint32_t p_src) { 00324 assert(p_struct); 00325 p_struct->permissions &= ~p_src; 00326 } 00327 00328 void GWEN_SarFileHeader_SetAtime(GWEN_SAR_FILEHEADER *p_struct, GWEN_TIME *p_src) { 00329 assert(p_struct); 00330 if (p_struct->atime) { 00331 GWEN_Time_free(p_struct->atime); 00332 } 00333 p_struct->atime = p_src; 00334 } 00335 00336 void GWEN_SarFileHeader_SetMtime(GWEN_SAR_FILEHEADER *p_struct, GWEN_TIME *p_src) { 00337 assert(p_struct); 00338 if (p_struct->mtime) { 00339 GWEN_Time_free(p_struct->mtime); 00340 } 00341 p_struct->mtime = p_src; 00342 } 00343 00344 void GWEN_SarFileHeader_SetCtime(GWEN_SAR_FILEHEADER *p_struct, GWEN_TIME *p_src) { 00345 assert(p_struct); 00346 if (p_struct->ctime) { 00347 GWEN_Time_free(p_struct->ctime); 00348 } 00349 p_struct->ctime = p_src; 00350 } 00351 00352 void GWEN_SarFileHeader_SetFileSize(GWEN_SAR_FILEHEADER *p_struct, uint64_t p_src) { 00353 assert(p_struct); 00354 p_struct->fileSize = p_src; 00355 } 00356 00357 void GWEN_SarFileHeader_SetHeaderStartPos(GWEN_SAR_FILEHEADER *p_struct, uint64_t p_src) { 00358 assert(p_struct); 00359 p_struct->headerStartPos = p_src; 00360 } 00361 00362 void GWEN_SarFileHeader_SetHeaderSize(GWEN_SAR_FILEHEADER *p_struct, uint64_t p_src) { 00363 assert(p_struct); 00364 p_struct->headerSize = p_src; 00365 } 00366 00367 void GWEN_SarFileHeader_SetDataPos(GWEN_SAR_FILEHEADER *p_struct, uint64_t p_src) { 00368 assert(p_struct); 00369 p_struct->dataPos = p_src; 00370 } 00371 00372 void GWEN_SarFileHeader_SetDataSize(GWEN_SAR_FILEHEADER *p_struct, uint64_t p_src) { 00373 assert(p_struct); 00374 p_struct->dataSize = p_src; 00375 } 00376 00377 void GWEN_SarFileHeader_SetHashPos(GWEN_SAR_FILEHEADER *p_struct, uint64_t p_src) { 00378 assert(p_struct); 00379 p_struct->hashPos = p_src; 00380 } 00381 00382 GWEN_SAR_FILEHEADER_LIST *GWEN_SarFileHeader_List_dup(const GWEN_SAR_FILEHEADER_LIST *p_src) { 00383 GWEN_SAR_FILEHEADER_LIST *p_dest; 00384 GWEN_SAR_FILEHEADER *p_elem; 00385 00386 assert(p_src); 00387 p_dest = GWEN_SarFileHeader_List_new(); 00388 p_elem = GWEN_SarFileHeader_List_First(p_src); 00389 while(p_elem) { 00390 GWEN_SAR_FILEHEADER *p_cpy; 00391 00392 p_cpy = GWEN_SarFileHeader_dup(p_elem); 00393 GWEN_SarFileHeader_List_Add(p_cpy, p_dest); 00394 p_elem = GWEN_SarFileHeader_List_Next(p_elem); 00395 } 00396 00397 return p_dest; 00398 } 00399 00400 00401 /* code headers */ 00402