/usr/include/gexiv2/gexiv2-managed-stream.h is in libgexiv2-dev 0.10.8-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | /*
* File Copied from Moonlight. See Moonlight for license
*/
#ifndef GEXIV2_MANAGED_STREAM
#define GEXIV2_MANAGED_STREAM
#include <glib-object.h>
/**
* WrapperSeekOrigin:
* @Begin: Seeking offset is relative to the beginning of the stream
* @Current: Seeking offset is relative to the current offset in the stream
* @End: Seeking offset is relative to the end of the stream
*
* Seek positions for #Stream_Seek
*
*/
typedef enum {
Begin = 0,
Current = 1,
End = 2
} WrapperSeekOrigin;
/**
* Stream_CanSeek:
* @handle: Opaque storage for the native handle this function will operate on
*
* Function that returns the seekability of the stream
*
* Returns: %TRUE if the stream object can be seeked
*/
typedef gboolean (*Stream_CanSeek) (void *handle);
/**
* Stream_CanRead:
* @handle: Opaque storage for the native handle this function will operate on
*
* Function that returns the readability of the stream
*
* Returns: %TRUE if the stream object can be read from.
*/
typedef gboolean (*Stream_CanRead) (void *handle);
/**
* Stream_CanWrite:
* @handle: Opaque storage for the native handle this function will operate on
*
* Function that returns the readability of the stream
*
* Returns: %TRUE if the stream object can be written to.
*/
typedef gboolean (*Stream_CanWrite) (void *handle);
/**
* Stream_Length:
* @handle: Opaque storage for the native handle this function will operate on
*
* Function to query the length of the stream
*
* Returns: The length of the stream
*/
typedef gint64 (*Stream_Length) (void *handle);
/**
* Stream_Position:
* @handle: Opaque storage for the native handle this function will operate on
*
* Function to query the current position in the stream
*
* Returns: The current position
*/
typedef gint64 (*Stream_Position) (void *handle);
/**
* Stream_Read:
* @handle: Opaque storage for the native handle this function will operate on
* @buffer: Destination data to read into
* @offset: Offset in @buffer where data should be written to
* @count: Number of bytes to read
*
* Function to read data from the stream
*
* Returns: The number of bytes read, 0 on EOF or -1 on error.
*/
typedef gint32 (*Stream_Read) (void *handle, void *buffer, gint32 offset, gint32 count);
/**
* Stream_Write:
* @handle: Opaque storage for the native handle this function will operate on
* @buffer: Source data to put into the stream
* @offset: Offset in @buffer where data should be read from
* @count: Number of bytes to write
*
* Function to write data to the stream
*
* Returns: The number of bytes written or -1 on error.
*/
typedef void (*Stream_Write) (void *handle, void *buffer, gint32 offset, gint32 count);
/**
* Stream_Seek:
* @handle: Opaque storage for the native handle this function will operate on
* @offset: Position in the stream, relative to @origin
* @origin: Determines meaning of offset, being relative to current position, start or end of the stream.
*
* Change the read or write position in the current stream
*/
typedef void (*Stream_Seek) (void *handle, gint64 offset, WrapperSeekOrigin origin);
/**
* Stream_Flush:
* @handle: Opaque storage for the native handle this function will operate on
*
* Schedule writing buffered data to the stream's real storage.
*/
typedef void (*Stream_Flush) (void *handle);
/**
* ManagedStreamCallbacks:
* @handle: Storage for the native handle to be used with this stream
* @CanSeek: Pointer to a function that describes the seekability of @handle
* @CanRead: Pointer to a function that describes the readability of @handle
* @CanWrite: Pointer to a function that describes the writability of @handle
* @Length: Pointer to a function that gets the length of @handle
* @Position: Pointer to a function that gives the current location inside @handle
* @Read: Read bytes from the stream
* @Write: (nullable): Function pointer to write to the stream. Can be #NULL if @CanWrite returns #FALSE
* @Seek: Function pointer to seek in the stream.
* @Flush: (nullable): Function pointer schedule writing of all cached data to disk. Can
* be #NULL if @CanWrite returns #FALSE
*
* #ManagedStreamCallbacks is a set of callbacks that describe a stream that
* can be passed to gexiv2_metadata_open_stream() to read image meta-data from
* arbitrary data sources that can be mapped to this set of callbacks.
*
* At least @CanSeek and @CanRead need to return #TRUE and the relevant
* call-backs must not be #NULL to be any useful.
*/
struct _ManagedStreamCallbacks {
void *handle;
Stream_CanSeek CanSeek;
Stream_CanRead CanRead;
Stream_CanWrite CanWrite;
Stream_Length Length;
Stream_Position Position;
Stream_Read Read;
Stream_Write Write;
Stream_Seek Seek;
Stream_Flush Flush;
};
typedef struct _ManagedStreamCallbacks ManagedStreamCallbacks;
#endif /* GEXIV2_MANAGED_STREAM */
|