summaryrefslogtreecommitdiffstats
path: root/guththila/include/guththila_reader.h
diff options
context:
space:
mode:
authorGravatar gmcdonald2010-02-13 01:32:03 +0000
committerGravatar gmcdonald2010-02-13 01:32:03 +0000
commit0425aadc78680e53000fd0108b540d6eca048516 (patch)
tree8ec7ab8e015d454c5ec586dfc91e05a2dce1cfc0 /guththila/include/guththila_reader.h
downloadaxis2c-0425aadc78680e53000fd0108b540d6eca048516.tar.gz
axis2c-0425aadc78680e53000fd0108b540d6eca048516.tar.bz2
Moving axis svn, part of TLP move INFRA-2441
git-svn-id: http://svn.apache.org/repos/asf/axis/axis2/c/core/trunk@909681 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'guththila/include/guththila_reader.h')
-rw-r--r--guththila/include/guththila_reader.h115
1 files changed, 115 insertions, 0 deletions
diff --git a/guththila/include/guththila_reader.h b/guththila/include/guththila_reader.h
new file mode 100644
index 0000000..cad53a1
--- /dev/null
+++ b/guththila/include/guththila_reader.h
@@ -0,0 +1,115 @@
+
+/*
+ * 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.
+ */
+#ifndef GUTHTHILA_READER_H
+#define GUTHTHILA_READER_H
+
+#include <stdio.h>
+#include <guththila_defines.h>
+#include <axutil_utils.h>
+
+EXTERN_C_START()
+
+typedef int(GUTHTHILA_CALL * GUTHTHILA_READ_INPUT_CALLBACK)(
+ guththila_char_t *buffer,
+ int size,
+ void *ctx);
+
+enum guththila_reader_type
+{
+ GUTHTHILA_FILE_READER = 1,
+ GUTHTHILA_IO_READER,
+ GUTHTHILA_MEMORY_READER
+};
+
+typedef struct guththila_reader_s
+{
+ int type; /* Type of reader */
+ FILE *fp; /* File pointer */
+ guththila_char_t *buff; /* Buffer */
+ int buff_size; /* Buff size */
+ GUTHTHILA_READ_INPUT_CALLBACK input_read_callback; /* Call back */
+ void *context; /* Context */
+} guththila_reader_t;
+
+#ifndef GUTHTHILA_READER_SET_LAST_START
+#define GUTHTHILA_READER_SET_LAST_START(_reader, _start) ((_reader)->start = _start)
+#endif
+
+#ifndef GUTHTHILA_READER_STEP_BACK
+#define GUTHTHILA_READER_STEP_BACK(_reader) ((_reader->next--))
+#endif
+
+/*
+ * Reading a file.
+ * @param filename name of the file
+ * @param env environment
+ */
+GUTHTHILA_EXPORT guththila_reader_t * GUTHTHILA_CALL
+guththila_reader_create_for_file(guththila_char_t *filename,
+ const axutil_env_t * env);
+
+/*
+ * Reading from a call back function.
+ * @param input_read_callback function pointer to read data
+ * @param ctx context
+ * @param env environment
+ */
+GUTHTHILA_EXPORT guththila_reader_t * GUTHTHILA_CALL
+guththila_reader_create_for_io(GUTHTHILA_READ_INPUT_CALLBACK
+ input_read_callback, void *ctx,
+ const axutil_env_t * env);
+
+/*
+ * Reading from memory buffer.
+ * @param buffer buffer
+ * @param size size of the buffer
+ * @param env environment
+ */
+GUTHTHILA_EXPORT guththila_reader_t * GUTHTHILA_CALL
+guththila_reader_create_for_memory(void *buffer,
+ int size,
+ const axutil_env_t * env);
+
+/*
+ * Read the specified number of character to the given buffer.
+ * @param r reader
+ * @param buffer buffer to place the read data
+ * @param offset position to place the data on the given buffer
+ * @param length number of bytes to read
+ * @param env environment
+ * @return number of bytes put in to the buffer. -1 if end of the read.
+ */
+GUTHTHILA_EXPORT int GUTHTHILA_CALL guththila_reader_read(
+ guththila_reader_t * r,
+ guththila_char_t * buffer,
+ int offset,
+ int length,
+ const axutil_env_t * env);
+
+/*
+ * Free the reader.
+ * @param r reader
+ * @param env environment
+ */
+GUTHTHILA_EXPORT void GUTHTHILA_CALL guththila_reader_free(
+ guththila_reader_t * r,
+ const axutil_env_t * env);
+
+EXTERN_C_END()
+#endif /* */
+