DocumentationOverviewBuilding ASL Documentation Library Wiki Docs Indices Browse Perforce More InfoRelease NotesWiki Site Search License Success Stories Contributors MediaDownloadPerforce Depots SupportASL SourceForge HomeMailing Lists Discussion Forums Report Bugs Suggest Features Contribute to ASL RSSShort-text newsFull-text news File releases Other Adobe ProjectsAdobe AirAdobe GIL Adobe Labs Adobe Media Gallery Adobe XMP Tamarin project (Mozilla Foundation) Other ResourcesBoostRIAForge SGI STL |
dng_memory.h00001 /*****************************************************************************/ 00002 // Copyright 2006-2007 Adobe Systems Incorporated 00003 // All Rights Reserved. 00004 // 00005 // NOTICE: Adobe permits you to use, modify, and distribute this file in 00006 // accordance with the terms of the Adobe license agreement accompanying it. 00007 /*****************************************************************************/ 00008 00009 /* $Id: //mondo/workarea/stern/camera_raw/dng_sdk/source/dng_memory.h#8 $ */ 00010 /* $DateTime: 2007/12/05 09:51:03 $ */ 00011 /* $Change: 403668 $ */ 00012 /* $Author: stern $ */ 00013 00017 /*****************************************************************************/ 00018 00019 #ifndef __dng_memory__ 00020 #define __dng_memory__ 00021 00022 /*****************************************************************************/ 00023 00024 #include "dng_types.h" 00025 00026 /*****************************************************************************/ 00027 00032 00033 class dng_memory_data 00034 { 00035 00036 private: 00037 00038 void *fBuffer; 00039 00040 public: 00041 00044 00045 dng_memory_data (); 00046 00050 00051 dng_memory_data (uint32 size); 00052 00054 00055 ~dng_memory_data (); 00056 00060 00061 void Allocate (uint32 size); 00062 00065 00066 void Clear (); 00067 00070 00071 void * Buffer () 00072 { 00073 return fBuffer; 00074 } 00075 00078 00079 const void * Buffer () const 00080 { 00081 return fBuffer; 00082 } 00083 00086 00087 char * Buffer_char () 00088 { 00089 return (char *) Buffer (); 00090 } 00091 00094 00095 const char * Buffer_char () const 00096 { 00097 return (const char *) Buffer (); 00098 } 00099 00102 00103 uint8 * Buffer_uint8 () 00104 { 00105 return (uint8 *) Buffer (); 00106 } 00107 00110 00111 const uint8 * Buffer_uint8 () const 00112 { 00113 return (const uint8 *) Buffer (); 00114 } 00115 00118 00119 uint16 * Buffer_uint16 () 00120 { 00121 return (uint16 *) Buffer (); 00122 } 00123 00126 00127 const uint16 * Buffer_uint16 () const 00128 { 00129 return (const uint16 *) Buffer (); 00130 } 00131 00134 00135 int16 * Buffer_int16 () 00136 { 00137 return (int16 *) Buffer (); 00138 } 00139 00142 00143 const int16 * Buffer_int16 () const 00144 { 00145 return (const int16 *) Buffer (); 00146 } 00147 00150 00151 uint32 * Buffer_uint32 () 00152 { 00153 return (uint32 *) Buffer (); 00154 } 00155 00158 00159 const uint32 * Buffer_uint32 () const 00160 { 00161 return (const uint32 *) Buffer (); 00162 } 00163 00166 00167 int32 * Buffer_int32 () 00168 { 00169 return (int32 *) Buffer (); 00170 } 00171 00174 00175 const int32 * Buffer_int32 () const 00176 { 00177 return (const int32 *) Buffer (); 00178 } 00179 00182 00183 uint64 * Buffer_uint64 () 00184 { 00185 return (uint64 *) Buffer (); 00186 } 00187 00190 00191 const uint64 * Buffer_uint64 () const 00192 { 00193 return (const uint64 *) Buffer (); 00194 } 00195 00198 00199 int64 * Buffer_int64 () 00200 { 00201 return (int64 *) Buffer (); 00202 } 00203 00206 00207 const int64 * Buffer_int64 () const 00208 { 00209 return (const int64 *) Buffer (); 00210 } 00211 00214 00215 real32 * Buffer_real32 () 00216 { 00217 return (real32 *) Buffer (); 00218 } 00219 00222 00223 const real32 * Buffer_real32 () const 00224 { 00225 return (const real32 *) Buffer (); 00226 } 00227 00230 00231 real64 * Buffer_real64 () 00232 { 00233 return (real64 *) Buffer (); 00234 } 00235 00238 00239 const real64 * Buffer_real64 () const 00240 { 00241 return (const real64 *) Buffer (); 00242 } 00243 00244 private: 00245 00246 // Hidden copy constructor and assignment operator. 00247 00248 dng_memory_data (const dng_memory_data &data); 00249 00250 dng_memory_data & operator= (const dng_memory_data &data); 00251 00252 }; 00253 00254 /*****************************************************************************/ 00255 00260 00261 class dng_memory_block 00262 { 00263 00264 private: 00265 00266 uint32 fLogicalSize; 00267 00268 void *fBuffer; 00269 00270 protected: 00271 00272 dng_memory_block (uint32 logicalSize) 00273 : fLogicalSize (logicalSize) 00274 , fBuffer (NULL) 00275 { 00276 } 00277 00278 uint32 PhysicalSize () 00279 { 00280 return fLogicalSize + 64; 00281 } 00282 00283 void SetBuffer (void *p) 00284 { 00285 fBuffer = (void *) ((((uintptr) p) + 15) & ~((uintptr) 15)); 00286 } 00287 00288 public: 00289 00290 virtual ~dng_memory_block () 00291 { 00292 } 00293 00296 00297 uint32 LogicalSize () const 00298 { 00299 return fLogicalSize; 00300 } 00301 00304 00305 void * Buffer () 00306 { 00307 return fBuffer; 00308 } 00309 00312 00313 const void * Buffer () const 00314 { 00315 return fBuffer; 00316 } 00317 00320 00321 char * Buffer_char () 00322 { 00323 return (char *) Buffer (); 00324 } 00325 00328 00329 const char * Buffer_char () const 00330 { 00331 return (const char *) Buffer (); 00332 } 00333 00336 00337 uint8 * Buffer_uint8 () 00338 { 00339 return (uint8 *) Buffer (); 00340 } 00341 00344 00345 const uint8 * Buffer_uint8 () const 00346 { 00347 return (const uint8 *) Buffer (); 00348 } 00349 00352 00353 uint16 * Buffer_uint16 () 00354 { 00355 return (uint16 *) Buffer (); 00356 } 00357 00360 00361 const uint16 * Buffer_uint16 () const 00362 { 00363 return (const uint16 *) Buffer (); 00364 } 00365 00368 00369 int16 * Buffer_int16 () 00370 { 00371 return (int16 *) Buffer (); 00372 } 00373 00376 00377 const int16 * Buffer_int16 () const 00378 { 00379 return (const int16 *) Buffer (); 00380 } 00381 00384 00385 uint32 * Buffer_uint32 () 00386 { 00387 return (uint32 *) Buffer (); 00388 } 00389 00392 00393 const uint32 * Buffer_uint32 () const 00394 { 00395 return (const uint32 *) Buffer (); 00396 } 00397 00400 00401 int32 * Buffer_int32 () 00402 { 00403 return (int32 *) Buffer (); 00404 } 00405 00408 00409 const int32 * Buffer_int32 () const 00410 { 00411 return (const int32 *) Buffer (); 00412 } 00413 00416 00417 real32 * Buffer_real32 () 00418 { 00419 return (real32 *) Buffer (); 00420 } 00421 00424 00425 const real32 * Buffer_real32 () const 00426 { 00427 return (const real32 *) Buffer (); 00428 } 00429 00432 00433 real64 * Buffer_real64 () 00434 { 00435 return (real64 *) Buffer (); 00436 } 00437 00440 00441 const real64 * Buffer_real64 () const 00442 { 00443 return (const real64 *) Buffer (); 00444 } 00445 00446 private: 00447 00448 // Hidden copy constructor and assignment operator. 00449 00450 dng_memory_block (const dng_memory_block &data); 00451 00452 dng_memory_block & operator= (const dng_memory_block &data); 00453 00454 }; 00455 00456 /*****************************************************************************/ 00457 00459 00460 class dng_memory_allocator 00461 { 00462 00463 public: 00464 00465 virtual ~dng_memory_allocator () 00466 { 00467 } 00468 00473 00474 virtual dng_memory_block * Allocate (uint32 size); 00475 00476 }; 00477 00478 /*****************************************************************************/ 00479 00485 00486 extern dng_memory_allocator gDefaultDNGMemoryAllocator; 00487 00488 /*****************************************************************************/ 00489 00490 #endif 00491 00492 /*****************************************************************************/ |