diff options
Diffstat (limited to 'src/arrow/c_glib/arrow-glib/output-stream.h')
-rw-r--r-- | src/arrow/c_glib/arrow-glib/output-stream.h | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/src/arrow/c_glib/arrow-glib/output-stream.h b/src/arrow/c_glib/arrow-glib/output-stream.h new file mode 100644 index 000000000..eeef24891 --- /dev/null +++ b/src/arrow/c_glib/arrow-glib/output-stream.h @@ -0,0 +1,227 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#pragma once + +#include <gio/gio.h> + +#include <arrow-glib/buffer.h> +#include <arrow-glib/codec.h> +#include <arrow-glib/ipc-options.h> +#include <arrow-glib/record-batch.h> +#include <arrow-glib/tensor.h> + +G_BEGIN_DECLS + +#define GARROW_TYPE_OUTPUT_STREAM (garrow_output_stream_get_type()) +G_DECLARE_DERIVABLE_TYPE(GArrowOutputStream, + garrow_output_stream, + GARROW, + OUTPUT_STREAM, + GObject) +struct _GArrowOutputStreamClass +{ + GObjectClass parent_class; +}; + +gboolean garrow_output_stream_align(GArrowOutputStream *stream, + gint32 alignment, + GError **error); +gint64 garrow_output_stream_write_tensor(GArrowOutputStream *stream, + GArrowTensor *tensor, + GError **error); +GARROW_AVAILABLE_IN_1_0 +gint64 +garrow_output_stream_write_record_batch(GArrowOutputStream *stream, + GArrowRecordBatch *record_batch, + GArrowWriteOptions *options, + GError **error); + + +#define GARROW_TYPE_FILE_OUTPUT_STREAM \ + (garrow_file_output_stream_get_type()) +#define GARROW_FILE_OUTPUT_STREAM(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj), \ + GARROW_TYPE_FILE_OUTPUT_STREAM, \ + GArrowFileOutputStream)) +#define GARROW_FILE_OUTPUT_STREAM_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass), \ + GARROW_TYPE_FILE_OUTPUT_STREAM, \ + GArrowFileOutputStreamClass)) +#define GARROW_IS_FILE_OUTPUT_STREAM(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj), \ + GARROW_TYPE_FILE_OUTPUT_STREAM)) +#define GARROW_IS_FILE_OUTPUT_STREAM_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass), \ + GARROW_TYPE_FILE_OUTPUT_STREAM)) +#define GARROW_FILE_OUTPUT_STREAM_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS((obj), \ + GARROW_TYPE_FILE_OUTPUT_STREAM, \ + GArrowFileOutputStreamClass)) + +typedef struct _GArrowFileOutputStream GArrowFileOutputStream; +#ifndef __GTK_DOC_IGNORE__ +typedef struct _GArrowFileOutputStreamClass GArrowFileOutputStreamClass; +#endif + +/** + * GArrowFileOutputStream: + * + * It wraps `arrow::io::FileOutputStream`. + */ +struct _GArrowFileOutputStream +{ + /*< private >*/ + GArrowOutputStream parent_instance; +}; + +#ifndef __GTK_DOC_IGNORE__ +struct _GArrowFileOutputStreamClass +{ + GArrowOutputStreamClass parent_class; +}; +#endif + +GType garrow_file_output_stream_get_type(void) G_GNUC_CONST; + +GArrowFileOutputStream *garrow_file_output_stream_new(const gchar *path, + gboolean append, + GError **error); + + +#define GARROW_TYPE_BUFFER_OUTPUT_STREAM \ + (garrow_buffer_output_stream_get_type()) +#define GARROW_BUFFER_OUTPUT_STREAM(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj), \ + GARROW_TYPE_BUFFER_OUTPUT_STREAM, \ + GArrowBufferOutputStream)) +#define GARROW_BUFFER_OUTPUT_STREAM_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass), \ + GARROW_TYPE_BUFFER_OUTPUT_STREAM, \ + GArrowBufferOutputStreamClass)) +#define GARROW_IS_BUFFER_OUTPUT_STREAM(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj), \ + GARROW_TYPE_BUFFER_OUTPUT_STREAM)) +#define GARROW_IS_BUFFER_OUTPUT_STREAM_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass), \ + GARROW_TYPE_BUFFER_OUTPUT_STREAM)) +#define GARROW_BUFFER_OUTPUT_STREAM_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS((obj), \ + GARROW_TYPE_BUFFER_OUTPUT_STREAM, \ + GArrowBufferOutputStreamClass)) + +typedef struct _GArrowBufferOutputStream GArrowBufferOutputStream; +#ifndef __GTK_DOC_IGNORE__ +typedef struct _GArrowBufferOutputStreamClass GArrowBufferOutputStreamClass; +#endif + +/** + * GArrowBufferOutputStream: + * + * It wraps `arrow::io::BufferOutputStream`. + */ +struct _GArrowBufferOutputStream +{ + /*< private >*/ + GArrowOutputStream parent_instance; +}; + +#ifndef __GTK_DOC_IGNORE__ +struct _GArrowBufferOutputStreamClass +{ + GArrowOutputStreamClass parent_class; +}; +#endif + +GType garrow_buffer_output_stream_get_type(void) G_GNUC_CONST; + +GArrowBufferOutputStream *garrow_buffer_output_stream_new(GArrowResizableBuffer *buffer); + + +#define GARROW_TYPE_GIO_OUTPUT_STREAM \ + (garrow_gio_output_stream_get_type()) +#define GARROW_GIO_OUTPUT_STREAM(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj), \ + GARROW_TYPE_GIO_OUTPUT_STREAM, \ + GArrowGIOOutputStream)) +#define GARROW_GIO_OUTPUT_STREAM_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass), \ + GARROW_TYPE_GIO_OUTPUT_STREAM, \ + GArrowGIOOutputStreamClass)) +#define GARROW_IS_GIO_OUTPUT_STREAM(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj), \ + GARROW_TYPE_GIO_OUTPUT_STREAM)) +#define GARROW_IS_GIO_OUTPUT_STREAM_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass), \ + GARROW_TYPE_GIO_OUTPUT_STREAM)) +#define GARROW_GIO_OUTPUT_STREAM_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS((obj), \ + GARROW_TYPE_GIO_OUTPUT_STREAM, \ + GArrowGIOOutputStreamClass)) + +typedef struct _GArrowGIOOutputStream GArrowGIOOutputStream; +#ifndef __GTK_DOC_IGNORE__ +typedef struct _GArrowGIOOutputStreamClass GArrowGIOOutputStreamClass; +#endif + +/** + * GArrowGIOOutputStream: + * + * It's an output stream for `GOutputStream`. + */ +struct _GArrowGIOOutputStream +{ + /*< private >*/ + GArrowOutputStream parent_instance; +}; + +#ifndef __GTK_DOC_IGNORE__ +struct _GArrowGIOOutputStreamClass +{ + GArrowOutputStreamClass parent_class; +}; +#endif + +GType garrow_gio_output_stream_get_type(void) G_GNUC_CONST; + +GArrowGIOOutputStream *garrow_gio_output_stream_new(GOutputStream *gio_output_stream); +#ifndef GARROW_DISABLE_DEPRECATED +G_GNUC_DEPRECATED +GOutputStream * +garrow_gio_output_stream_get_raw(GArrowGIOOutputStream *output_stream); +#endif + +#define GARROW_TYPE_COMPRESSED_OUTPUT_STREAM \ + (garrow_compressed_output_stream_get_type()) +G_DECLARE_DERIVABLE_TYPE(GArrowCompressedOutputStream, + garrow_compressed_output_stream, + GARROW, + COMPRESSED_OUTPUT_STREAM, + GArrowOutputStream) +struct _GArrowCompressedOutputStreamClass +{ + GArrowOutputStreamClass parent_class; +}; + +GArrowCompressedOutputStream * +garrow_compressed_output_stream_new(GArrowCodec *codec, + GArrowOutputStream *raw, + GError **error); + +G_END_DECLS |