summaryrefslogtreecommitdiffstats
path: root/guththila/samples
diff options
context:
space:
mode:
Diffstat (limited to 'guththila/samples')
-rw-r--r--guththila/samples/guththila_main.c186
-rw-r--r--guththila/samples/guththila_writer_main.c71
2 files changed, 257 insertions, 0 deletions
diff --git a/guththila/samples/guththila_main.c b/guththila/samples/guththila_main.c
new file mode 100644
index 0000000..687e490
--- /dev/null
+++ b/guththila/samples/guththila_main.c
@@ -0,0 +1,186 @@
+/*
+ * 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.
+ */
+
+#include "guththila.h"
+#include "guththila_defines.h"
+
+int
+main(
+ int argc,
+ char *argv[])
+{
+ int c;
+ axutil_allocator_t *allocator;
+ guththila_reader_t *red;
+ axutil_env_t *environment;
+ guththila_t *parser;
+ char *xml_buffer;
+ allocator = axutil_allocator_init(NULL);
+ xml_buffer
+ = "<?xml version = \"1.0\"?><test a=\"din\">addddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd123</test>";
+ environment = axutil_env_create(allocator);
+
+ if(argc > 1)
+ red = guththila_reader_create_for_file(environment, argv[1]);
+ else
+ {
+ if(xml_buffer)
+ {
+ int size = 0;
+ size = strlen(xml_buffer);
+ red = guththila_reader_create_for_memory(environment, (void *)xml_buffer, size, NULL);
+ }
+ }
+
+ parser = guththila_create(environment, red);
+ guththila_read(environment, parser);
+
+ while((c = guththila_next(environment, parser)) != -1)
+ {
+ switch(c)
+ {
+ case GUTHTHILA_START_DOCUMENT:
+ {
+ int ix;
+ printf("<?xml ");
+
+ ix = guththila_get_attribute_count(environment, parser);
+ for(; ix > 0; ix--)
+ {
+ guththila_attribute_t *a;
+ char *p;
+ a = guththila_get_attribute(environment, parser);
+ p = guththila_get_attribute_name(environment, parser, a);
+ printf("%s=\"", p);
+ AXIS2_FREE(allocator, p);
+ p = guththila_get_attribute_value(environment, parser, a);
+ printf("%s\" ", p);
+ AXIS2_FREE(allocator, p);
+ guththila_attribute_free(environment, a);
+ }
+ printf("?>\n");
+ }
+ break;
+ case GUTHTHILA_START_ELEMENT:
+ case GUTHTHILA_EMPTY_ELEMENT:
+ {
+ int ia;
+ int d;
+ char *p;
+ guththila_depth_t *depth;
+
+ printf("<");
+ p = guththila_get_prefix(environment, parser);
+ if(p)
+ {
+ printf("%s:", p);
+ AXIS2_FREE(allocator, p);
+ }
+ p = guththila_get_name(environment, parser);
+ printf("%s", p);
+ AXIS2_FREE(allocator, p);
+
+ ia = guththila_get_attribute_count(environment, parser);
+ for(; ia > 0; ia--)
+ {
+ /* p = guththila_get_attribute_prefix_by_number
+ (parser, ia); */
+ p = guththila_get_attribute_prefix_by_number(environment, parser, ia);
+ if(p)
+ {
+ printf(" %s:", p);
+ AXIS2_FREE(allocator, p);
+ p = guththila_get_attribute_name_by_number(environment, parser, ia);
+ printf("%s=\"", p);
+ AXIS2_FREE(allocator, p);
+ p = guththila_get_attribute_value_by_number(environment, parser, ia);
+ printf("%s\"", p);
+ AXIS2_FREE(allocator, p);
+ }
+ else
+ {
+ p = guththila_get_attribute_name_by_number(environment, parser, ia);
+ printf(" %s=\"", p);
+ AXIS2_FREE(allocator, p);
+ p = guththila_get_attribute_value_by_number(environment, parser, ia);
+ printf("%s\"", p);
+ AXIS2_FREE(allocator, p);
+ }
+ }
+ depth = (guththila_depth_t *)axutil_stack_get(parser->dep, environment);
+ d = depth->count;
+ for(; d > 0; d--)
+ {
+ p = guththila_get_namespace_prefix_by_number(environment, parser, d);
+ if(strncmp(p, "xmlns", 5))
+ {
+ printf(" xmlns:");
+ printf("%s=\"", p);
+ }
+ else
+ printf(" xmlns=\"");
+ AXIS2_FREE(allocator, p);
+ p = guththila_get_namespace_uri_by_number(environment, parser, d);
+ printf("%s\"", p);
+ AXIS2_FREE(allocator, p);
+ }
+ if(parser->guththila_event == GUTHTHILA_START_ELEMENT)
+ printf(">");
+ else if(parser->guththila_event == GUTHTHILA_EMPTY_ELEMENT)
+ printf("/>");
+ else
+ printf("error \n");
+
+ }
+ break;
+ case GUTHTHILA_END_ELEMENT:
+ {
+ char *p;
+ printf("</");
+ p = guththila_get_prefix(environment, parser);
+ if(p)
+ {
+ printf("%s:", p);
+ AXIS2_FREE(allocator, p);
+ }
+ p = guththila_get_name(environment, parser);
+ printf("%s", p);
+ AXIS2_FREE(allocator, p);
+ printf(">");
+ }
+ break;
+ case GUTHTHILA_CHARACTER:
+ {
+ char *p = NULL;
+ p = guththila_get_value(environment, parser);
+ /* if (!parser->is_whitespace) */
+ /* { */
+ /* printf(p); */
+ /* } */
+ printf("%s", p);
+ AXIS2_FREE(allocator, p);
+ }
+ break;
+ case GUTHTHILA_COMMENT:
+ break;
+ };
+ }
+ guththila_reader_free(environment, red);
+ guththila_free(environment, parser);
+ axutil_env_free(environment);
+ return 0;
+}
diff --git a/guththila/samples/guththila_writer_main.c b/guththila/samples/guththila_writer_main.c
new file mode 100644
index 0000000..9dc1218
--- /dev/null
+++ b/guththila/samples/guththila_writer_main.c
@@ -0,0 +1,71 @@
+/*
+ * 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.
+ */
+
+#include <stdio.h>
+#include <guththila_buffer.h>
+#include <guththila_reader.h>
+#include <guththila_writer.h>
+#include <guththila.h>
+#include <axis2_util.h>
+#define MAXA 100000
+int
+main(
+ int argc,
+ char *argv[])
+{
+ char *t;
+ axutil_allocator_t *allocator;
+ axutil_env_t *env;
+ guththila_t *parser;
+ char *xml = NULL;
+ FILE *file = NULL;
+ allocator = axutil_allocator_init(NULL);
+ env = axutil_env_create(allocator);
+ parser = guththila_create(env, NULL);
+ guththila_create_xml_stream_writer_for_memory(env, parser);
+ guththila_write_start_element(env, parser, "two");
+ guththila_write_default_namespace(env, parser, "http://another.host.com");
+ guththila_write_start_element_with_prefix_and_namespace(env, parser, "ws",
+ "http://www.wso2.org", "wso2");
+ guththila_write_start_element_with_prefix(env, parser, "ws", "stacks");
+ guththila_write_attribute_with_prefix(env, parser, "ws", "stack", "axis2");
+ guththila_write_characters(env, parser,
+ "testadfjaldjf;ajf;lkajdfa;lkjfd;ajdf11111111111122334455");
+ guththila_write_end_document(env, parser);
+
+ xml = (char *)AXIS2_MALLOC(env->allocator, MAXA + 1);
+ memset(xml, 0, MAXA + 1);
+ if(!argv[1])
+ {
+ file = fopen("/home/dinesh/tmp/mbox_backup/mbox.archived", "r");
+ }
+ else
+ file = fopen(argv[1], "r");
+
+ if(file)
+ fread(xml, 1, MAXA, file);
+
+ guththila_write_to_buffer(env, parser, xml);
+ t = guththila_writer_get_buffer(env, parser->xsw->writer);
+ printf("%s \n", t);
+ free(xml);
+ fclose(file);
+ guththila_xml_writer_free(env, parser);
+ guththila_free(env, parser);
+ axutil_env_free(env);
+ return 0;
+}