Main Page | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

cr-parser.h File Reference

The declaration file of the CRParser class. More...

#include <glib.h>
#include "cr-parser-input.h"
#include "cr-tknzr.h"
#include "cr-utils.h"
#include "cr-doc-handler.h"

Go to the source code of this file.

Data Structures

struct  _CRParser
 The implementation of the SAC parser. More...


Typedefs

typedef _CRParser CRParser
typedef _CRParserPriv CRParserPriv

Functions

CRParsercr_parser_new (CRTknzr *a_tknzr)
 Creates a new parser to parse data coming the input stream given in parameter.

CRParsercr_parser_new_from_buf (const guchar *a_buf, gulong a_len, enum CREncoding a_enc, gboolean a_free_buf)
 Instanciates a new parser from a memory buffer.

CRParsercr_parser_new_from_file (const guchar *a_file_uri, enum CREncoding a_enc)
CRParsercr_parser_new_from_input (CRInput *a_input)
enum CRStatus cr_parser_set_tknzr (CRParser *a_this, CRTknzr *a_tknzr)
enum CRStatus cr_parser_try_to_skip_spaces_and_comments (CRParser *a_this)
 Same as cr_parser_try_to_skip_spaces() but this one skips spaces and comments.

enum CRStatus cr_parser_set_sac_handler (CRParser *a_this, CRDocHandler *a_handler)
 Sets a SAC document handler to the parser.

enum CRStatus cr_parser_get_sac_handler (CRParser *a_this, CRDocHandler **a_handler)
 Gets the SAC document handler.

enum CRStatus cr_parser_set_use_core_grammar (CRParser *a_this, gboolean a_use_core_grammar)
enum CRStatus cr_parser_get_use_core_grammar (CRParser *a_this, gboolean *a_use_core_grammar)
enum CRStatus cr_parser_parse (CRParser *a_this)
 Parses the data that comes from the input previously associated to the current instance of CRParser.

enum CRStatus cr_parser_parse_file (CRParser *a_this, const guchar *a_file_uri, enum CREncoding a_enc)
 Parses a the given in parameter.

enum CRStatus cr_parser_parse_buf (CRParser *a_this, const guchar *a_buf, gulong a_len, enum CREncoding a_enc)
enum CRStatus cr_parser_set_default_sac_handler (CRParser *a_this)
 Sets the SAC handler associated to the current instance of CRParser to the default SAC handler.

enum CRStatus cr_parser_parse_expr (CRParser *a_this, CRTerm **a_expr)
 Parses an expression as defined by the css2 spec in appendix D.1: expr: term [ operator term ]*.

enum CRStatus cr_parser_parse_declaration (CRParser *a_this, GString **a_property, CRTerm **a_expr)
 Parses a "declaration" as defined by the css2 spec in appendix D.1: declaration ::= [property ':' S* expr prio?]?

enum CRStatus cr_parser_parse_statement_core (CRParser *a_this)
 Parses a statement as defined by the css core grammar in chapter 4.1 of the css2 spec.

enum CRStatus cr_parser_parse_ruleset (CRParser *a_this)
 Parses a "ruleset" as defined in the css2 spec at appendix D.1.

enum CRStatus cr_parser_parse_import (CRParser *a_this, GList **a_media_list, GString **a_import_string)
 Parses an 'import' declaration as defined in the css2 spec in appendix D.1:.

enum CRStatus cr_parser_parse_media (CRParser *a_this)
 Parses a 'media' declaration as specified in the css2 spec at appendix D.1:.

enum CRStatus cr_parser_parse_page (CRParser *a_this)
 Parses '' rule as specified in the css2 spec in appendix D.1: page ::= PAGE_SYM S* IDENT? pseudo_page? S* '{' S* declaration [ ';' S* declaration ]* '}' S*.

enum CRStatus cr_parser_parse_charset (CRParser *a_this, GString **a_value)
 Parses a charset declaration as defined implictly by the css2 spec in appendix D.1: charset ::= CHARSET_SYM S* STRING S* ';'.

