sk_data.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. // EXPERIMENTAL EXPERIMENTAL EXPERIMENTAL EXPERIMENTAL
  8. // DO NOT USE -- FOR INTERNAL TESTING ONLY
  9. #ifndef sk_data_DEFINED
  10. #define sk_data_DEFINED
  11. #include "sk_types.h"
  12. SK_C_PLUS_PLUS_BEGIN_GUARD
  13. /**
  14. Returns a new empty sk_data_t. This call must be balanced with a call to
  15. sk_data_unref().
  16. */
  17. SK_API sk_data_t* sk_data_new_empty(void);
  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. Increment the reference count on the given sk_data_t. Must be
  42. balanced by a call to sk_data_unref().
  43. */
  44. SK_API void sk_data_ref(const sk_data_t*);
  45. /**
  46. Decrement the reference count. If the reference count is 1 before
  47. the decrement, then release both the memory holding the sk_data_t
  48. and the memory it is managing. New sk_data_t are created with a
  49. reference count of 1.
  50. */
  51. SK_API void sk_data_unref(const sk_data_t*);
  52. /**
  53. Returns the number of bytes stored.
  54. */
  55. SK_API size_t sk_data_get_size(const sk_data_t*);
  56. /**
  57. Returns the pointer to the data.
  58. */
  59. SK_API const void* sk_data_get_data(const sk_data_t*);
  60. SK_C_PLUS_PLUS_END_GUARD
  61. #endif