summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2008-09-13 00:13:49 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2008-09-13 00:13:49 +0000
commit3b6358f8254e8256f7af4e20b413f56f90a47eb1 (patch)
tree6f0e23fa76fa171957c1fa8172727401a54a277a
parent5b32645650ef555d762af41c827043705efd114b (diff)
downloadlibcss-3b6358f8254e8256f7af4e20b413f56f90a47eb1.tar.gz
libcss-3b6358f8254e8256f7af4e20b413f56f90a47eb1.tar.bz2
More API munging. Also stub out implementations of new APIs.
svn path=/trunk/libcss/; revision=5306
-rw-r--r--src/Makefile2
-rw-r--r--src/stylesheet.c186
-rw-r--r--src/stylesheet.h3
3 files changed, 190 insertions, 1 deletions
diff --git a/src/Makefile b/src/Makefile
index f56a87f..75b6515 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -35,7 +35,7 @@ d := $(DIR)
CFLAGS := $(CFLAGS) -I$(d)
# Sources
-SRCS_$(d) := libcss.c
+SRCS_$(d) := libcss.c stylesheet.c
# Append to sources for component
SOURCES += $(addprefix $(d), $(SRCS_$(d)))
diff --git a/src/stylesheet.c b/src/stylesheet.c
new file mode 100644
index 0000000..1e7b441
--- /dev/null
+++ b/src/stylesheet.c
@@ -0,0 +1,186 @@
+/*
+ * This file is part of LibCSS.
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ * Copyright 2008 John-Mark Bell <jmb@netsurf-browser.org>
+ */
+
+#include "stylesheet.h"
+#include "utils/utils.h"
+
+/**
+ * Create a selector
+ *
+ * \param sheet The stylesheet context
+ * \param type The type of selector to create
+ * \param name Name of selector
+ * \param value Value of selector, or NULL
+ * \return Pointer to selector object, or NULL on failure
+ */
+css_selector *css_stylesheet_selector_create(css_stylesheet *sheet,
+ css_selector_type type, css_string *name, css_string *value)
+{
+ UNUSED(sheet);
+ UNUSED(type);
+ UNUSED(name);
+ UNUSED(value);
+
+ return NULL;
+}
+
+/**
+ * Destroy a selector object
+ *
+ * \param sheet The stylesheet context
+ * \param selector The selector to destroy
+ */
+void css_stylesheet_selector_destroy(css_stylesheet *sheet,
+ css_selector *selector)
+{
+ UNUSED(sheet);
+ UNUSED(selector);
+
+ /** \todo Need to ensure that selector is removed from whatever it's
+ * attached to (be that the parent selector, parent rule, or the
+ * hashtable of selectors (or any combination of these) */
+}
+
+/**
+ * Append a selector to the specifics chain of another selector
+ *
+ * \param sheet The stylesheet context
+ * \param parent The parent selector
+ * \param specific The selector to append
+ * \return CSS_OK on success, appropriate error otherwise.
+ */
+css_error css_stylesheet_selector_append_specific(css_stylesheet *sheet,
+ css_selector *parent, css_selector *specific)
+{
+ UNUSED(sheet);
+ UNUSED(parent);
+ UNUSED(specific);
+
+ return CSS_OK;
+}
+
+/**
+ * Combine a pair of selectors
+ *
+ * \param sheet The stylesheet context
+ * \param type The combinator type
+ * \param a The first operand
+ * \param b The second operand
+ * \return CSS_OK on success, appropriate error otherwise.
+ *
+ * For example, given A + B, the combinator field of B would point at A,
+ * with a combinator type of CSS_COMBINATOR_SIBLING. Thus, given B, we can
+ * find its combinator. It is not possible to find B given A.
+ *
+ * \todo Check that this (backwards) representation plays well with CSSOM.
+ */
+css_error css_stylesheet_selector_combine(css_stylesheet *sheet,
+ css_combinator type, css_selector *a, css_selector *b)
+{
+ UNUSED(sheet);
+ UNUSED(type);
+ UNUSED(a);
+ UNUSED(b);
+
+ /** \todo Need to ensure that there is no existing combinator on B */
+
+ return CSS_OK;
+}
+
+/**
+ * Create a CSS rule
+ *
+ * \param sheet The stylesheet context
+ * \param type The rule type
+ * \return Pointer to rule object, or NULL on failure.
+ */
+css_rule *css_stylesheet_rule_create(css_stylesheet *sheet, css_rule_type type)
+{
+ UNUSED(sheet);
+ UNUSED(type);
+
+ return NULL;
+}
+
+/**
+ * Destroy a CSS rule
+ *
+ * \param sheet The stylesheet context
+ * \param rule The rule to destroy
+ */
+void css_stylesheet_rule_destroy(css_stylesheet *sheet, css_rule *rule)
+{
+ UNUSED(sheet);
+ UNUSED(rule);
+
+ /** \todo should this be recursive? */
+ /** \todo what happens to non-rule objects owned by this rule? */
+}
+
+/**
+ * Add a selector to a CSS rule
+ *
+ * \param sheet The stylesheet context
+ * \param rule The rule to add to (must be of type CSS_RULE_SELECTOR)
+ * \param selector The selector to add
+ * \return CSS_OK on success, appropriate error otherwise
+ */
+css_error css_stylesheet_rule_add_selector(css_stylesheet *sheet,
+ css_rule *rule, css_selector *selector)
+{
+ UNUSED(sheet);
+ UNUSED(rule);
+ UNUSED(selector);
+
+ /** \todo Ensure rule is a CSS_RULE_SELECTOR */
+ /** \todo Set selector's rule field */
+
+ return CSS_OK;
+}
+
+/**
+ * Add a rule to a stylesheet
+ *
+ * \param sheet The stylesheet to add to
+ * \param rule The rule to add
+ * \return CSS_OK on success, appropriate error otherwise
+ */
+css_error css_stylesheet_add_rule(css_stylesheet *sheet, css_rule *rule)
+{
+ UNUSED(sheet);
+ UNUSED(rule);
+
+ /** \todo Fill in rule's index and owner fields */
+ /** \todo If there are selectors in the rule, add them to the hash
+ * (this needs to recurse over child rules, too) */
+
+ return CSS_OK;
+}
+
+/**
+ * Remove a rule from a stylesheet
+ *
+ * \param sheet The sheet to remove from
+ * \param rule The rule to remove
+ * \return CSS_OK on success, appropriate error otherwise
+ */
+css_error css_stylesheet_remove_rule(css_stylesheet *sheet, css_rule *rule)
+{
+ UNUSED(sheet);
+ UNUSED(rule);
+
+ /** \todo If there are selectors (recurse over child rules, too),
+ * then they must be removed from the hash */
+ /**\ todo renumber subsequent rules? may not be necessary, as there's
+ * only an expectation that rules which occur later in the stylesheet
+ * have a higher index than those that appear earlier. There's no
+ * guarantee that the number space is continuous. */
+
+ return CSS_OK;
+}
+
+
diff --git a/src/stylesheet.h b/src/stylesheet.h
index 3d9409d..15d86ab 100644
--- a/src/stylesheet.h
+++ b/src/stylesheet.h
@@ -154,5 +154,8 @@ css_error css_stylesheet_rule_add_selector(css_stylesheet *sheet,
/** \todo registering other rule-type data with css_rules */
+css_error css_stylesheet_add_rule(css_stylesheet *sheet, css_rule *rule);
+css_error css_stylesheet_remove_rule(css_stylesheet *sheet, css_rule *rule);
+
#endif