1 /* 2 * Copyright 2014 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 // EXPERIMENTAL EXPERIMENTAL EXPERIMENTAL EXPERIMENTAL 9 // DO NOT USE -- FOR INTERNAL TESTING ONLY 10 11 #ifndef sk_data_DEFINED 12 #define sk_data_DEFINED 13 14 #include "include/c/sk_types.h" 15 16 SK_C_PLUS_PLUS_BEGIN_GUARD 17 18 /** 19 Returns a new sk_data_t by copying the specified source data. 20 This call must be balanced with a call to sk_data_unref(). 21 */ 22 SK_API sk_data_t* sk_data_new_with_copy(const void* src, size_t length); 23 /** 24 Pass ownership of the given memory to a new sk_data_t, which will 25 call free() when the refernce count of the data goes to zero. For 26 example: 27 size_t length = 1024; 28 void* buffer = malloc(length); 29 memset(buffer, 'X', length); 30 sk_data_t* data = sk_data_new_from_malloc(buffer, length); 31 This call must be balanced with a call to sk_data_unref(). 32 */ 33 SK_API sk_data_t* sk_data_new_from_malloc(const void* memory, size_t length); 34 /** 35 Returns a new sk_data_t using a subset of the data in the 36 specified source sk_data_t. This call must be balanced with a 37 call to sk_data_unref(). 38 */ 39 SK_API sk_data_t* sk_data_new_subset(const sk_data_t* src, size_t offset, size_t length); 40 41 /** 42 Increment the reference count on the given sk_data_t. Must be 43 balanced by a call to sk_data_unref(). 44 */ 45 SK_API void sk_data_ref(const sk_data_t*); 46 /** 47 Decrement the reference count. If the reference count is 1 before 48 the decrement, then release both the memory holding the sk_data_t 49 and the memory it is managing. New sk_data_t are created with a 50 reference count of 1. 51 */ 52 SK_API void sk_data_unref(const sk_data_t*); 53 54 /** 55 Returns the number of bytes stored. 56 */ 57 SK_API size_t sk_data_get_size(const sk_data_t*); 58 /** 59 Returns the pointer to the data. 60 */ 61 SK_API const void* sk_data_get_data(const sk_data_t*); 62 63 SK_C_PLUS_PLUS_END_GUARD 64 65 #endif 66