• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "sk_types.h"
15 
16 SK_C_PLUS_PLUS_BEGIN_GUARD
17 
18 /**
19     Returns a new empty sk_data_t.  This call must be balanced with a call to
20     sk_data_unref().
21 */
22 SK_API sk_data_t* sk_data_new_empty();
23 /**
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 */
27 SK_API sk_data_t* sk_data_new_with_copy(const void* src, size_t length);
28 /**
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 */
38 SK_API sk_data_t* sk_data_new_from_malloc(const void* memory, size_t length);
39 /**
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 */
44 SK_API sk_data_t* sk_data_new_subset(const sk_data_t* src, size_t offset, size_t length);
45 
46 /**
47     Increment the reference count on the given sk_data_t. Must be
48     balanced by a call to sk_data_unref().
49 */
50 SK_API void sk_data_ref(const sk_data_t*);
51 /**
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 */
57 SK_API void sk_data_unref(const sk_data_t*);
58 
59 /**
60     Returns the number of bytes stored.
61 */
62 SK_API size_t sk_data_get_size(const sk_data_t*);
63 /**
64     Returns the pointer to the data.
65  */
66 SK_API const void* sk_data_get_data(const sk_data_t*);
67 
68 SK_C_PLUS_PLUS_END_GUARD
69 
70 #endif
71