annotate src/doctree.hh @ 763:df8153796f48

initial implementation of a CSS selector matching optimization The idea is to avoid repeated checks of CssSimpleSelector against the same part of the doctree. E.g .navigation * { background-color:green } Would result in checking for class="navigation" all the way down to the document root for all elements. The optimization shortcuts this, for parts of the doctree that have been checked before.
author Johannes Hofmann <Johannes.Hofmann@gmx.de>
date Tue, 13 Jan 2009 09:02:41 +0100
parents 145b8a4d65b3
children a913df1621ac
rev   line source
501
424e4f409636 add doctree.hh
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
diff changeset
1 #ifndef __DOCTREE_HH__
424e4f409636 add doctree.hh
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
diff changeset
2 #define __DOCTREE_HH__
424e4f409636 add doctree.hh
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
diff changeset
3
424e4f409636 add doctree.hh
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
diff changeset
4 class DoctreeNode {
424e4f409636 add doctree.hh
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
diff changeset
5 public:
763
df8153796f48 initial implementation of a CSS selector matching optimization
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents: 562
diff changeset
6 int num; // unique ascending id
503
00b31843839b implement various apply() methods
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents: 501
diff changeset
7 int depth;
562
145b8a4d65b3 tag -> element
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents: 558
diff changeset
8 int element;
501
424e4f409636 add doctree.hh
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
diff changeset
9 const char *klass;
558
be6295157b10 adjust pseudo class handling
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents: 536
diff changeset
10 const char *pseudo;
501
424e4f409636 add doctree.hh
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
diff changeset
11 const char *id;
424e4f409636 add doctree.hh
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
diff changeset
12 };
424e4f409636 add doctree.hh
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
diff changeset
13
424e4f409636 add doctree.hh
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
diff changeset
14 class Doctree {
424e4f409636 add doctree.hh
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
diff changeset
15 public:
503
00b31843839b implement various apply() methods
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents: 501
diff changeset
16 virtual ~Doctree () {};
501
424e4f409636 add doctree.hh
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
diff changeset
17 virtual const DoctreeNode *top () = 0;
424e4f409636 add doctree.hh
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
diff changeset
18 virtual const DoctreeNode *parent (const DoctreeNode *node) = 0;
424e4f409636 add doctree.hh
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
diff changeset
19 };
424e4f409636 add doctree.hh
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
diff changeset
20
424e4f409636 add doctree.hh
Johannes Hofmann <Johannes.Hofmann@gmx.de>
parents:
diff changeset
21 #endif