enum CRStatus cr_parser_parse_font_face (CRParser *a_this)
 Parses the "@font-face" rule specified in the css1 spec in appendix D.1:.

void cr_parser_destroy (CRParser *a_this)
 Destroys the current instance of CRParser.


Detailed Description

The declaration file of the CRParser class.

Definition in file cr-parser.h.


Typedef Documentation

typedef struct _CRParser CRParser
 

Definition at line 43 of file cr-parser.h.

typedef struct _CRParserPriv CRParserPriv
 

Definition at line 44 of file cr-parser.h.


Function Documentation

void cr_parser_destroy CRParser a_this  ) 
 

Destroys the current instance of CRParser.

Parameters:
a_this the current instance of CRParser to destroy.

Definition at line 5159 of file cr-parser.c.

References cr_doc_handler_unref(), cr_tknzr_unref(), and PRIVATE.

Referenced by cr_declaration_parse_from_buf(), cr_om_parser_destroy(), cr_statement_at_charset_rule_parse_from_buf(), cr_statement_at_import_rule_parse_from_buf(), cr_statement_at_media_rule_parse_from_buf(), cr_statement_at_page_rule_parse_from_buf(), cr_statement_does_buf_parses_against_core(), cr_statement_font_face_rule_parse_from_buf(), cr_statement_ruleset_parse_from_buf(), and cr_term_parse_expression_from_buf().

enum CRStatus cr_parser_get_sac_handler CRParser a_this,
CRDocHandler **  a_handler
 

Gets the SAC document handler.

Parameters:
a_this the "this pointer" of the current instance of CRParser.
a_handler out parameter. The returned handler.
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 3556 of file cr-parser.c.

References CR_BAD_PARAM_ERROR, CR_OK, and PRIVATE.

Referenced by cr_om_parser_parse_buf(), and cr_om_parser_parse_file().

enum CRStatus cr_parser_get_use_core_grammar CRParser a_this,
gboolean *  a_use_core_grammar
 

Definition at line 3610 of file cr-parser.c.

References CR_BAD_PARAM_ERROR, CR_OK, and PRIVATE.

CRParser* cr_parser_new CRTknzr a_tknzr  ) 
 

Creates a new parser to parse data coming the input stream given in parameter.

Parameters:
a_input the input stream of the parser. Note that the newly created parser will ref a_input and unref it when parsing reaches the end of the input stream.
Returns:
the newly created instance of CRParser, or NULL if an error occured.

Definition at line 3430 of file cr-parser.c.

References CR_OK, cr_parser_set_tknzr(), CRStatus, and PRIVATE.

Referenced by cr_om_parser_parse_buf(), cr_parser_new_from_file(), and cr_parser_new_from_input().

CRParser* cr_parser_new_from_buf const guchar *  a_buf,
gulong  a_len,
enum CREncoding  a_enc,
gboolean  a_free_buf
 

Instanciates a new parser from a memory buffer.

Parameters:
a_buf the buffer to parse.
a_len the length of the data in the buffer.
a_enc the encoding of the input buffer a_buf.
a_free_buf if set to TRUE, a_buf will be freed during the destruction of the newly built instance of CRParser. If set to FALSE, it is up to the caller to eventually free it.
Returns:
the newly built parser, or NULL if an error arises.

Definition at line 3462 of file cr-parser.c.

References cr_input_destroy(), cr_input_new_from_buf(), and cr_parser_new_from_input().

Referenced by cr_declaration_parse_from_buf(), cr_selector_parse_from_buf(), cr_statement_at_charset_rule_parse_from_buf(), cr_statement_at_import_rule_parse_from_buf(), cr_statement_at_media_rule_parse_from_buf(), cr_statement_at_page_rule_parse_from_buf(), cr_statement_does_buf_parses_against_core(), cr_statement_font_face_rule_parse_from_buf(), cr_statement_ruleset_parse_from_buf(), and cr_term_parse_expression_from_buf().

CRParser* cr_parser_new_from_file const guchar *  a_file_uri,
enum CREncoding  a_enc
 

