  
    
main.htmlMain Page     
classes.htmlData Structures     
files.htmlFiles     
dirs.htmlDirectories   
  
    
files.htmlFile List     
globals.htmlGlobals   
dir_20715630405f3b63e7ab7a5c713843d9.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#9de89014e210e0042d43002fe51178a600006          unsigned int struct__ExifMem.html#9de89014e210e0042d43002fe51178a6ref_count ;
struct__ExifMem.html#cfd46afc0b72edf70924e9d8eaf0106500007          exif-mem_8h.html#33415259c45eb9dbc68d799887d97829ExifMemAllocFunc  struct__ExifMem.html#cfd46afc0b72edf70924e9d8eaf01065alloc_func ;
struct__ExifMem.html#82b56c799bf7c05ae75abe49dce6c94100008          exif-mem_8h.html#c1251dffe6dadd513586e55814e32ee7ExifMemReallocFunc  struct__ExifMem.html#82b56c799bf7c05ae75abe49dce6c941realloc_func ;
struct__ExifMem.html#bcca201d5ef20c1ae6333e01a4ebfbc400009          exif-mem_8h.html#45d1f90821362c0c1fac7cfb208d8293ExifMemFreeFunc  struct__ExifMem.html#bcca201d5ef20c1ae6333e01a4ebfbc4free_func ;
00010 };
00011 
00012 static void *
exif-mem_8c.html#5c6adddf9ae7d3bae3b19d7e342c3aef00013  exif-mem_8c.html#5c6adddf9ae7d3bae3b19d7e342c3aefexif_mem_alloc_func  ( exif-utils_8h.html#1601686195534cc6337c596fb8af54faExifLong  ds)
00014 {
00015         return calloc ((size_t) ds, 1);
00016 }
00017 
00018 static void *
exif-mem_8c.html#8b2f18aa0ef3adabfad25b77d66adcc300019  exif-mem_8c.html#8b2f18aa0ef3adabfad25b77d66adcc3exif_mem_realloc_func  (void *d, exif-utils_8h.html#1601686195534cc6337c596fb8af54faExifLong  ds)
00020 {
00021         return realloc (d, (size_t) ds);
00022 }
00023 
00024 static void exif-mem_8c.html#2077c95d1d44fa39b5419e9d164271f800025  exif-mem_8c.html#2077c95d1d44fa39b5419e9d164271f8exif_mem_free_func  (void *d)
00026 {
00027         free (d);
00028 }
00029 
00030 struct__ExifMem.htmlExifMem  *
exif-mem_8h.html#b2beebaff7d31ed45169a70defb7bb0900031  exif-mem_8c.html#05d10a17cb0b257bd8d8f781b785116aexif_mem_new  ( exif-mem_8h.html#33415259c45eb9dbc68d799887d97829ExifMemAllocFunc  alloc_func, exif-mem_8h.html#c1251dffe6dadd513586e55814e32ee7ExifMemReallocFunc  realloc_func,
00032               exif-mem_8h.html#45d1f90821362c0c1fac7cfb208d8293ExifMemFreeFunc  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#9de89014e210e0042d43002fe51178a6ref_count  = 1;
00041 
00042         mem-> struct__ExifMem.html#cfd46afc0b72edf70924e9d8eaf01065alloc_func    = alloc_func;
00043         mem-> struct__ExifMem.html#82b56c799bf7c05ae75abe49dce6c941realloc_func  = realloc_func;
00044         mem-> struct__ExifMem.html#bcca201d5ef20c1ae6333e01a4ebfbc4free_func     = free_func;
00045 
00046         return mem;
00047 }
00048 
00049 void exif-mem_8h.html#6e520f8ee207810614e37daffc80f72a00050  exif-mem_8c.html#5e444d744fdb19c0c8d4438d9aad2b0bexif_mem_ref  ( struct__ExifMem.htmlExifMem  *mem)
00051 {
00052         if (!mem) return;
00053         mem-> struct__ExifMem.html#9de89014e210e0042d43002fe51178a6ref_count ++;
00054 }
00055 
00056 void exif-mem_8h.html#8caccb583c37a8fb31f533ed529bab0100057  exif-mem_8c.html#fd6959367336c1459125c43e3f16fec8exif_mem_unref  ( struct__ExifMem.htmlExifMem  *mem)
00058 {
00059         if (!mem) return;
00060         if (!--mem-> struct__ExifMem.html#9de89014e210e0042d43002fe51178a6ref_count )
00061                 exif-mem_8c.html#c18517acd3216e21942966d3dfab5f53exif_mem_free  (mem, mem);
00062 }
00063 
00064 void exif-mem_8h.html#9152de29671adfeb24ba4eaea518cb3500065  exif-mem_8c.html#c18517acd3216e21942966d3dfab5f53exif_mem_free  ( struct__ExifMem.htmlExifMem  *mem, void *d)
00066 {
00067         if (!mem) return;
00068         if (mem-> struct__ExifMem.html#bcca201d5ef20c1ae6333e01a4ebfbc4free_func ) {
00069                 mem-> struct__ExifMem.html#bcca201d5ef20c1ae6333e01a4ebfbc4free_func  (d);
00070                 return;
00071         }
00072 }
00073 
00074 void *
exif-mem_8h.html#3b81b9b0dca30e76bf901c58949aa25900075  exif-mem_8c.html#28065115ce31c8c9c7701df5b3f4ada5exif_mem_alloc  ( struct__ExifMem.htmlExifMem  *mem, exif-utils_8h.html#1601686195534cc6337c596fb8af54faExifLong  ds)
00076 {
00077         if (!mem) return NULL;
00078         if (mem-> struct__ExifMem.html#cfd46afc0b72edf70924e9d8eaf01065alloc_func  || mem-> struct__ExifMem.html#82b56c799bf7c05ae75abe49dce6c941realloc_func )
00079                 return mem-> struct__ExifMem.html#cfd46afc0b72edf70924e9d8eaf01065alloc_func  ? mem-> struct__ExifMem.html#cfd46afc0b72edf70924e9d8eaf01065alloc_func  (ds) :
00080                                          mem-> struct__ExifMem.html#82b56c799bf7c05ae75abe49dce6c941realloc_func  (NULL, ds);
00081         return NULL;
00082 }
00083 
00084 void *
exif-mem_8h.html#69c3789b46f73c8dc0035fd34f97fa5b00085  exif-mem_8c.html#e29eb09328c6a3b7e24fb69e0078942cexif_mem_realloc  ( struct__ExifMem.htmlExifMem  *mem, void *d, exif-utils_8h.html#1601686195534cc6337c596fb8af54faExifLong  ds)
00086 {
00087         return (mem && mem-> struct__ExifMem.html#82b56c799bf7c05ae75abe49dce6c941realloc_func ) ? mem-> struct__ExifMem.html#82b56c799bf7c05ae75abe49dce6c941realloc_func  (d, ds) : NULL;
00088 }
00089 
00090 struct__ExifMem.htmlExifMem  *
exif-mem_8h.html#44af1bc2ce5eecf37e731c5fe5dc98e000091  exif-mem_8c.html#44af1bc2ce5eecf37e731c5fe5dc98e0exif_mem_new_default  (void)
00092 {
00093         return exif-mem_8c.html#05d10a17cb0b257bd8d8f781b785116aexif_mem_new  ( exif-mem_8c.html#5c6adddf9ae7d3bae3b19d7e342c3aefexif_mem_alloc_func , exif-mem_8c.html#8b2f18aa0ef3adabfad25b77d66adcc3exif_mem_realloc_func ,
00094                              exif-mem_8c.html#2077c95d1d44fa39b5419e9d164271f8exif_mem_free_func );
00095 }
Generated on Sun Apr 23 01:22:39 2006 for EXIF library (libexif) Internals by 
http://www.doxygen.org/index.htmldoxygen  1.4.6 