  
    
main.htmlMain Page     
classes.htmlData Structures     
files.htmlFiles     
dirs.htmlDirectories   
  
    
files.htmlFile List     
globals.htmlGlobals   
dir_3c4fde49625df9344590fff295c7c38d.htmllibexif exif-mem.c
exif-mem_8c.htmlGo to the documentation of this file. 00001 #include < exif-mem_8h.htmllibexif/exif-mem.h > 00002 
00003 #include <stdlib.h> 00004 
struct__ExifMem.html00005  struct struct__ExifMem.html_ExifMem  {
struct__ExifMem.html#b90a70c1aa9a4a8554912b15c2ed1b1000006          unsigned int struct__ExifMem.html#b90a70c1aa9a4a8554912b15c2ed1b10ref_count ;
struct__ExifMem.html#344634ac1fc7b1c93e414eb9195c3fb400007          exif-mem_8h.html#48db6b9f5a4a0c307601e0eb322f9220ExifMemAllocFunc  struct__ExifMem.html#344634ac1fc7b1c93e414eb9195c3fb4alloc_func ;
struct__ExifMem.html#876668a73629e8e47896551a0ec3d64000008          exif-mem_8h.html#e6e3720feb853c27aba6ab6c23448c79ExifMemReallocFunc  struct__ExifMem.html#876668a73629e8e47896551a0ec3d640realloc_func ;
struct__ExifMem.html#dddd6286733460db3506c24202cd832a00009          exif-mem_8h.html#34d0c26fc4b579843a755dde64f544c3ExifMemFreeFunc  struct__ExifMem.html#dddd6286733460db3506c24202cd832afree_func ;
00010 };
00011 
00012 static void *
exif-mem_8c.html#e96feb62e763070ed3d70ca66f15feaa00013  exif-mem_8c.html#e96feb62e763070ed3d70ca66f15feaaexif_mem_alloc_func  ( exif-utils_8h.html#34c5d7765ab2e6dec8308c5127a10afaExifLong  ds)
00014 {
00015         return calloc ((size_t) ds, 1);
00016 }
00017 
00018 static void *
exif-mem_8c.html#ce345dfcefc8f8a8aa04a7f47ab419c900019  exif-mem_8c.html#ce345dfcefc8f8a8aa04a7f47ab419c9exif_mem_realloc_func  (void *d, exif-utils_8h.html#34c5d7765ab2e6dec8308c5127a10afaExifLong  ds)
00020 {
00021         return realloc (d, (size_t) ds);
00022 }
00023 
00024 static void exif-mem_8c.html#30e654456ffed5baaf5a23f1d8817aa600025  exif-mem_8c.html#30e654456ffed5baaf5a23f1d8817aa6exif_mem_free_func  (void *d)
00026 {
00027         free (d);
00028 }
00029 
00030 struct__ExifMem.htmlExifMem  *
exif-mem_8h.html#b18f94e82a362efbb44e8f99416254de00031  exif-mem_8c.html#5db78241cb6c1752209e8e28f295ea41exif_mem_new  ( exif-mem_8h.html#48db6b9f5a4a0c307601e0eb322f9220ExifMemAllocFunc  alloc_func, exif-mem_8h.html#e6e3720feb853c27aba6ab6c23448c79ExifMemReallocFunc  realloc_func,
00032               exif-mem_8h.html#34d0c26fc4b579843a755dde64f544c3ExifMemFreeFunc  free_func)
00033 {
00034         struct__ExifMem.htmlExifMem  *mem;
00035 
00036         if (!alloc_func || !realloc_func) return NULL;
00037         mem = alloc_func ? alloc_func (sizeof ( struct__ExifMem.htmlExifMem )) :
00038                            realloc_func (NULL, sizeof (ExifMem));
00039         if (!mem) return NULL;
00040         mem-> struct__ExifMem.html#b90a70c1aa9a4a8554912b15c2ed1b10ref_count  = 1;
00041 
00042         mem-> struct__ExifMem.html#344634ac1fc7b1c93e414eb9195c3fb4alloc_func    = alloc_func;
00043         mem-> struct__ExifMem.html#876668a73629e8e47896551a0ec3d640realloc_func  = realloc_func;
00044         mem-> struct__ExifMem.html#dddd6286733460db3506c24202cd832afree_func     = free_func;
00045 
00046         return mem;
00047 }
00048 
00049 void exif-mem_8h.html#cedafabd958c9846ea3f908135715dcf00050  exif-mem_8c.html#f28c61972f529be46907956e0b3e7a60exif_mem_ref  ( struct__ExifMem.htmlExifMem  *mem)
00051 {
00052         if (!mem) return;
00053         mem-> struct__ExifMem.html#b90a70c1aa9a4a8554912b15c2ed1b10ref_count ++;
00054 }
00055 
00056 void exif-mem_8h.html#dabd1345e1172ce379658cecfd3f7d7000057  exif-mem_8c.html#66744e0987af08c443df247ce55f7d87exif_mem_unref  ( struct__ExifMem.htmlExifMem  *mem)
00058 {
00059         if (!mem) return;
00060         if (!--mem-> struct__ExifMem.html#b90a70c1aa9a4a8554912b15c2ed1b10ref_count )
00061                 exif-mem_8c.html#43190b81b4b4bdb4ffb89bfb612051b1exif_mem_free  (mem, mem);
00062 }
00063 
00064 void exif-mem_8h.html#686cb6226287a0ed0e3a103051c176b500065  exif-mem_8c.html#43190b81b4b4bdb4ffb89bfb612051b1exif_mem_free  ( struct__ExifMem.htmlExifMem  *mem, void *d)
00066 {
00067         if (!mem) return;
00068         if (mem-> struct__ExifMem.html#dddd6286733460db3506c24202cd832afree_func ) {
00069                 mem-> struct__ExifMem.html#dddd6286733460db3506c24202cd832afree_func  (d);
00070                 return;
00071         }
00072 }
00073 
00074 void *
exif-mem_8h.html#c0051b07ef6304c04d787ee73cca58ee00075  exif-mem_8c.html#e8c09cfbcb95e435c4c4b7ec3bbd79e4exif_mem_alloc  ( struct__ExifMem.htmlExifMem  *mem, exif-utils_8h.html#34c5d7765ab2e6dec8308c5127a10afaExifLong  ds)
00076 {
00077         if (!mem) return NULL;
00078         if (mem-> struct__ExifMem.html#344634ac1fc7b1c93e414eb9195c3fb4alloc_func  || mem-> struct__ExifMem.html#876668a73629e8e47896551a0ec3d640realloc_func )
00079                 return mem-> struct__ExifMem.html#344634ac1fc7b1c93e414eb9195c3fb4alloc_func  ? mem-> struct__ExifMem.html#344634ac1fc7b1c93e414eb9195c3fb4alloc_func  (ds) :
00080                                          mem-> struct__ExifMem.html#876668a73629e8e47896551a0ec3d640realloc_func  (NULL, ds);
00081         return NULL;
00082 }
00083 
00084 void *
exif-mem_8h.html#779fcf4f01bd011e06560909ebe48cc300085  exif-mem_8c.html#3dcfe6794d82e79e92da5e2c62484b17exif_mem_realloc  ( struct__ExifMem.htmlExifMem  *mem, void *d, exif-utils_8h.html#34c5d7765ab2e6dec8308c5127a10afaExifLong  ds)
00086 {
00087         return (mem && mem-> struct__ExifMem.html#876668a73629e8e47896551a0ec3d640realloc_func ) ? mem-> struct__ExifMem.html#876668a73629e8e47896551a0ec3d640realloc_func  (d, ds) : NULL;
00088 }
00089 
00090 struct__ExifMem.htmlExifMem  *
exif-mem_8h.html#cd2926c29b470c9d43f84567a84d5acb00091  exif-mem_8c.html#cd2926c29b470c9d43f84567a84d5acbexif_mem_new_default  (void)
00092 {
00093         return exif-mem_8c.html#5db78241cb6c1752209e8e28f295ea41exif_mem_new  ( exif-mem_8c.html#e96feb62e763070ed3d70ca66f15feaaexif_mem_alloc_func , exif-mem_8c.html#ce345dfcefc8f8a8aa04a7f47ab419c9exif_mem_realloc_func ,
00094                              exif-mem_8c.html#30e654456ffed5baaf5a23f1d8817aa6exif_mem_free_func );
00095 }
Generated on Sun Apr 23 02:19:18 2006 for EXIF library (libexif) Internals by 
http://www.doxygen.org/index.htmldoxygen  1.4.6 