Definition at line 3505 of file cr-parser.c.

References cr_parser_new(), cr_tknzr_new_from_uri(), cr_utils_trace_info, and CRTknzr.

Referenced by cr_om_parser_parse_file().

CRParser* cr_parser_new_from_input CRInput a_input  ) 
 

Definition at line 3486 of file cr-parser.c.

References cr_parser_new(), cr_tknzr_new(), and CRTknzr.

Referenced by cr_om_parser_new(), and cr_parser_new_from_buf().

enum CRStatus cr_parser_parse CRParser a_this  ) 
 

Parses the data that comes from the input previously associated to the current instance of CRParser.

Parameters:
a_this the current instance of CRParser.
Returns:
CR_OK ;

Definition at line 5086 of file cr-parser.c.

References CR_BAD_PARAM_ERROR, CR_ERROR, CRStatus, and PRIVATE.

Referenced by cr_parser_parse_buf(), and cr_parser_parse_file().

enum CRStatus cr_parser_parse_buf CRParser a_this,
const guchar *  a_buf,
gulong  a_len,
enum CREncoding  a_enc
 

Definition at line 5128 of file cr-parser.c.

References CR_BAD_PARAM_ERROR, CR_ERROR, CR_OK, cr_parser_parse(), cr_parser_set_tknzr(), cr_tknzr_new_from_buf(), CRStatus, CRTknzr, and PRIVATE.

Referenced by cr_om_parser_parse_buf().

enum CRStatus cr_parser_parse_charset CRParser a_this,
GString **  a_value
 

Parses a charset declaration as defined implictly by the css2 spec in appendix D.1: charset ::= CHARSET_SYM S* STRING S* ';'.

Parameters:
a_this the "this pointer" of the current instance of CRParser.
a_value out parameter. The actual parsed value of the charset declararation. Note that for safety check reasons, *a_value must be set to NULL.
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 4788 of file cr-parser.c.

References CHARSET_PARSED_STATE, CHARSET_SYM_TK, CR_BAD_PARAM_ERROR, CR_OK, cr_parser_try_to_skip_spaces_and_comments(), cr_tknzr_get_next_token(), cr_tknzr_set_cur_pos(), cr_token_destroy(), CRStatus, ENSURE_PARSING_COND, PRIVATE, RECORD_INITIAL_POS, SEMICOLON_TK, STRING_TK, TRY_PARSE_CHARSET_STATE, _CRToken::type, and _CRToken::u.

Referenced by cr_statement_at_charset_rule_parse_from_buf().

enum CRStatus cr_parser_parse_declaration CRParser a_this,
GString **  a_property,
CRTerm **  a_expr
 

Parses a "declaration" as defined by the css2 spec in appendix D.1: declaration ::= [property ':' S* expr prio?]?

Parameters:
a_this the "this pointer" of the current instance of CRParser.
a_property the successfully parsed property. The caller *must* free the returned pointer.
a_expr the expression that represents the attribute value. The caller *must* free the returned pointer.
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 3773 of file cr-parser.c.

References CHECK_PARSING_STATUS_ERR, CR_BAD_PARAM_ERROR, CR_ERROR, CR_OK, cr_parser_parse_expr(), cr_parser_try_to_skip_spaces_and_comments(), CR_PARSING_ERROR, CR_SYNTAX_ERROR, cr_term_append_term(), cr_term_destroy(), cr_tknzr_set_cur_pos(), CRStatus, PRIVATE, READ_NEXT_CHAR, and RECORD_INITIAL_POS.

Referenced by cr_declaration_parse_from_buf(), cr_parser_parse_font_face(), cr_parser_parse_page(), and cr_parser_parse_ruleset().

enum CRStatus cr_parser_parse_expr CRParser a_this,
CRTerm **  a_expr
 

Parses an expression as defined by the css2 spec in appendix D.1: expr: term [ operator term ]*.

Definition at line 3658 of file cr-parser.c.

