• 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 "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