Home | History | Annotate | Download | only in c
      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(void);
     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