References CHECK_PARSING_STATUS, COMMA, CR_BAD_PARAM_ERROR, CR_END_OF_INPUT_ERROR, CR_ERROR, CR_OK, cr_parser_try_to_skip_spaces_and_comments(), cr_term_append_term(), cr_term_destroy(), cr_tknzr_peek_byte(), cr_tknzr_set_cur_pos(), CRStatus, DIVIDE, _CRTerm::operator, PRIVATE, READ_NEXT_BYTE, and RECORD_INITIAL_POS.

Referenced by cr_parser_parse_declaration(), and cr_term_parse_expression_from_buf().

enum CRStatus cr_parser_parse_file CRParser a_this,
const guchar *  a_file_uri,
enum CREncoding  a_enc
 

Parses a the given in parameter.

Parameters:
a_this a pointer to the current instance of CRParser.
a_file_uri the uri to the file to load. For the time being, only local files are supported.
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 3629 of file cr-parser.c.

References CR_BAD_PARAM_ERROR, CR_ERROR, CR_OK, cr_parser_parse(), cr_parser_set_tknzr(), cr_tknzr_new_from_uri(), CRStatus, CRTknzr, and PRIVATE.

Referenced by cr_om_parser_parse_file().

enum CRStatus cr_parser_parse_font_face CRParser a_this  ) 
 

Parses the "@font-face" rule specified in the css1 spec in appendix D.1:.

font_face ::= FONT_FACE_SYM S* '{' S* declaration [ ';' S* declaration ]* '}' S*

This function will call SAC handlers whenever it is necessary.

Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 4882 of file cr-parser.c.

References CBO_TK, CR_BAD_PARAM_ERROR, CR_ERROR, CR_OK, cr_parser_parse_declaration(), cr_parser_try_to_skip_spaces_and_comments(), cr_term_destroy(), cr_term_ref(), cr_term_unref(), cr_tknzr_get_next_token(), cr_tknzr_set_cur_pos(), cr_token_destroy(), CRStatus, ENSURE_PARSING_COND, FONT_FACE_PARSED_STATE, FONT_FACE_SYM_TK, PEEK_NEXT_CHAR, PRIVATE, READ_NEXT_CHAR, RECORD_INITIAL_POS, TRY_PARSE_FONT_FACE_STATE, and _CRToken::type.

Referenced by cr_statement_font_face_rule_parse_from_buf().

enum CRStatus cr_parser_parse_import CRParser a_this,
GList **  a_media_list,
GString **  a_import_string
 

Parses an 'import' declaration as defined in the css2 spec in appendix D.1:.

import ::= [STRING|URI] S* [ medium [ ',' S* medium]* ]? ';' S*

Parameters:
a_this the "this pointer" of the current instance of CRParser.
a_medium_list out parameter. A linked list of GString (see the doc of glib-2). Each GString is a string that contains a 'medium' declaration part of the successfully parsed 'import' declaration.
a_import_string out parameter. A string that contains the 'import string". The import string can be either an uri (if it starts with the substring "uri(") or a any other css2 string. Note that *a_import_string must be initially set to NULL or else, this function will return CR_BAD_PARAM_ERROR.
Returns:
CR_OK upon sucessfull completion, an error code otherwise.

Definition at line 4153 of file cr-parser.c.

References BYTE, CHECK_PARSING_STATUS, CR_BAD_PARAM_ERROR, CR_END_OF_INPUT_ERROR, CR_OK, cr_parser_try_to_skip_spaces_and_comments(), CR_PARSING_ERROR, cr_tknzr_peek_char(), cr_tknzr_set_cur_pos(), CRStatus, ENSURE_PARSING_COND, IMPORT_PARSED_STATE, PEEK_NEXT_CHAR, PRIVATE, READ_NEXT_CHAR, RECORD_INITIAL_POS, SKIP_CHARS, and TRY_PARSE_IMPORT_STATE.

Referenced by cr_statement_at_import_rule_parse_from_buf().

enum CRStatus cr_parser_parse_media CRParser a_this  ) 
 

Parses a 'media' declaration as specified in the css2 spec at appendix D.1:.

