jmemnobs.cpp
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 3k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. /*
  2.  * jmemnobs.c
  3.  *
  4.  * Copyright (C) 1992-1996, Thomas G. Lane.
  5.  * This file is part of the Independent JPEG Group's software.
  6.  * For conditions of distribution and use, see the accompanying README file.
  7.  *
  8.  * This file provides a really simple implementation of the system-
  9.  * dependent portion of the JPEG memory manager.  This implementation
  10.  * assumes that no backing-store files are needed: all required space
  11.  * can be obtained from malloc().
  12.  * This is very portable in the sense that it'll compile on almost anything,
  13.  * but you'd better have lots of main memory (or virtual memory) if you want
  14.  * to process big images.
  15.  * Note that the max_memory_to_use option is ignored by this implementation.
  16.  */
  17. #define JPEG_INTERNALS
  18. #include "stdafx.h"
  19. #include "jinclude.h"
  20. #include "jpeglib.h"
  21. #include "jmemsys.h" /* import the system-dependent declarations */
  22. #include "jpegapi.h"
  23. //#ifndef HAVE_STDLIB_H /* <stdlib.h> should declare malloc(),free() */
  24. //extern void * malloc JPP((size_t size));
  25. //extern void free JPP((void *ptr));
  26. //#endif
  27. #define malloc(x) LocalAlloc(0,x)
  28. #define free(x)   LocalFree(x)
  29. //extern HANDLE hHeap;
  30. //#define malloc(x)   HeapAlloc(hHeap, 0, x)
  31. //#define free(x)     HeapFree(hHeap, 0, x)
  32. /*
  33.  * Memory allocation and freeing are controlled by the regular library
  34.  * routines malloc() and free().
  35.  */
  36. //Modified for better exception handling - ajais 
  37. GLOBAL(void *)
  38. jpeg_get_small (j_common_ptr cinfo, size_t sizeofobject)
  39. {
  40. void *AllocatedChunk;
  41. AllocatedChunk = (void *) malloc(sizeofobject);
  42. if (AllocatedChunk == NULL) throw THROWN( E_OUTOFMEMORY );
  43. return AllocatedChunk;
  44. }
  45. GLOBAL(void)
  46. jpeg_free_small (j_common_ptr cinfo, void * object, size_t sizeofobject)
  47. {
  48.   free(object);
  49. }
  50. /*
  51.  * "Large" objects are treated the same as "small" ones.
  52.  * NB: although we include FAR keywords in the routine declarations,
  53.  * this file won't actually work in 80x86 small/medium model; at least,
  54.  * you probably won't be able to process useful-size images in only 64KB.
  55.  */
  56. GLOBAL(void FAR *)
  57. jpeg_get_large (j_common_ptr cinfo, size_t sizeofobject)
  58. {
  59. void FAR *AllocatedChunk;
  60. AllocatedChunk = (void FAR *) malloc(sizeofobject);
  61. if (AllocatedChunk == NULL) throw THROWN( E_OUTOFMEMORY );
  62. return AllocatedChunk;
  63. }
  64. GLOBAL(void)
  65. jpeg_free_large (j_common_ptr cinfo, void FAR * object, size_t sizeofobject)
  66. {
  67.   free(object);
  68. }
  69. /*
  70.  * This routine computes the total memory space available for allocation.
  71.  * Here we always say, "we got all you want bud!"
  72.  */
  73. GLOBAL(long)
  74. jpeg_mem_available (j_common_ptr cinfo, long min_bytes_needed,
  75.     long max_bytes_needed, long already_allocated)
  76. {
  77.   return max_bytes_needed;
  78. }
  79. /*
  80.  * Backing store (temporary file) management.
  81.  * Since jpeg_mem_available always promised the moon,
  82.  * this should never be called and we can just error out.
  83.  */
  84. GLOBAL(void)
  85. jpeg_open_backing_store (j_common_ptr cinfo, backing_store_ptr info,
  86.  long total_bytes_needed)
  87. {
  88.   ERREXIT(cinfo, JERR_NO_BACKING_STORE);
  89. }
  90. /*
  91.  * These routines take care of any system-dependent initialization and
  92.  * cleanup required.  Here, there isn't any.
  93.  */
  94. GLOBAL(long)
  95. jpeg_mem_init (j_common_ptr cinfo)
  96. {
  97.   return 0; /* just set max_memory_to_use to 0 */
  98. }
  99. GLOBAL(void)
  100. jpeg_mem_term (j_common_ptr cinfo)
  101. {
  102.   /* no work */
  103. }