summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorDodji <dodji@gnome.org>2004-03-16 21:12:08 +0000
committerDodji Seketeli <dodji@src.gnome.org>2004-03-16 21:12:08 +0000
commit6f61b537d2b207aedeb8c0cd230522a532550d17 (patch)
tree962cafc1e6106df0804d8a96edb38ca6a2720264 /docs
parent722a570bd3d38db5376a81349001d9bbb15e3506 (diff)
downloadlibcroco-6f61b537d2b207aedeb8c0cd230522a532550d17.tar.gz
Merged with libcroco--mainline--0.1--patch-22
2004-03-16 Dodji <dodji@gnome.org> Merged with libcroco--mainline--0.1--patch-22
Diffstat (limited to 'docs')
-rw-r--r--docs/examples/cssom-example-1.c10
-rw-r--r--docs/examples/sac-example-1.c5
-rw-r--r--docs/examples/sac-example-2.c16
-rw-r--r--docs/examples/selection-example-1.c267
4 files changed, 162 insertions, 136 deletions
diff --git a/docs/examples/cssom-example-1.c b/docs/examples/cssom-example-1.c
index 663f86f..a41165e 100644
--- a/docs/examples/cssom-example-1.c
+++ b/docs/examples/cssom-example-1.c
@@ -8,19 +8,15 @@
*
*To compile it using gcc, type
*
- *gcc -g `croco-config --cflags` `croco-config --libs` -o cssom-example-1 cssom-example-1.c
+ *gcc -g -Wall `croco-config --cflags` `croco-config --libs` -o cssom-example-1 cssom-example-1.c
*
*Prior to that, you must have compiled and installed libcroco, of course.
*
- *@author Dodji Seketeli <dodji@seketeli.org>
- */
-
-/*
- *$Id$
+ *@author Dodji Seketeli
*/
#include <string.h>
-#include <libcroco.h>
+#include <libcroco/libcroco.h>
/**
*Displays the usage of this program.
diff --git a/docs/examples/sac-example-1.c b/docs/examples/sac-example-1.c
index c7fd410..6e30eaa 100644
--- a/docs/examples/sac-example-1.c
+++ b/docs/examples/sac-example-1.c
@@ -9,7 +9,7 @@
*
*To compile this file, type:
*
- *gcc -g -o sac-example-1 `croco-config --cflags` `croco-config --libs` sac-example-1.c
+ *gcc -g -Wall -o sac-example-1 `croco-config --cflags` `croco-config --libs` sac-example-1.c
*
*Make sure you have compiled and installed libcroco prior to trying to
*compile this file :)
@@ -23,7 +23,8 @@
*Initial Author: Dodji Seketeli <Dodji 47 seketeli dot org>
*/
-#include <libcroco.h>
+#include <string.h>
+#include <libcroco/libcroco.h>
/**
*This is a callback function that will
diff --git a/docs/examples/sac-example-2.c b/docs/examples/sac-example-2.c
index f8a0e9b..a9aa9e4 100644
--- a/docs/examples/sac-example-2.c
+++ b/docs/examples/sac-example-2.c
@@ -20,7 +20,7 @@
*
*To compile this file, type:
*
- *gcc -g -o sac-example-2 `croco-config --cflags` `croco-config --libs` sac-example-2.c
+ *gcc -g -Wall -o sac-example-2 `croco-config --cflags` `croco-config --libs` sac-example-2.c
*
*Make sure you have compiled and installed libcroco prior to trying to
*compile this file :)
@@ -33,8 +33,9 @@
*
*Initial Author: Dodji Seketeli <Dodji 47 seketeli dot org>
*/
+#include <string.h>
#include <stdlib.h>
-#include <libcroco.h>
+#include <libcroco/libcroco.h>
/**
*A Context that will hold the
@@ -45,10 +46,10 @@
struct MyFooContext
{
/**the total number of rulesets in the stylesheet.*/
- unsigned long nb_rulesets ;
+ int nb_rulesets ;
/**the number of property per ruleset.*/
- unsigned long nb_props_per_ruleset ;
+ int nb_props_per_ruleset ;
} ;
/**
@@ -131,7 +132,8 @@ start_selector_cb (CRDocHandler *a_handler,
static void
property_cb (CRDocHandler *a_handler,
GString *a_name,
- CRTerm *a_value)
+ CRTerm *a_value,
+ gboolean a_important)
{
struct MyFooContext *context = NULL ;
@@ -241,7 +243,7 @@ main (int argc, char **argv)
*available now, so this is
*a bit redundant...
*/
- display_usage ((unsigned char*)argv[0]) ;
+ /*display_usage ((unsigned char*)argv[0]) ;*/
}
}
@@ -343,7 +345,5 @@ main (int argc, char **argv)
*/
cr_parser_destroy (parser) ;
- cr_doc_handler_unref (sac_handler) ;
-
return 0 ;
}
diff --git a/docs/examples/selection-example-1.c b/docs/examples/selection-example-1.c
index 4932a86..3fb9dfe 100644
--- a/docs/examples/selection-example-1.c
+++ b/docs/examples/selection-example-1.c
@@ -5,156 +5,185 @@
*
* To compile it using gcc, type
*
- * gcc -g `croco-config --cflags` `croco-config --libs` -o selection-example-1 selection-example-1.c
+ * gcc -g -Wall `croco-config --cflags` `croco-config --libs` -o selection-example-1 selection-example-1.c
*
- * @author Stefan Seefeld <seefeld@sympatico.ca>
+ * Initial author: Stefan Seefeld.
*/
-#include <libcroco.h>
+#include <libcroco/libcroco.h>
#include <libxml/tree.h>
#include <libxml/xpath.h>
-void usage_and_exit(char *progname)
+void
+usage_and_exit (char *progname)
{
- fprintf(stderr, "Usage: %s <xml doc> <stylesheet> <xpath>\n", progname);
- exit(-1);
+ fprintf (stderr,
+ "Usage: %s <xml doc> <stylesheet> <xpath>\n",
+ progname);
+ exit(-1);
}
struct workspace
{
- xmlDoc *document;
- xmlXPathContext *xpath;
- xmlXPathObject *result;
- CRStyleSheet *stylesheet;
- CRCascade *cascade;
- CRSelEng *selector;
+ xmlDoc *document;
+ xmlXPathContext *xpath;
+ xmlXPathObject *result;
+ CRStyleSheet *stylesheet;
+ CRCascade *cascade;
+ CRSelEng *selector;
};
/**
*construct workspace members in order...
* return 0 on success and -1 on error
*/
-int init(struct workspace *ws, char **args)
+int
+init (struct workspace *ws, char **args)
{
- short i = 0;
- enum CRStatus status = CR_OK;
-
- ws->document = 0;
- ws->xpath = 0;
- ws->result = 0;
- ws->stylesheet = 0;
- ws->cascade = 0;
- ws->selector = 0;
-
-
- ws->document = xmlParseFile(args[0]);
- if (!ws->document)
- {
- fprintf(stderr, "could not parse the document %s", args[0]);
- return -1;
- }
- ws->xpath = xmlXPathNewContext(ws->document);
- if (!ws->xpath)
- {
- fprintf(stderr, "Error: unable to create new XPath context\n");
- return -1;
- }
- ws->result = xmlXPathEvalExpression((xmlChar *)args[2], ws->xpath);
- if (!ws->result)
- {
- fprintf(stderr, "Error: unable to evaluate xpath expression\n");
- return -1;
- }
- if (ws->result->type != XPATH_NODESET || !ws->result->nodesetval)
- {
- fprintf(stderr, "Error: xpath does not evaluate to a node set\n");
- return -1;
- }
-
- status = cr_om_parser_simply_parse_file((const guchar*)args[1] /*sheet*/,
- CR_ASCII /*the encoding*/,
- &ws->stylesheet);
- if (status != CR_OK || !ws->stylesheet)
- {
- fprintf(stderr, "could not parse the stylesheet %s", args[1]);
- return -1;
- }
- ws->cascade = cr_cascade_new(ws->stylesheet, 0, 0);
- ws->selector = cr_sel_eng_new();
+ enum CRStatus status = CR_OK;
+
+ ws->document = 0;
+ ws->xpath = 0;
+ ws->result = 0;
+ ws->stylesheet = 0;
+ ws->cascade = 0;
+ ws->selector = 0;
+
+
+ ws->document = xmlParseFile(args[0]);
+ if (!ws->document)
+ {
+ fprintf(stderr, "could not parse the document %s", args[0]);
+ return -1;
+ }
+ ws->xpath = xmlXPathNewContext(ws->document);
+ if (!ws->xpath)
+ {
+ fprintf(stderr, "Error: unable to create new XPath context\n");
+ return -1;
+ }
+ ws->result = xmlXPathEvalExpression((xmlChar *)args[2], ws->xpath);
+ if (!ws->result)
+ {
+ fprintf(stderr, "Error: unable to evaluate xpath expression\n");
+ return -1;
+ }
+ if (ws->result->type != XPATH_NODESET || !ws->result->nodesetval)
+ {
+ fprintf(stderr, "Error: xpath does not evaluate to a node set\n");
+ return -1;
+ }
+
+ status = cr_om_parser_simply_parse_file((const guchar*)args[1] /*sheet*/,
+ CR_ASCII /*the encoding*/,
+ &ws->stylesheet);
+ if (status != CR_OK || !ws->stylesheet)
+ {
+ fprintf(stderr, "could not parse the stylesheet %s", args[1]);
+ return -1;
+ }
+ ws->cascade = cr_cascade_new(ws->stylesheet, 0, 0);
+ ws->selector = cr_sel_eng_new();
+ return 1 ;
}
/* ...and destruct in reverse order*/
-void fini(struct workspace *ws)
+void
+fini(struct workspace *ws)
{
- if (ws->selector)
- {
- cr_sel_eng_destroy(ws->selector);
- ws->selector = NULL ;
- }
- if (ws->cascade)
- {
- cr_cascade_destroy(ws->cascade);
- ws->cascade = NULL ;
- }
-
- if (ws->result)
- {
- xmlXPathFreeObject(ws->result);
- ws->result = NULL ;
- }
- if (ws->xpath)
- {
- xmlXPathFreeContext(ws->xpath);
- ws->xpath = NULL ;
- }
- if (ws->document)
- {
- xmlFreeDoc(ws->document);
- ws->document = NULL ;
- }
+ if (ws->selector)
+ {
+ cr_sel_eng_destroy(ws->selector);
+ ws->selector = NULL ;
+ }
+ if (ws->cascade)
+ {
+ cr_cascade_destroy(ws->cascade);
+ ws->cascade = NULL ;
+ }
+
+ if (ws->result)
+ {
+ xmlXPathFreeObject(ws->result);
+ ws->result = NULL ;
+ }
+ if (ws->xpath)
+ {
+ xmlXPathFreeContext(ws->xpath);
+ ws->xpath = NULL ;
+ }
+ if (ws->document)
+ {
+ xmlFreeDoc(ws->document);
+ ws->document = NULL ;
+ }
+ xmlCleanupParser () ;
}
-void print_property(gpointer name, gpointer decl, gpointer data)
+void
+print_properties_real (CRPropList *proplist)
{
- CRDeclaration *declaration = (CRDeclaration *)decl;
- printf("%s\n", (char *)cr_declaration_to_string(declaration, 0));
+ CRDeclaration *decl = NULL ;
+ CRPropList *cur_pair = NULL ;
+
+ for (cur_pair = proplist ; cur_pair ;
+ cur_pair= cr_prop_list_get_next (cur_pair)) {
+ decl = NULL ;
+ gchar *str = NULL ;
+ cr_prop_list_get_decl (cur_pair, &decl) ;
+ if (decl) {
+ str = cr_declaration_to_string (decl, 0) ;
+ if (str) {
+ printf ("%s\n", str) ;
+ g_free (str);
+ str = NULL ;
+ }
+ }
+ }
}
-void print_properties(struct workspace *ws)
+void
+print_properties (struct workspace *ws)
{
- enum CRStatus status;
- GHashTable *table = g_hash_table_new(g_str_hash, g_str_equal);
- xmlNode *node = ws->result->nodesetval->nodeTab[0];
- if (!table)
- {
- fprintf(stderr, "unable to allocate a hash table\n");
- return;
- }
- status = cr_sel_eng_get_matched_properties_from_cascade(ws->selector,
- ws->cascade,
- node,
- &table);
- if (status != CR_OK)
- fprintf(stderr, "Error retrieving properties\n");
- else
- {
- printf("properties for node %s :\n", (char *)xmlGetNodePath(node));
- g_hash_table_foreach(table, print_property, 0);
- }
- g_hash_table_destroy(table);
+ enum CRStatus status;
+ CRPropList *prop_list = NULL;
+ xmlNode *node = ws->result->nodesetval->nodeTab[0];
+
+ status = cr_sel_eng_get_matched_properties_from_cascade
+ (ws->selector, ws->cascade,
+ node, &prop_list);
+
+ if (status != CR_OK)
+ fprintf(stderr, "Error retrieving properties\n");
+ else
+ {
+ xmlChar *prop = NULL ;
+ prop = xmlGetNodePath(node) ;
+ if (prop) {
+ printf("properties for node %s :\n", prop);
+ xmlFree (prop) ;
+ prop = NULL ;
+ }
+ print_properties_real (prop_list) ;
+ }
+ cr_prop_list_destroy (prop_list) ;
}
-int main(int argc, char **argv)
+int
+main(int argc, char **argv)
{
- struct workspace ws;
- if (argc != 4) usage_and_exit(argv[0]);
- if (!init(&ws, argv + 1)) fini(&ws);
+ struct workspace ws;
+ if (argc != 4) usage_and_exit(argv[0]);
+ if (!init(&ws, argv + 1)) {
+ fini(&ws);
+ return -1 ;
+ }
- if (ws.result->nodesetval->nodeNr == 0)
- printf("no matching nodes found\n");
- else
- print_properties(&ws);
+ if (ws.result->nodesetval->nodeNr == 0)
+ printf("no matching nodes found\n");
+ else
+ print_properties(&ws);
- fini(&ws);
- return 0;
+ fini(&ws);
+ return 0;
}