media ::= S* medium [ ',' S* medium ]* '{' S* ruleset* '}' S*

Note that this function calls the required sac handlers during the parsing to notify media productions. See CRDocHandler to know the callback called during parsing.

Parameters:
a_this the "this pointer" of the current instance of CRParser.
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 4329 of file cr-parser.c.

References CHECK_PARSING_STATUS, CR_BAD_PARAM_ERROR, CR_OK, cr_parser_parse_ruleset(), cr_parser_try_to_skip_spaces_and_comments(), cr_tknzr_get_next_token(), cr_tknzr_set_cur_pos(), cr_token_destroy(), CRStatus, ENSURE_PARSING_COND, IDENT_TK, MEDIA_PARSED_STATE, MEDIA_SYM_TK, PEEK_NEXT_CHAR, PRIVATE, READ_NEXT_CHAR, RECORD_INITIAL_POS, TRY_PARSE_MEDIA_STATE, _CRToken::type, and _CRToken::u.

Referenced by cr_statement_at_media_rule_parse_from_buf().

enum CRStatus cr_parser_parse_page CRParser a_this  ) 
 

Parses '' rule as specified in the css2 spec in appendix D.1: page ::= PAGE_SYM S* IDENT? pseudo_page? S* '{' S* declaration [ ';' S* declaration ]* '}' S*.

This function also calls the relevant SAC handlers whenever it encounters a construction that must be reported to the calling application.

Parameters:
a_this the "this pointer" of the current instance of CRParser.
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 4512 of file cr-parser.c.

References CBC_TK, CBO_TK, CHECK_PARSING_STATUS, CR_BAD_PARAM_ERROR, CR_OK, cr_parser_parse_declaration(), cr_parser_try_to_skip_spaces_and_comments(), cr_term_destroy(), cr_term_ref(), cr_term_unref(), cr_tknzr_get_next_token(), cr_tknzr_set_cur_pos(), cr_tknzr_unget_token(), cr_token_destroy(), CRStatus, DELIM_TK, ENSURE_PARSING_COND, IDENT_TK, PAGE_PARSED_STATE, PAGE_SYM_TK, PRIVATE, RECORD_INITIAL_POS, SEMICOLON_TK, TRY_PARSE_PAGE_STATE, _CRToken::type, and _CRToken::u.

Referenced by cr_statement_at_page_rule_parse_from_buf().

enum CRStatus cr_parser_parse_ruleset CRParser a_this  ) 
 

Parses a "ruleset" as defined in the css2 spec at appendix D.1.

ruleset ::= selector [ ',' S* selector ]* '{' S* declaration? [ ';' S* declaration? ]* '}' S*;

This methods calls the the SAC handler on the relevant SAC handler callbacks whenever it encounters some specific constructions. See the documentation of CRDocHandler (the SAC handler) to know when which SAC handler is called.

Parameters:
a_this the "this pointer" of the current instance of CRParser.
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 3922 of file cr-parser.c.

References CHECK_PARSING_STATUS, CHECK_PARSING_STATUS_ERR, CR_BAD_PARAM_ERROR, CR_OK, cr_parser_parse_declaration(), cr_parser_try_to_skip_spaces_and_comments(), cr_selector_ref(), cr_selector_unref(), cr_simple_sel_destroy(), CR_SYNTAX_ERROR, cr_term_ref(), cr_term_unref(), cr_tknzr_set_cur_pos(), CRStatus, ENSURE_PARSING_COND_ERR, PEEK_NEXT_CHAR, PRIVATE, READ_NEXT_CHAR, RECORD_INITIAL_POS, RULESET_PARSED_STATE, and TRY_PARSE_RULESET_STATE.

Referenced by cr_parser_parse_media(), and cr_statement_ruleset_parse_from_buf().

enum CRStatus cr_parser_parse_statement_core CRParser a_this  ) 
 

Parses a statement as defined by the css core grammar in chapter 4.1 of the css2 spec.

statement : ruleset | at-rule;

Parameters:
a_this the current instance of CRParser.
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 3857 of file cr-parser.c.

