1 /* -*- Mode: C; indent-tabs-mode:nil; c-basic-offset: 8-*- */
2
3 /* libcroco - Library for parsing and applying CSS
4 * Copyright (C) 2006-2019 Free Software Foundation, Inc.
5 *
6 * This file is not part of the GNU gettext program, but is used with
7 * GNU gettext.
8 *
9 * The original copyright notice is as follows:
10 */
11
12 /*
13 * This file is part of The Croco Library
14 *
15 * Copyright (C) 2003-2004 Dodji Seketeli. All Rights Reserved.
16 *
17 * This program is free software; you can redistribute it and/or
18 * modify it under the terms of version 2.1 of the GNU Lesser General Public
19 * License as published by the Free Software Foundation.
20 *
21 * This program is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 * GNU General Public License for more details.
25 *
26 * You should have received a copy of the GNU Lesser General Public License
27 * along with this program; if not, write to the Free Software
28 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
29 * USA
30 *
31 * Author: Dodji Seketeli
32 */
33
34
35 #ifndef __CR_ADD_SEL_H__
36 #define __CR_ADD_SEL_H__
37
38 #include <stdio.h>
39 #include <glib.h>
40 #include "cr-utils.h"
41 #include "cr-attr-sel.h"
42 #include "cr-pseudo.h"
43 #include "cr-additional-sel.h"
44
45 G_BEGIN_DECLS
46
47 enum AddSelectorType
48 {
49 NO_ADD_SELECTOR = 0 ,
50 CLASS_ADD_SELECTOR = 1 ,
51 PSEUDO_CLASS_ADD_SELECTOR = 1 << 1,
52 ID_ADD_SELECTOR = 1 << 3,
53 ATTRIBUTE_ADD_SELECTOR = 1 << 4
54 } ;
55
56 union CRAdditionalSelectorContent
57 {
58 CRString *class_name ;
59 CRString *id_name ;
60 CRPseudo *pseudo ;
61 CRAttrSel *attr_sel ;
62 } ;
63
64 typedef struct _CRAdditionalSel CRAdditionalSel ;
65
66 struct _CRAdditionalSel
67 {
68 enum AddSelectorType type ;
69 union CRAdditionalSelectorContent content ;
70
71 CRAdditionalSel * next ;
72 CRAdditionalSel * prev ;
73 CRParsingLocation location ;
74 } ;
75
76 CRAdditionalSel * cr_additional_sel_new (void) ;
77
78 CRAdditionalSel * cr_additional_sel_new_with_type (enum AddSelectorType a_sel_type) ;
79
80 CRAdditionalSel * cr_additional_sel_append (CRAdditionalSel *a_this,
81 CRAdditionalSel *a_sel) ;
82
83 void cr_additional_sel_set_class_name (CRAdditionalSel *a_this,
84 CRString *a_class_name) ;
85
86 void cr_additional_sel_set_id_name (CRAdditionalSel *a_this,
87 CRString *a_id) ;
88
89 void cr_additional_sel_set_pseudo (CRAdditionalSel *a_this,
90 CRPseudo *a_pseudo) ;
91
92 void cr_additional_sel_set_attr_sel (CRAdditionalSel *a_this,
93 CRAttrSel *a_sel) ;
94
95 CRAdditionalSel * cr_additional_sel_prepend (CRAdditionalSel *a_this,
96 CRAdditionalSel *a_sel) ;
97
98 guchar * cr_additional_sel_to_string (CRAdditionalSel const *a_this) ;
99
100 guchar * cr_additional_sel_one_to_string (CRAdditionalSel const *a_this) ;
101
102 void cr_additional_sel_dump (CRAdditionalSel const *a_this, FILE *a_fp) ;
103
104 void cr_additional_sel_destroy (CRAdditionalSel *a_this) ;
105
106 G_END_DECLS
107
108 #endif /*__CR_ADD_SEL_H*/