2 * Copyright 2015 Xamarin Inc.
3 * Copyright 2017 Microsoft Corporation. All rights reserved.
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
9 #ifndef sk_managedstream_DEFINED
10 #define sk_managedstream_DEFINED
12 #include "sk_xamarin.h"
16 SK_C_PLUS_PLUS_BEGIN_GUARD
19 typedef struct sk_wstream_managedstream_t sk_wstream_managedstream_t;
22 typedef bool (*sk_managedwstream_write_delegate) (sk_wstream_managedstream_t* cmanagedStream, const void* buffer, size_t size);
23 typedef void (*sk_managedwstream_flush_delegate) (sk_wstream_managedstream_t* cmanagedStream);
24 typedef size_t (*sk_managedwstream_bytesWritten_delegate) (const sk_wstream_managedstream_t* cmanagedStream);
25 typedef void (*sk_managedwstream_destroy_delegate) (size_t cmanagedStream);
28 SK_X_API sk_wstream_managedstream_t* sk_managedwstream_new (void);
29 SK_X_API void sk_managedwstream_destroy (sk_wstream_managedstream_t*);
31 SK_X_API void sk_managedwstream_set_delegates (const sk_managedwstream_write_delegate pWrite,
32 const sk_managedwstream_flush_delegate pFlush,
33 const sk_managedwstream_bytesWritten_delegate pBytesWritten,
34 const sk_managedwstream_destroy_delegate pDestroy);
37 typedef struct sk_stream_managedstream_t sk_stream_managedstream_t;
40 typedef size_t (*sk_managedstream_read_delegate) (sk_stream_managedstream_t* cmanagedStream, void* buffer, size_t size);
41 typedef size_t (*sk_managedstream_peek_delegate) (sk_stream_managedstream_t* cmanagedStream, void* buffer, size_t size);
42 typedef bool (*sk_managedstream_isAtEnd_delegate) (const sk_stream_managedstream_t* cmanagedStream);
43 typedef bool (*sk_managedstream_hasPosition_delegate) (const sk_stream_managedstream_t* cmanagedStream);
44 typedef bool (*sk_managedstream_hasLength_delegate) (const sk_stream_managedstream_t* cmanagedStream);
45 typedef bool (*sk_managedstream_rewind_delegate) (sk_stream_managedstream_t* cmanagedStream);
46 typedef size_t (*sk_managedstream_getPosition_delegate) (const sk_stream_managedstream_t* cmanagedStream);
47 typedef bool (*sk_managedstream_seek_delegate) (sk_stream_managedstream_t* cmanagedStream, size_t position);
48 typedef bool (*sk_managedstream_move_delegate) (sk_stream_managedstream_t* cmanagedStream, long offset);
49 typedef size_t (*sk_managedstream_getLength_delegate) (const sk_stream_managedstream_t* cmanagedStream);
50 typedef sk_stream_managedstream_t* (*sk_managedstream_createNew_delegate) (const sk_stream_managedstream_t* cmanagedStream);
51 typedef void (*sk_managedstream_destroy_delegate) (size_t cmanagedStream);
55 SK_X_API sk_stream_managedstream_t* sk_managedstream_new (void);
56 SK_X_API void sk_managedstream_destroy (sk_stream_managedstream_t*);
58 SK_X_API void sk_managedstream_set_delegates (const sk_managedstream_read_delegate pRead,
59 const sk_managedstream_peek_delegate pPeek,
60 const sk_managedstream_isAtEnd_delegate pIsAtEnd,
61 const sk_managedstream_hasPosition_delegate pHasPosition,
62 const sk_managedstream_hasLength_delegate pHasLength,
63 const sk_managedstream_rewind_delegate pRewind,
64 const sk_managedstream_getPosition_delegate pGetPosition,
65 const sk_managedstream_seek_delegate pSeek,
66 const sk_managedstream_move_delegate pMove,
67 const sk_managedstream_getLength_delegate pGetLength,
68 const sk_managedstream_createNew_delegate pCreateNew,
69 const sk_managedstream_destroy_delegate pDestroy);
72 SK_C_PLUS_PLUS_END_GUARD