References ATKEYWORD_TK, CHARSET_SYM_TK, CHECK_PARSING_STATUS, CR_BAD_PARAM_ERROR, CR_ERROR, CR_OK, cr_tknzr_get_next_token(), cr_tknzr_set_cur_pos(), cr_tknzr_unget_token(), cr_token_destroy(), CRStatus, ENSURE_PARSING_COND, FONT_FACE_SYM_TK, IMPORT_SYM_TK, MEDIA_SYM_TK, PAGE_SYM_TK, PRIVATE, RECORD_INITIAL_POS, and _CRToken::type.

Referenced by cr_statement_does_buf_parses_against_core().

enum CRStatus cr_parser_set_default_sac_handler CRParser a_this  ) 
 

Sets the SAC handler associated to the current instance of CRParser to the default SAC handler.

Parameters:
a_this a pointer to the current instance of CRParser.
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 3573 of file cr-parser.c.

References CR_BAD_PARAM_ERROR, cr_doc_handler_destroy(), cr_doc_handler_new(), cr_doc_handler_set_default_sac_handler(), CR_ERROR, CR_OK, cr_parser_set_sac_handler(), CRDocHandler, CRStatus, and PRIVATE.

enum CRStatus cr_parser_set_sac_handler CRParser a_this,
CRDocHandler a_handler
 

Sets a SAC document handler to the parser.

Parameters:
a_this the "this pointer" of the current instance of CRParser.
a_handler the handler to set.
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 3531 of file cr-parser.c.

References CR_BAD_PARAM_ERROR, cr_doc_handler_ref(), cr_doc_handler_unref(), CR_OK, and PRIVATE.

Referenced by cr_parser_set_default_sac_handler(), cr_statement_at_media_rule_parse_from_buf(), cr_statement_at_page_rule_parse_from_buf(), cr_statement_font_face_rule_parse_from_buf(), and cr_statement_ruleset_parse_from_buf().

enum CRStatus cr_parser_set_tknzr CRParser a_this,
CRTknzr a_tknzr
 

Definition at line 5108 of file cr-parser.c.

References CR_BAD_PARAM_ERROR, CR_OK, cr_tknzr_ref(), cr_tknzr_unref(), and PRIVATE.

Referenced by cr_parser_new(), cr_parser_parse_buf(), and cr_parser_parse_file().

enum CRStatus cr_parser_set_use_core_grammar CRParser a_this,
gboolean  a_use_core_grammar
 

Definition at line 3598 of file cr-parser.c.

References CR_BAD_PARAM_ERROR, CR_OK, and PRIVATE.

Referenced by cr_statement_does_buf_parses_against_core().

enum CRStatus cr_parser_try_to_skip_spaces_and_comments CRParser a_this  ) 
 

Same as cr_parser_try_to_skip_spaces() but this one skips spaces and comments.

Parameters:
a_this the current instance of CRParser.
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 689 of file cr-parser.c.

References COMMENT_TK, CR_BAD_PARAM_ERROR, CR_ERROR, CR_OK, cr_tknzr_get_next_token(), cr_tknzr_unget_token(), cr_token_destroy(), CRStatus, PRIVATE, S_TK, and _CRToken::type.

Referenced by cr_declaration_parse_from_buf(), cr_parser_parse_charset(), cr_parser_parse_declaration(), cr_parser_parse_expr(), cr_parser_parse_font_face(), cr_parser_parse_import(), cr_parser_parse_media(), cr_parser_parse_page(), cr_parser_parse_ruleset(), cr_statement_at_charset_rule_parse_from_buf(), cr_statement_at_import_rule_parse_from_buf(), cr_statement_at_media_rule_parse_from_buf(), cr_statement_at_page_rule_parse_from_buf(), cr_statement_font_face_rule_parse_from_buf(), cr_statement_ruleset_parse_from_buf(), and cr_term_parse_expression_from_buf().


Generated on Wed Oct 1 01:36:51 2003 for Libcroco by doxygen 1.3.3