summaryrefslogtreecommitdiffstats
path: root/guththila/include/guththila_buffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'guththila/include/guththila_buffer.h')
-rw-r--r--guththila/include/guththila_buffer.h152
1 files changed, 152 insertions, 0 deletions
diff --git a/guththila/include/guththila_buffer.h b/guththila/include/guththila_buffer.h
new file mode 100644
index 0000000..8f94fde
--- /dev/null
+++ b/guththila/include/guththila_buffer.h
@@ -0,0 +1,152 @@
+
+/*
+ * 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_BUFFER_H
+#define GUTHTHILA_BUFFER_H
+
+#include <guththila_defines.h>
+#include <axutil_utils.h>
+
+EXTERN_C_START()
+
+typedef enum guththila_buffer_type
+{
+ GUTHTHILA_SINGLE_BUFFER = 0, /* One buffer */
+ GUTHTHILA_MULTIPLE_BUFFER /* Mulitple buffers in a buff array */
+} guththila_buffer_type_t;
+
+typedef struct guththila_buffer_s
+{
+ /* Required to manupulate multiple buffers */
+ size_t *data_size; /* Array containing filled sizes of buffers */
+ size_t *buffs_size; /* Array containing actual sizes of buffers */
+ guththila_char_t **buff; /* Array of buffers */
+ int cur_buff; /* Current buffer */
+ int cur_buff_pos; /* Position of the current buffer */
+ size_t pre_tot_data; /* All the data in the previous buffers. Not include cur */
+ unsigned int no_buffers; /* No of buffers */
+ short type; /* Buffer type */
+ guththila_char_t *xml; /* All the buffers serialized together */
+} guththila_buffer_t;
+
+#define GUTHTHILA_BUFFER_DEF_SIZE 16384
+#define GUTHTHILA_BUFFER_DEF_MIN_SIZE 512
+#define GUTHTHILA_BUFFER_NUMBER_OF_BUFFERS 16
+
+#ifndef GUTHTHILA_BUFFER_SIZE
+#define GUTHTHILA_BUFFER_SIZE(_buffer) (_buffer.size)
+#endif
+
+#ifndef GUTHTHILA_BUFFER_CURRENT_BUFF
+#define GUTHTHILA_BUFFER_CURRENT_BUFF(_buffer) ((_buffer).buff[(_buffer).cur_buff] + (_buffer).data_size[(_buffer).cur_buff])
+#endif
+
+#ifndef GUTHTHILA_BUFFER_CURRENT_BUFF_SIZE
+#define GUTHTHILA_BUFFER_CURRENT_BUFF_SIZE(_buffer) ((_buffer).buffs_size[(_buffer).cur_buff] - (_buffer).data_size[(_buffer).cur_buff])
+#endif
+
+#ifndef GUTHTHILA_BUFFER_CURRENT_DATA_SIZE
+#define GUTHTHILA_BUFFER_CURRENT_DATA_SIZE(_buffer) ((_buffer).data_size[(_buffer).cur_buff])
+#endif
+
+#ifndef GUTHTHILA_BUFFER_PRE_DATA_SIZE
+#define GUTHTHILA_BUFFER_PRE_DATA_SIZE(_buffer) ((_buffer).pre_tot_data)
+#endif
+
+/*We never consider tokens not in the current buffer*/
+#ifndef GUTHTHILA_BUF_POS
+#define GUTHTHILA_BUF_POS(_buffer, _pos) ((_buffer).buff[(_buffer).cur_buff] + _pos - (_buffer).pre_tot_data)
+#endif
+
+/**
+ * This method is the create method of guththila_buffer_s structure
+ * @param buffer structure which is going to create
+ * @param size size of the buffer which is going to create
+ * @param env environment, MUST NOT be NULL.
+ * return status of op AXIS2_SUCCESS on success,
+ * AXIS2_FAILURE on error
+ */
+int GUTHTHILA_CALL
+guththila_buffer_init(guththila_buffer_t * buffer,
+ int size,
+ const axutil_env_t * env);
+
+/**
+ * This is the free method of guththila_buffer_s structure
+ * @param buffer structure which is going to create
+ * @param env environment, MUST NOT be NULL.
+ * return status of op AXIS2_SUCCESS on success,
+ * AXIS2_FAILURE on error
+ */
+int GUTHTHILA_CALL
+guththila_buffer_un_init(guththila_buffer_t * buffer,
+ const axutil_env_t * env);
+
+/**
+ * This method creates a new buffer and copy the content of given
+ * data by buffer variable
+ * @param mu_buff structure which is going to create
+ * @param buffer data to copy in to new buffer
+ * @param size size of the buffer to create
+ * @param env environment, MUST NOT be NULL.
+ * return status of op AXIS2_SUCCESS on success,
+ * AXIS2_FAILURE on error
+ */
+int GUTHTHILA_CALL
+guththila_buffer_init_for_buffer(guththila_buffer_t * mu_buff,
+ guththila_char_t *buffer,
+ int size,
+ const axutil_env_t * env);
+
+void *GUTHTHILA_CALL
+guththila_get_position(guththila_buffer_t * buffer,
+ int pos,
+ const axutil_env_t * env);
+
+int GUTHTHILA_CALL
+guththila_buffer_next(guththila_buffer_t * buffer,
+ const axutil_env_t * env);
+
+
+/**
+ * This method create new xml element which is having the
+ * size of cur_buff
+ * data by buffer variable
+ * @param buffer
+ * @param env environment, MUST NOT be NULL.
+ * return xml element of guththila_buffer_s structure
+ */
+void *GUTHTHILA_CALL
+guththila_buffer_get(guththila_buffer_t * buffer,
+ const axutil_env_t * env);
+
+
+int GUTHTHILA_CALL
+guththila_buffer_shift(guththila_buffer_t * buffer,
+ int no, const axutil_env_t * env);
+
+int GUTHTHILA_CALL
+guththila_buffer_insert_data(guththila_buffer_t * buffer,
+ void *buff, size_t buff_len,
+ const axutil_env_t * env);
+
+EXTERN_C_END()
+#endif
+
+
+
+