| /* | |
| * Copyright 2014 Google Inc. | |
| * | |
| * Use of this source code is governed by a BSD-style license that can be | |
| * found in the LICENSE file. | |
| */ | |
| // EXPERIMENTAL EXPERIMENTAL EXPERIMENTAL EXPERIMENTAL | |
| // DO NOT USE -- FOR INTERNAL TESTING ONLY | |
| #ifndef sk_data_DEFINED | |
| #define sk_data_DEFINED | |
| #include "include/c/sk_types.h" | |
| SK_C_PLUS_PLUS_BEGIN_GUARD | |
| /** | |
| Returns a new empty sk_data_t. This call must be balanced with a call to | |
| sk_data_unref(). | |
| */ | |
| SK_API sk_data_t* sk_data_new_empty(void); | |
| /** | |
| Returns a new sk_data_t by copying the specified source data. | |
| This call must be balanced with a call to sk_data_unref(). | |
| */ | |
| SK_API sk_data_t* sk_data_new_with_copy(const void* src, size_t length); | |
| /** | |
| Pass ownership of the given memory to a new sk_data_t, which will | |
| call free() when the refernce count of the data goes to zero. For | |
| example: | |
| size_t length = 1024; | |
| void* buffer = malloc(length); | |
| memset(buffer, 'X', length); | |
| sk_data_t* data = sk_data_new_from_malloc(buffer, length); | |
| This call must be balanced with a call to sk_data_unref(). | |
| */ | |
| SK_API sk_data_t* sk_data_new_from_malloc(const void* memory, size_t length); | |
| /** | |
| Returns a new sk_data_t using a subset of the data in the | |
| specified source sk_data_t. This call must be balanced with a | |
| call to sk_data_unref(). | |
| */ | |
| SK_API sk_data_t* sk_data_new_subset(const sk_data_t* src, size_t offset, size_t length); | |
| /** | |
| Increment the reference count on the given sk_data_t. Must be | |
| balanced by a call to sk_data_unref(). | |
| */ | |
| SK_API void sk_data_ref(const sk_data_t*); | |
| /** | |
| Decrement the reference count. If the reference count is 1 before | |
| the decrement, then release both the memory holding the sk_data_t | |
| and the memory it is managing. New sk_data_t are created with a | |
| reference count of 1. | |
| */ | |
| SK_API void sk_data_unref(const sk_data_t*); | |
| /** | |
| Returns the number of bytes stored. | |
| */ | |
| SK_API size_t sk_data_get_size(const sk_data_t*); | |
| /** | |
| Returns the pointer to the data. | |
| */ | |
| SK_API const void* sk_data_get_data(const sk_data_t*); | |
| SK_C_PLUS_PLUS_END_GUARD | |
| #endif |