1 /* Copyright (C) 2001-2019 Artifex Software, Inc. 2 All Rights Reserved. 3 4 This software is provided AS-IS with no warranty, either express or 5 implied. 6 7 This software is distributed under license and may not be copied, 8 modified or distributed except as expressly authorized under the terms 9 of the license contained in the file LICENSE in this distribution. 10 11 Refer to licensing information at http://www.artifex.com or contact 12 Artifex Software, Inc., 1305 Grant Avenue - Suite 200, Novato, 13 CA 94945, U.S.A., +1(415)492-9861, for further information. 14 */ 15 16 #ifndef jmemcust_h_INCLUDED 17 # define jmemcust_h_INCLUDED 18 19 #include "std.h" /* FILE needed by jpeglib.h */ 20 #include "jpeglib.h" 21 #include "jmemsys.h" 22 23 typedef JMETHOD(long, j_custmem_init_ptr, (j_common_ptr cinfo)); 24 typedef JMETHOD(void, j_custmem_term_ptr, (j_common_ptr cinfo)); 25 typedef JMETHOD(long, j_custmem_avail_ptr, (j_common_ptr cinfo)); 26 typedef JMETHOD(void *, j_custmem_get_small_ptr, 27 (j_common_ptr cinfo, size_t size)); 28 typedef JMETHOD(void, j_custmem_free_small_ptr, 29 (j_common_ptr cinfo, void *object, size_t size)); 30 typedef JMETHOD(void *, j_cust_mem_get_large_ptr, 31 (j_common_ptr cinfo, size_t size)); 32 typedef JMETHOD(void, j_custmem_free_large_ptr, 33 (j_common_ptr cinfo, void *object, size_t size)); 34 typedef JMETHOD(void, j_custmem_open_backing_store_ptr, 35 (j_common_ptr cinfo, backing_store_ptr info, long total_bytes_needed)); 36 37 typedef struct { 38 j_custmem_init_ptr j_mem_init; 39 j_custmem_term_ptr j_mem_term; 40 j_custmem_avail_ptr j_mem_avail; 41 j_custmem_get_small_ptr j_mem_get_small; 42 j_custmem_free_small_ptr j_mem_free_small; 43 j_cust_mem_get_large_ptr j_mem_get_large; 44 j_custmem_free_large_ptr j_mem_free_large; 45 j_custmem_open_backing_store_ptr j_mem_open_backing_store; 46 void *priv; 47 } jpeg_cust_mem_data; 48 49 #define GET_CUST_MEM_DATA(c) ((jpeg_cust_mem_data *)c->client_data) 50 51 GLOBAL(jpeg_cust_mem_data *) 52 jpeg_cust_mem_init(jpeg_cust_mem_data *custm, void *priv, 53 j_custmem_init_ptr init, 54 j_custmem_term_ptr term, 55 j_custmem_avail_ptr avail, 56 j_custmem_get_small_ptr get_small, 57 j_custmem_free_small_ptr free_small, 58 j_cust_mem_get_large_ptr get_large, 59 j_custmem_free_large_ptr free_large, 60 j_custmem_open_backing_store_ptr open_backing_store); 61 62 GLOBAL(jpeg_cust_mem_data *) 63 jpeg_cust_mem_set_private(jpeg_cust_mem_data *custm, void *priv); 64 65 #endif 66