blob: 90333bba5f7710bd4958cff22440331885aa2d2c [file] [log] [blame]
reedb2a5d7e2014-12-25 14:16:21 -08001/*
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 "sk_types.h"
15
16SK_C_PLUS_PLUS_BEGIN_GUARD
17
halcanaryc9119062015-09-01 10:45:09 -070018/**
19 Returns a new empty sk_data_t. This call must be balanced with a call to
20 sk_data_unref().
21*/
halcanary219f18f2015-09-01 10:01:38 -070022SK_API sk_data_t* sk_data_new_empty();
halcanaryc9119062015-09-01 10:45:09 -070023/**
24 Returns a new sk_data_t by copying the specified source data.
25 This call must be balanced with a call to sk_data_unref().
26*/
halcanary219f18f2015-09-01 10:01:38 -070027SK_API sk_data_t* sk_data_new_with_copy(const void* src, size_t length);
halcanaryc9119062015-09-01 10:45:09 -070028/**
29 Pass ownership of the given memory to a new sk_data_t, which will
30 call free() when the refernce count of the data goes to zero. For
31 example:
32 size_t length = 1024;
33 void* buffer = malloc(length);
34 memset(buffer, 'X', length);
35 sk_data_t* data = sk_data_new_from_malloc(buffer, length);
36 This call must be balanced with a call to sk_data_unref().
37*/
halcanary219f18f2015-09-01 10:01:38 -070038SK_API sk_data_t* sk_data_new_from_malloc(const void* memory, size_t length);
halcanaryc9119062015-09-01 10:45:09 -070039/**
40 Returns a new sk_data_t using a subset of the data in the
41 specified source sk_data_t. This call must be balanced with a
42 call to sk_data_unref().
43*/
halcanary219f18f2015-09-01 10:01:38 -070044SK_API sk_data_t* sk_data_new_subset(const sk_data_t* src, size_t offset, size_t length);
reedb2a5d7e2014-12-25 14:16:21 -080045
halcanaryc9119062015-09-01 10:45:09 -070046/**
47 Increment the reference count on the given sk_data_t. Must be
48 balanced by a call to sk_data_unref().
49*/
halcanary219f18f2015-09-01 10:01:38 -070050SK_API void sk_data_ref(const sk_data_t*);
halcanaryc9119062015-09-01 10:45:09 -070051/**
52 Decrement the reference count. If the reference count is 1 before
53 the decrement, then release both the memory holding the sk_data_t
54 and the memory it is managing. New sk_data_t are created with a
55 reference count of 1.
56*/
halcanary219f18f2015-09-01 10:01:38 -070057SK_API void sk_data_unref(const sk_data_t*);
reedb2a5d7e2014-12-25 14:16:21 -080058
halcanaryc9119062015-09-01 10:45:09 -070059/**
60 Returns the number of bytes stored.
61*/
halcanary219f18f2015-09-01 10:01:38 -070062SK_API size_t sk_data_get_size(const sk_data_t*);
halcanaryc9119062015-09-01 10:45:09 -070063/**
64 Returns the pointer to the data.
65 */
halcanary219f18f2015-09-01 10:01:38 -070066SK_API const void* sk_data_get_data(const sk_data_t*);
reedb2a5d7e2014-12-25 14:16:21 -080067
68SK_C_PLUS_PLUS_END_GUARD
69
70#endif