[gxml/gsoc2013] examples/c: actually add .c files this time
- From: Richard Hans Schwarting <rschwart src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gxml/gsoc2013] examples/c: actually add .c files this time
- Date: Sun, 28 Jul 2013 05:32:24 +0000 (UTC)
commit 2e71e81a62b20f0951804d3cadbfdde0362bebcf
Author: Richard Schwarting <aquarichy gmail com>
Date: Sun Jul 28 01:30:11 2013 -0400
examples/c: actually add .c files this time
examples/c/create_document.c | 59 ++++++++++++++++++++++++++++++
examples/c/create_document_from_file.c | 22 +++++++++++
examples/c/create_document_from_path.c | 16 ++++++++
examples/c/create_document_from_string.c | 20 ++++++++++
examples/c/create_document_minimal.c | 55 ++++++++++++++++++++++++++++
examples/c/save_document_to_path.c | 14 +++++++
examples/c/save_document_to_stream.c | 20 ++++++++++
7 files changed, 206 insertions(+), 0 deletions(-)
---
diff --git a/examples/c/create_document.c b/examples/c/create_document.c
new file mode 100644
index 0000000..7020029
--- /dev/null
+++ b/examples/c/create_document.c
@@ -0,0 +1,59 @@
+#include <gxml/gxml.h>
+#include <stdio.h>
+
+int main () {
+ GXmlDocument *doc;
+ GXmlElement *root;
+ GXmlElement *owner;
+ GXmlElement *books;
+ GXmlElement *book;
+ int i;
+ char *str;
+
+ char *authors[] = { "John Green", "Jane Austen", "J.D. Salinger" };
+ char *titles[] = { "The Fault in Our Stars", "Pride & Prejudice", "Nine Stories" };
+
+ doc = gxml_document_new ();
+
+ // Add a root node
+ root = gxml_document_create_element (doc, "Bookshelf");
+
+ gxml_node_append_child (GXML_NODE (doc), GXML_NODE (root));
+ // if we tried to add a second one, it would fail :), and a g_warning would be printed
+
+ // Add an owner node
+ owner = gxml_document_create_element (doc, "Owner");
+ gxml_node_append_child (GXML_NODE (root), GXML_NODE (owner));
+ gxml_element_set_attribute (owner, "fullname", "John Green");
+ // TODO: need to figure out what sort of errors these would return,
+ // want the devhelp pages to describe meaningful possible errors
+
+ // Add a collection of books
+ books = gxml_document_create_element (doc, "Books");
+ gxml_node_append_child (GXML_NODE (root), GXML_NODE (books));
+
+ for (i = 0; i < sizeof (authors) / sizeof (char*); i++) {
+ book = gxml_document_create_element (doc, "Book");
+ gxml_element_set_attribute (book, "author", authors[i]);
+ gxml_element_set_attribute (book, "title", titles[i]);
+ gxml_node_append_child (GXML_NODE (books), GXML_NODE (book));
+ }
+
+ // TODO: want a "gxml_node_from_string ()"; make sure document ownership transfer properly
+
+ str = gxml_node_to_string (GXML_NODE (doc), TRUE, 2);
+ printf ("%s:\n%s\n", __FILE__, str);
+ g_free (str);
+
+ g_object_unref (doc);
+ g_object_unref (root); // TODO: figure out what happens to root if you deallocate doc?! */
+ // TODO: perhaps see whether we can make it that all the nodes that are returned are weak references
+ g_object_unref (owner);
+ g_object_unref (books);
+ g_object_unref (book);
+ /* In util/ there's a small programme that tells you when ownership
+ is transfered (that is, you are given a return value that you own
+ and must free. */
+
+ return 0;
+}
diff --git a/examples/c/create_document_from_file.c b/examples/c/create_document_from_file.c
new file mode 100644
index 0000000..86d99ec
--- /dev/null
+++ b/examples/c/create_document_from_file.c
@@ -0,0 +1,22 @@
+#include <gxml/gxml.h>
+#include <stdio.h>
+
+int main () {
+ GXmlDocument *doc;
+ GFile *file;
+ char *str;
+ GCancellable *can = g_cancellable_new ();
+
+ file = g_file_new_for_path ("bookshelf.xml");
+ doc = gxml_document_new_from_gfile (file, can); // TODO: want to change this function name to "from file"
+
+ str = gxml_node_to_string (GXML_NODE (doc), TRUE, 2);
+ printf ("%s:\n%s\n", __FILE__, str);
+ g_free (str);
+
+ g_object_unref (doc);
+ // TODO: how do you free a GFile? g_object_unref ()?
+
+
+ return 0;
+}
diff --git a/examples/c/create_document_from_path.c b/examples/c/create_document_from_path.c
new file mode 100644
index 0000000..a869d39
--- /dev/null
+++ b/examples/c/create_document_from_path.c
@@ -0,0 +1,16 @@
+#include <gxml/gxml.h>
+#include <stdio.h>
+
+int main () {
+ GXmlDocument *doc;
+ char *str;
+
+ doc = gxml_document_new_from_path ("bookshelf.xml");
+ str = gxml_node_to_string (GXML_NODE (doc), TRUE, 2);
+ printf ("%s:\n%s\n", __FILE__, str);
+ g_free (str);
+
+ g_object_unref (doc);
+
+ return 0;
+}
diff --git a/examples/c/create_document_from_string.c b/examples/c/create_document_from_string.c
new file mode 100644
index 0000000..c9b6a80
--- /dev/null
+++ b/examples/c/create_document_from_string.c
@@ -0,0 +1,20 @@
+#include <gxml/gxml.h>
+#include <stdio.h>
+
+int main () {
+ char *xml;
+ char *str;
+ GXmlDocument *doc;
+
+ xml = "<?xml version=\"1.0\"?><Bookshelf><Owner fullname=\"John Green\"/><Books><Book author=\"John
Green\" title=\"The Fault in Our Stars\"/><Book author=\"Jane Austen\" title=\"Pride & Prejudice\"/><Book
author=\"J.D. Salinger\" title=\"Nine Stories\"/></Books></Bookshelf>";
+
+ doc = gxml_document_new_from_string (xml);
+
+ str = gxml_node_to_string (GXML_NODE (doc), TRUE, 2);
+ printf ("%s:\n%s\n", __FILE__, str);
+ g_free (str);
+
+ g_object_unref (doc);
+
+ return 0;
+}
diff --git a/examples/c/create_document_minimal.c b/examples/c/create_document_minimal.c
new file mode 100644
index 0000000..b418320
--- /dev/null
+++ b/examples/c/create_document_minimal.c
@@ -0,0 +1,55 @@
+#include <gxml/gxml.h>
+#include <stdio.h>
+
+
+int main () {
+ GXmlDocument *doc;
+ GXmlElement *root;
+ GXmlElement *owner;
+ GXmlElement *books;
+ GXmlElement *book;
+ int i;
+ char *str;
+
+ char *authors[] = { "John Green", "Jane Austen", "J.D. Salinger" };
+ char *titles[] = { "The Fault in Our Stars", "Pride & Prejudice", "Nine Stories" };
+
+ doc = gxml_document_new ();
+
+ // Add a root node
+ root = gxml_document_create_element (doc, "Bookshelf");
+ gxml_node_append_child (GXML_NODE (doc), GXML_NODE (root));
+ // if we tried to add a second one, it would fail and a g_warning would be printed :)
+
+ // Add an owner node
+ owner = gxml_document_create_element (doc, "Owner");
+ gxml_node_append_child (GXML_NODE (root), GXML_NODE (owner));
+ gxml_element_set_attribute (owner, "fullname", "John Green");
+ // TODO: need to figure out what sort of errors these would return,
+ // want the devhelp pages to describe meaningful possible errors
+
+ // Add a collection of books
+ books = gxml_document_create_element (doc, "Books");
+ gxml_node_append_child (GXML_NODE (root), GXML_NODE (books));
+ for (i = 0; i < sizeof (authors) / sizeof (char*); i++) {
+ book = gxml_document_create_element (doc, "Book");
+ gxml_element_set_attribute (book, "author", authors[i]);
+ gxml_element_set_attribute (book, "title", titles[i]);
+ gxml_node_append_child (GXML_NODE (books), GXML_NODE (book));
+ }
+
+ str = gxml_node_to_string (GXML_NODE (doc), TRUE, 2);
+ printf ("%s:\n%s\n", __FILE__, str);
+ g_free (str);
+
+ g_object_unref (doc);
+ g_object_unref (root);
+ g_object_unref (owner);
+ g_object_unref (books);
+ g_object_unref (book);
+
+ // TODO: how do we clean them up?
+
+ return 0;
+}
+
diff --git a/examples/c/save_document_to_path.c b/examples/c/save_document_to_path.c
new file mode 100644
index 0000000..e16eddc
--- /dev/null
+++ b/examples/c/save_document_to_path.c
@@ -0,0 +1,14 @@
+#include <gxml/gxml.h>
+#include <stdio.h>
+
+int main () {
+ GXmlDocument *doc;
+
+ doc = gxml_document_new_from_path ("bookshelf.xml");
+
+ gxml_document_save_to_path (doc, "bookshelf2.xml");
+
+ g_object_unref (doc);
+
+ return 0;
+}
diff --git a/examples/c/save_document_to_stream.c b/examples/c/save_document_to_stream.c
new file mode 100644
index 0000000..873cf9e
--- /dev/null
+++ b/examples/c/save_document_to_stream.c
@@ -0,0 +1,20 @@
+#include <gxml/gxml.h>
+#include <stdio.h>
+
+int main () {
+ GXmlDocument *doc;
+ GFile *outfile;
+ GFileOutputStream *outstream;
+ GCancellable *can = g_cancellable_new ();
+
+ doc = gxml_document_new_from_path ("bookshelf.xml");
+
+ outfile = g_file_new_for_path ("bookshelf3.xml");
+ outstream = g_file_replace (outfile, NULL, FALSE, G_FILE_CREATE_REPLACE_DESTINATION, can, NULL);
+ gxml_document_save_to_stream (doc, G_OUTPUT_STREAM (outstream), can);
+
+ g_object_unref (doc);
+ // TODO: figure out how to close/unref outstream and outfile
+
+ return 0;
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]