cr-statement.c revision 381595e03596eb41b314b078fa8e07aec324a715
6194N/A/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8 -*- */ 6194N/A * This file is part of The Croco Library 6194N/A * This program is free software; you can redistribute it and/or 6194N/A * modify it under the terms of version 2.1 of the GNU Lesser General Public 6194N/A * License as published by the Free Software Foundation. 6194N/A * This program is distributed in the hope that it will be useful, 6194N/A * but WITHOUT ANY WARRANTY; without even the implied warranty of 6194N/A * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 6194N/A * GNU General Public License for more details. 6194N/A * You should have received a copy of the GNU Lesser General Public License 6194N/A * along with this program; if not, write to the Free Software 6194N/A * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 6194N/A * See COPYRIGHTS files for copyrights information. 6194N/A *Definition of the #CRStatement class. 6194N/A "This may lead to some memory leaks.");
6194N/A "This may lead to some memory leaks.");
6194N/A /*make sure cr_statement_new_at_media_rule works in this case. */ 6194N/A "This may lead to some memory leaks.");
6194N/A *the current ruleset stmt, child of the 6194N/A *current at-media being parsed. 6194N/A *the current ruleset stmt, child of the 6194N/A *current at-media being parsed. 6194N/A "This may lead to some memory leaks.");
* cr_statement_ruleset_to_string: *@a_this: the current instance of #CRStatement *@a_indent: the number of whitespace to use for indentation *Serializes the ruleset statement into a string *Returns the newly allocated serialised string. Must be freed *by the caller, using g_free(). * cr_statement_font_face_rule_to_string: *@a_this: the current instance of #CRStatement to consider *It must be a font face rule statement. *@a_indent: the number of white spaces of indentation. *Serializes a font face rule statement into a string. *Returns the serialized string. Must be deallocated by the caller * cr_statement_charset_to_string: *Serialises an \@charset statement into a string. *@a_this: the statement to serialize. *@a_indent: the number of indentation spaces *Returns the serialized charset statement. Must be *freed by the caller using g_free(). "@charset \"%s\" ;",
str);
* cr_statement_at_page_rule_to_string: *Serialises the at page rule statement into a string *@a_this: the current instance of #CRStatement. Must *be an "\@page" rule statement. *Returns the serialized string. Must be freed by the caller *Serializes an \@media statement. *@param a_this the current instance of #CRStatement *@param a_indent the number of spaces of indentation. *@return the serialized \@media statement. Must be freed *by the caller using g_free(). }
else /*there is no url, so no import rule, get out! */ * cr_statement_does_buf_parses_against_core: *@a_buf: the buffer to parse. *@a_encoding: the character encoding of a_buf. *Tries to parse a buffer and says whether if the content of the buffer *is a css statement as defined by the "Core CSS Grammar" (chapter 4 of the *Returns TRUE if the buffer parses against the core grammar, false otherwise. * cr_statement_parse_from_buf: *@a_buf: the buffer to parse. *@a_encoding: the character encoding of a_buf. *Parses a buffer that contains a css statement and returns *an instance of #CRStatement in case of successful parsing. *TODO: at support of "\@import" rules. *Returns the newly built instance of #CRStatement in case *of successful parsing, NULL otherwise. *The strategy of this function is "brute force". *It tries to parse all the types of CRStatement it knows about. *I could do this a smarter way but I don't have the time now. *I think I will revisit this when time of performances and *pull based incremental parsing comes. * cr_statement_ruleset_parse_from_buf: *@a_buf: the buffer to parse. *@a_enc: the character encoding of a_buf. *Parses a buffer that contains a ruleset statement and instanciates *a #CRStatement of type RULESET_STMT. *Returns the newly built instance of #CRStatement in case of successful parsing, * cr_statement_new_ruleset: *@a_sel_list: the list of #CRSimpleSel (selectors) *@a_decl_list: the list of instances of #CRDeclaration *that composes the ruleset. *@a_media_types: a list of instances of GString that *describe the media list this ruleset applies to. *Creates a new instance of #CRStatement of type *Returns the new instance of #CRStatement or NULL if something * cr_statement_at_media_rule_parse_from_buf: *@a_buf: the input to parse. *@a_enc: the encoding of the buffer. *Parses a buffer that contains an "\@media" declaration *and builds an \@media css statement. *Returns the \@media statement, or NULL if the buffer could not (
"Instanciation of the sac handler failed");
* cr_statement_new_at_media_rule: *@a_ruleset: the ruleset statements contained *@a_media: the media string list. A list of GString pointers. *Instanciates an instance of #CRStatement of type *AT_MEDIA_RULE_STMT (\@media ruleset). "It should be a list of " "correct ruleset statement only !");
* cr_statement_new_at_import_rule: *@a_url: the url to connect to the get the file *@a_sheet: the imported parsed stylesheet. *Creates a new instance of #CRStatment of type *Returns the newly built instance of #CRStatement. * cr_statement_at_import_rule_parse_from_buf: *@a_buf: the buffer to parse. *@a_encoding: the encoding of a_buf. *Parses a buffer that contains an "\@import" rule and *instanciate a #CRStatement of type AT_IMPORT_RULE_STMT *Returns the newly built instance of #CRStatement in case of *a successful parsing, NULL otherwise. * cr_statement_new_at_page_rule: *@a_decl_list: a list of instances of #CRDeclarations *which is actually the list of declarations that applies to *@a_selector: the page rule selector. *Creates a new instance of #CRStatement of type *Returns the newly built instance of #CRStatement or NULL * cr_statement_at_page_rule_parse_from_buf: *@a_buf: the character buffer to parse. *@a_encoding: the character encoding of a_buf. *Parses a buffer that contains an "\@page" production and, *if the parsing succeeds, builds the page statement. *Returns the newly built at page statement in case of successful parsing, (
"Instanciation of the sac handler failed.");
/*Now, invoke the parser to parse the "@page production" */ * cr_statement_new_at_charset_rule: *@a_charset: the string representing the charset. *Note that the newly built instance of #CRStatement becomes *the owner of a_charset. The caller must not free a_charset !!!. *Creates a new instance of #CRStatement of type *Returns the newly built instance of #CRStatement or NULL * cr_statement_at_charset_rule_parse_from_buf: *@a_buf: the buffer to parse. *@a_encoding: the character encoding of the buffer. *Parses a buffer that contains an '\@charset' rule and *creates an instance of #CRStatement of type AT_CHARSET_RULE_STMT. *Returns the newly built instance of #CRStatement. /*Now, invoke the parser to parse the "@charset production" */ * cr_statement_new_at_font_face_rule: *@a_font_decls: a list of instances of #CRDeclaration. Each declaration *is actually a font declaration. *Creates an instance of #CRStatement of type #CRAtFontFaceRule. *Returns the newly built instance of #CRStatement. printf(
"cr_statement_new_at_font_face_rule\n");
* cr_statement_font_face_rule_parse_from_buf: *@a_buf: the buffer to parse. *@a_encoding: the character encoding of a_buf. *Parses a buffer that contains an "\@font-face" rule and builds *an instance of #CRStatement of type AT_FONT_FACE_RULE_STMT out of it. *Returns the newly built instance of #CRStatement in case of successufull *parsing, NULL otherwise. *cleanup spaces of comment that may be there before the real * cr_statement_set_parent_sheet: *@a_this: the current instance of #CRStatement. *@a_sheet: the sheet that contains the current statement. *Sets the container stylesheet. *Returns CR_OK upon successful completion, an error code otherwise. * cr_statement_get_parent_sheet: *@a_this: the current #CRStatement. *@a_sheet: out parameter. A pointer to the sheets that *Gets the sheets that contains the current statement. *Returns CR_OK upon successful completion, an error code otherwise. *@a_this: the current instance of the statement list. *@a_new: a_new the new instance of #CRStatement to append. *Appends a new statement to the statement list. *Returns the new list statement list, or NULL in cas of failure. /*walk forward in the current list to find the tail list element */ *@a_this: the current instance of #CRStatement. *@a_new: the new statement to prepend. *Prepends the an instance of #CRStatement to *the current statement list. *Returns the new list with the new statement prepended, *or NULL in case of an error. /*walk backward in the prepended list to find the head list element */ *@a_this: the current statements list. *@a_to_unlink: the statement to unlink from the list. *Unlinks a statement from the statements list. *Returns the new list where a_to_unlink has been unlinked *from, or NULL in case of error. *Some sanity checks first *Now, the real unlinking job. *@a_this: the current instance of #CRStatement. *Gets the number of rules in the statement list; *Returns number of rules in the statement list. * cr_statement_get_from_list: *@a_this: the current instance of #CRStatement. *@itemnr: the index into the statement list. *Use an index to get a CRStatement from the statement list. *Returns CRStatement at position itemnr, if itemnr > number of statements - 1, * cr_statement_ruleset_set_sel_list: *@a_this: the current ruleset statement. *@a_sel_list: the selector list to set. Note *that this function increments the ref count of a_sel_list. *The sel list will be destroyed at the destruction of the *current instance of #CRStatement. *Sets a selector list to a ruleset statement. *Returns CR_OK upon successful completion, an error code otherwise. * cr_statement_ruleset_get_declarations: *@a_this: the current instance of #CRStatement. *@a_decl_list: out parameter. A pointer to the returned *list of declaration. Must not be NULL. *Gets a pointer to the list of declaration contained *in the ruleset statement. *Returns CR_OK upon successful completion, an error code if something * cr_statement_ruleset_get_sel_list: *@a_this: the current ruleset statement. *@a_list: out parameter. The returned selector list, *if and only if the function returned CR_OK. *Gets a pointer to the selector list contained in *the current ruleset statement. *Returns CR_OK upon successful completion, an error code otherwise. * cr_statement_ruleset_set_decl_list: *@a_this: the current ruleset statement. *@a_list: the declaration list to be added to the current *Sets a declaration list to the current ruleset statement. *Returns CR_OK upon successful completion, an error code otherwise. * cr_statement_ruleset_append_decl2: *@a_this: the current statement. *@a_prop: the property of the declaration. *@a_value: the value of the declaration. *Appends a declaration to the current ruleset statement. *Returns CR_OK upon successful completion, an error code * cr_statement_ruleset_append_decl: *Appends a declaration to the current statement. *@a_this: the current statement. *@a_declaration: the declaration to append. *Returns CR_OK upon sucessful completion, an error code * cr_statement_at_import_rule_set_imported_sheet: *Sets a stylesheet to the current \@import rule. *@a_this: the current \@import rule. *@a_sheet: the stylesheet. The stylesheet is owned *by the current instance of #CRStatement, that is, the *stylesheet will be destroyed when the current instance *of #CRStatement is destroyed. *Returns CR_OK upon successful completion, an error code otherwise. * cr_statement_at_import_rule_get_imported_sheet: *@a_this: the current \@import rule statement. *@a_sheet: out parameter. The returned stylesheet if and *only if the function returns CR_OK. *Gets the stylesheet contained by the \@import rule statement. *Returns CR_OK upon sucessful completion, an error code otherwise. * cr_statement_at_import_rule_set_url: *@a_this: the current \@import rule statement. *Sets an url to the current \@import rule statement. *Returns CR_OK upon successful completion, an error code otherwise. * cr_statement_at_import_rule_get_url: *@a_this: the current \@import rule statement. *@a_url: out parameter. The returned url if *and only if the function returned CR_OK. *Gets the url of the \@import rule statement. *Returns CR_OK upon successful completion, an error code otherwise. * cr_statement_at_media_nr_rules: *@a_this: the current instance of #CRStatement. *Returns the number of rules in the media rule; * cr_statement_at_media_get_from_list: *@a_this: the current instance of #CRStatement. *@itemnr: the index into the media rule list of rules. *Use an index to get a CRStatement from the media rule list of rules. *Returns CRStatement at position itemnr, if itemnr > number of rules - 1, * cr_statement_at_page_rule_set_declarations: *@a_this: the current \@page rule statement. *@a_decl_list: the declaration list to add. Will be freed *by the current instance of #CRStatement when it is destroyed. *Sets a declaration list to the current \@page rule statement. *Returns CR_OK upon successful completion, an error code otherwise. * cr_statement_at_page_rule_get_declarations: *@a_this: the current \@page rule statement. *@a_decl_list: out parameter. The returned declaration list. *Gets the declaration list associated to the current \@page rule *Returns CR_OK upon successful completion, an error code otherwise. * cr_statement_at_charset_rule_set_charset: *@a_this: the current \@charset rule statement. *@a_charset: the charset to set. *Sets the charset of the current \@charset rule statement. *Returns CR_OK upon successful completion, an error code otherwise. * cr_statement_at_charset_rule_get_charset: *@a_this: the current \@charset rule statement. *@a_charset: out parameter. The returned charset string if *and only if the function returned CR_OK. *Gets the charset string associated to the current *\@charset rule statement. * Returns CR_OK upon successful completion, an error code otherwise. * cr_statement_at_font_face_rule_set_decls: *@a_this: the current \@font-face rule statement. *@a_decls: the declarations list to set. *Sets a declaration list to the current \@font-face rule statement. *Returns CR_OK upon successful completion, an error code otherwise. * cr_statement_at_font_face_rule_get_decls: *@a_this: the current \@font-face rule statement. *@a_decls: out parameter. The returned declaration list if *and only if this function returns CR_OK. *Gets the declaration list associated to the current instance *of \@font-face rule statement. *Returns CR_OK upon successful completion, an error code otherwise. * cr_statement_at_font_face_rule_add_decl: *@a_this: the current \@font-face rule statement. *@a_prop: the property of the declaration. *@a_value: the value of the declaration. *Adds a declaration to the current \@font-face rule *Returns CR_OK upon successful completion, an error code otherwise. * cr_statement_to_string: *@a_this: the current statement to serialize *@a_indent: the number of white space of indentation. *Serializes a css statement into a string *Returns the serialized statement. Must be freed by the caller *@a_this: the current css2 statement. *@a_fp: the destination file pointer. *@a_indent: the number of white space indentation characters. *Dumps the css2 statement to a file. * cr_statement_dump_ruleset: *@a_this: the current instance of #CRStatement. *@a_fp: the destination file pointer. *@a_indent: the number of indentation white spaces to add. *Dumps a ruleset statement to a file. * cr_statement_dump_font_face_rule: *@a_this: the current instance of font face rule statement. *@a_fp: the destination file pointer. *@a_indent: the number of white space indentation. *Dumps a font face rule statement to a file. * cr_statement_dump_charset: *@a_this: the current instance of the \@charset rule statement. *@a_fp: the destination file pointer. *@a_indent: the number of indentation white spaces. *Dumps an \@charset rule statement to a file. * cr_statement_dump_page: *@a_this: the statement to dump on stdout. *@a_fp: the destination file pointer. *@a_indent: the number of indentation white spaces. *Dumps an \@page rule statement on stdout. * cr_statement_dump_media_rule: *@a_this: the statement to dump. *@a_fp: the destination file pointer *@a_indent: the number of white spaces indentation. *Dumps an \@media rule statement to a file. * cr_statement_dump_import_rule: *@a_fp: the destination file pointer. *@a_indent: the number of white space indentations. *Dumps an \@import rule statement to a file. * @a_this: the current instance of #CRStatement. *Destructor of #CRStatement. /*go get the tail of the list */ /*walk backward and free next element */ /*free the one remaining list */