Binary file .DS_Store has changed
Binary file scripts/.DS_Store has changed
Binary file scripts/python/.DS_Store has changed
--- a/scripts/python/BeautifulSoup.py Wed Nov 18 12:21:26 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2000 +0,0 @@
-"""Beautiful Soup
-Elixir and Tonic
-"The Screen-Scraper's Friend"
-http://www.crummy.com/software/BeautifulSoup/
-
-Beautiful Soup parses a (possibly invalid) XML or HTML document into a
-tree representation. It provides methods and Pythonic idioms that make
-it easy to navigate, search, and modify the tree.
-
-A well-formed XML/HTML document yields a well-formed data
-structure. An ill-formed XML/HTML document yields a correspondingly
-ill-formed data structure. If your document is only locally
-well-formed, you can use this library to find and process the
-well-formed part of it.
-
-Beautiful Soup works with Python 2.2 and up. It has no external
-dependencies, but you'll have more success at converting data to UTF-8
-if you also install these three packages:
-
-* chardet, for auto-detecting character encodings
- http://chardet.feedparser.org/
-* cjkcodecs and iconv_codec, which add more encodings to the ones supported
- by stock Python.
- http://cjkpython.i18n.org/
-
-Beautiful Soup defines classes for two main parsing strategies:
-
- * BeautifulStoneSoup, for parsing XML, SGML, or your domain-specific
- language that kind of looks like XML.
-
- * BeautifulSoup, for parsing run-of-the-mill HTML code, be it valid
- or invalid. This class has web browser-like heuristics for
- obtaining a sensible parse tree in the face of common HTML errors.
-
-Beautiful Soup also defines a class (UnicodeDammit) for autodetecting
-the encoding of an HTML or XML document, and converting it to
-Unicode. Much of this code is taken from Mark Pilgrim's Universal Feed Parser.
-
-For more than you ever wanted to know about Beautiful Soup, see the
-documentation:
-http://www.crummy.com/software/BeautifulSoup/documentation.html
-
-Here, have some legalese:
-
-Copyright (c) 2004-2009, Leonard Richardson
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
-
- * Neither the name of the the Beautiful Soup Consortium and All
- Night Kosher Bakery nor the names of its contributors may be
- used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE, DAMMIT.
-
-"""
-from __future__ import generators
-
-__author__ = "Leonard Richardson (leonardr@segfault.org)"
-__version__ = "3.1.0.1"
-__copyright__ = "Copyright (c) 2004-2009 Leonard Richardson"
-__license__ = "New-style BSD"
-
-import codecs
-import markupbase
-import types
-import re
-from HTMLParser import HTMLParser, HTMLParseError
-try:
- from htmlentitydefs import name2codepoint
-except ImportError:
- name2codepoint = {}
-try:
- set
-except NameError:
- from sets import Set as set
-
-#These hacks make Beautiful Soup able to parse XML with namespaces
-markupbase._declname_match = re.compile(r'[a-zA-Z][-_.:a-zA-Z0-9]*\s*').match
-
-DEFAULT_OUTPUT_ENCODING = "utf-8"
-
-# First, the classes that represent markup elements.
-
-def sob(unicode, encoding):
- """Returns either the given Unicode string or its encoding."""
- if encoding is None:
- return unicode
- else:
- return unicode.encode(encoding)
-
-class PageElement:
- """Contains the navigational information for some part of the page
- (either a tag or a piece of text)"""
-
- def setup(self, parent=None, previous=None):
- """Sets up the initial relations between this element and
- other elements."""
- self.parent = parent
- self.previous = previous
- self.next = None
- self.previousSibling = None
- self.nextSibling = None
- if self.parent and self.parent.contents:
- self.previousSibling = self.parent.contents[-1]
- self.previousSibling.nextSibling = self
-
- def replaceWith(self, replaceWith):
- oldParent = self.parent
- myIndex = self.parent.contents.index(self)
- if hasattr(replaceWith, 'parent') and replaceWith.parent == self.parent:
- # We're replacing this element with one of its siblings.
- index = self.parent.contents.index(replaceWith)
- if index and index < myIndex:
- # Furthermore, it comes before this element. That
- # means that when we extract it, the index of this
- # element will change.
- myIndex = myIndex - 1
- self.extract()
- oldParent.insert(myIndex, replaceWith)
-
- def extract(self):
- """Destructively rips this element out of the tree."""
- if self.parent:
- try:
- self.parent.contents.remove(self)
- except ValueError:
- pass
-
- #Find the two elements that would be next to each other if
- #this element (and any children) hadn't been parsed. Connect
- #the two.
- lastChild = self._lastRecursiveChild()
- nextElement = lastChild.next
-
- if self.previous:
- self.previous.next = nextElement
- if nextElement:
- nextElement.previous = self.previous
- self.previous = None
- lastChild.next = None
-
- self.parent = None
- if self.previousSibling:
- self.previousSibling.nextSibling = self.nextSibling
- if self.nextSibling:
- self.nextSibling.previousSibling = self.previousSibling
- self.previousSibling = self.nextSibling = None
- return self
-
- def _lastRecursiveChild(self):
- "Finds the last element beneath this object to be parsed."
- lastChild = self
- while hasattr(lastChild, 'contents') and lastChild.contents:
- lastChild = lastChild.contents[-1]
- return lastChild
-
- def insert(self, position, newChild):
- if (isinstance(newChild, basestring)
- or isinstance(newChild, unicode)) \
- and not isinstance(newChild, NavigableString):
- newChild = NavigableString(newChild)
-
- position = min(position, len(self.contents))
- if hasattr(newChild, 'parent') and newChild.parent != None:
- # We're 'inserting' an element that's already one
- # of this object's children.
- if newChild.parent == self:
- index = self.find(newChild)
- if index and index < position:
- # Furthermore we're moving it further down the
- # list of this object's children. That means that
- # when we extract this element, our target index
- # will jump down one.
- position = position - 1
- newChild.extract()
-
- newChild.parent = self
- previousChild = None
- if position == 0:
- newChild.previousSibling = None
- newChild.previous = self
- else:
- previousChild = self.contents[position-1]
- newChild.previousSibling = previousChild
- newChild.previousSibling.nextSibling = newChild
- newChild.previous = previousChild._lastRecursiveChild()
- if newChild.previous:
- newChild.previous.next = newChild
-
- newChildsLastElement = newChild._lastRecursiveChild()
-
- if position >= len(self.contents):
- newChild.nextSibling = None
-
- parent = self
- parentsNextSibling = None
- while not parentsNextSibling:
- parentsNextSibling = parent.nextSibling
- parent = parent.parent
- if not parent: # This is the last element in the document.
- break
- if parentsNextSibling:
- newChildsLastElement.next = parentsNextSibling
- else:
- newChildsLastElement.next = None
- else:
- nextChild = self.contents[position]
- newChild.nextSibling = nextChild
- if newChild.nextSibling:
- newChild.nextSibling.previousSibling = newChild
- newChildsLastElement.next = nextChild
-
- if newChildsLastElement.next:
- newChildsLastElement.next.previous = newChildsLastElement
- self.contents.insert(position, newChild)
-
- def append(self, tag):
- """Appends the given tag to the contents of this tag."""
- self.insert(len(self.contents), tag)
-
- def findNext(self, name=None, attrs={}, text=None, **kwargs):
- """Returns the first item that matches the given criteria and
- appears after this Tag in the document."""
- return self._findOne(self.findAllNext, name, attrs, text, **kwargs)
-
- def findAllNext(self, name=None, attrs={}, text=None, limit=None,
- **kwargs):
- """Returns all items that match the given criteria and appear
- after this Tag in the document."""
- return self._findAll(name, attrs, text, limit, self.nextGenerator,
- **kwargs)
-
- def findNextSibling(self, name=None, attrs={}, text=None, **kwargs):
- """Returns the closest sibling to this Tag that matches the
- given criteria and appears after this Tag in the document."""
- return self._findOne(self.findNextSiblings, name, attrs, text,
- **kwargs)
-
- def findNextSiblings(self, name=None, attrs={}, text=None, limit=None,
- **kwargs):
- """Returns the siblings of this Tag that match the given
- criteria and appear after this Tag in the document."""
- return self._findAll(name, attrs, text, limit,
- self.nextSiblingGenerator, **kwargs)
- fetchNextSiblings = findNextSiblings # Compatibility with pre-3.x
-
- def findPrevious(self, name=None, attrs={}, text=None, **kwargs):
- """Returns the first item that matches the given criteria and
- appears before this Tag in the document."""
- return self._findOne(self.findAllPrevious, name, attrs, text, **kwargs)
-
- def findAllPrevious(self, name=None, attrs={}, text=None, limit=None,
- **kwargs):
- """Returns all items that match the given criteria and appear
- before this Tag in the document."""
- return self._findAll(name, attrs, text, limit, self.previousGenerator,
- **kwargs)
- fetchPrevious = findAllPrevious # Compatibility with pre-3.x
-
- def findPreviousSibling(self, name=None, attrs={}, text=None, **kwargs):
- """Returns the closest sibling to this Tag that matches the
- given criteria and appears before this Tag in the document."""
- return self._findOne(self.findPreviousSiblings, name, attrs, text,
- **kwargs)
-
- def findPreviousSiblings(self, name=None, attrs={}, text=None,
- limit=None, **kwargs):
- """Returns the siblings of this Tag that match the given
- criteria and appear before this Tag in the document."""
- return self._findAll(name, attrs, text, limit,
- self.previousSiblingGenerator, **kwargs)
- fetchPreviousSiblings = findPreviousSiblings # Compatibility with pre-3.x
-
- def findParent(self, name=None, attrs={}, **kwargs):
- """Returns the closest parent of this Tag that matches the given
- criteria."""
- # NOTE: We can't use _findOne because findParents takes a different
- # set of arguments.
- r = None
- l = self.findParents(name, attrs, 1)
- if l:
- r = l[0]
- return r
-
- def findParents(self, name=None, attrs={}, limit=None, **kwargs):
- """Returns the parents of this Tag that match the given
- criteria."""
-
- return self._findAll(name, attrs, None, limit, self.parentGenerator,
- **kwargs)
- fetchParents = findParents # Compatibility with pre-3.x
-
- #These methods do the real heavy lifting.
-
- def _findOne(self, method, name, attrs, text, **kwargs):
- r = None
- l = method(name, attrs, text, 1, **kwargs)
- if l:
- r = l[0]
- return r
-
- def _findAll(self, name, attrs, text, limit, generator, **kwargs):
- "Iterates over a generator looking for things that match."
-
- if isinstance(name, SoupStrainer):
- strainer = name
- else:
- # Build a SoupStrainer
- strainer = SoupStrainer(name, attrs, text, **kwargs)
- results = ResultSet(strainer)
- g = generator()
- while True:
- try:
- i = g.next()
- except StopIteration:
- break
- if i:
- found = strainer.search(i)
- if found:
- results.append(found)
- if limit and len(results) >= limit:
- break
- return results
-
- #These Generators can be used to navigate starting from both
- #NavigableStrings and Tags.
- def nextGenerator(self):
- i = self
- while i:
- i = i.next
- yield i
-
- def nextSiblingGenerator(self):
- i = self
- while i:
- i = i.nextSibling
- yield i
-
- def previousGenerator(self):
- i = self
- while i:
- i = i.previous
- yield i
-
- def previousSiblingGenerator(self):
- i = self
- while i:
- i = i.previousSibling
- yield i
-
- def parentGenerator(self):
- i = self
- while i:
- i = i.parent
- yield i
-
- # Utility methods
- def substituteEncoding(self, str, encoding=None):
- encoding = encoding or "utf-8"
- return str.replace("%SOUP-ENCODING%", encoding)
-
- def toEncoding(self, s, encoding=None):
- """Encodes an object to a string in some encoding, or to Unicode.
- ."""
- if isinstance(s, unicode):
- if encoding:
- s = s.encode(encoding)
- elif isinstance(s, str):
- if encoding:
- s = s.encode(encoding)
- else:
- s = unicode(s)
- else:
- if encoding:
- s = self.toEncoding(str(s), encoding)
- else:
- s = unicode(s)
- return s
-
-class NavigableString(unicode, PageElement):
-
- def __new__(cls, value):
- """Create a new NavigableString.
-
- When unpickling a NavigableString, this method is called with
- the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
- passed in to the superclass's __new__ or the superclass won't know
- how to handle non-ASCII characters.
- """
- if isinstance(value, unicode):
- return unicode.__new__(cls, value)
- return unicode.__new__(cls, value, DEFAULT_OUTPUT_ENCODING)
-
- def __getnewargs__(self):
- return (unicode(self),)
-
- def __getattr__(self, attr):
- """text.string gives you text. This is for backwards
- compatibility for Navigable*String, but for CData* it lets you
- get the string without the CData wrapper."""
- if attr == 'string':
- return self
- else:
- raise AttributeError, "'%s' object has no attribute '%s'" % (self.__class__.__name__, attr)
-
- def encode(self, encoding=DEFAULT_OUTPUT_ENCODING):
- return self.decode().encode(encoding)
-
- def decodeGivenEventualEncoding(self, eventualEncoding):
- return self
-
-class CData(NavigableString):
-
- def decodeGivenEventualEncoding(self, eventualEncoding):
- return u'<![CDATA[' + self + u']]>'
-
-class ProcessingInstruction(NavigableString):
-
- def decodeGivenEventualEncoding(self, eventualEncoding):
- output = self
- if u'%SOUP-ENCODING%' in output:
- output = self.substituteEncoding(output, eventualEncoding)
- return u'<?' + output + u'?>'
-
-class Comment(NavigableString):
- def decodeGivenEventualEncoding(self, eventualEncoding):
- return u'<!--' + self + u'-->'
-
-class Declaration(NavigableString):
- def decodeGivenEventualEncoding(self, eventualEncoding):
- return u'<!' + self + u'>'
-
-class Tag(PageElement):
-
- """Represents a found HTML tag with its attributes and contents."""
-
- def _invert(h):
- "Cheap function to invert a hash."
- i = {}
- for k,v in h.items():
- i[v] = k
- return i
-
- XML_ENTITIES_TO_SPECIAL_CHARS = { "apos" : "'",
- "quot" : '"',
- "amp" : "&",
- "lt" : "<",
- "gt" : ">" }
-
- XML_SPECIAL_CHARS_TO_ENTITIES = _invert(XML_ENTITIES_TO_SPECIAL_CHARS)
-
- def _convertEntities(self, match):
- """Used in a call to re.sub to replace HTML, XML, and numeric
- entities with the appropriate Unicode characters. If HTML
- entities are being converted, any unrecognized entities are
- escaped."""
- x = match.group(1)
- if self.convertHTMLEntities and x in name2codepoint:
- return unichr(name2codepoint[x])
- elif x in self.XML_ENTITIES_TO_SPECIAL_CHARS:
- if self.convertXMLEntities:
- return self.XML_ENTITIES_TO_SPECIAL_CHARS[x]
- else:
- return u'&%s;' % x
- elif len(x) > 0 and x[0] == '#':
- # Handle numeric entities
- if len(x) > 1 and x[1] == 'x':
- return unichr(int(x[2:], 16))
- else:
- return unichr(int(x[1:]))
-
- elif self.escapeUnrecognizedEntities:
- return u'&%s;' % x
- else:
- return u'&%s;' % x
-
- def __init__(self, parser, name, attrs=None, parent=None,
- previous=None):
- "Basic constructor."
-
- # We don't actually store the parser object: that lets extracted
- # chunks be garbage-collected
- self.parserClass = parser.__class__
- self.isSelfClosing = parser.isSelfClosingTag(name)
- self.name = name
- if attrs == None:
- attrs = []
- self.attrs = attrs
- self.contents = []
- self.setup(parent, previous)
- self.hidden = False
- self.containsSubstitutions = False
- self.convertHTMLEntities = parser.convertHTMLEntities
- self.convertXMLEntities = parser.convertXMLEntities
- self.escapeUnrecognizedEntities = parser.escapeUnrecognizedEntities
-
- def convert(kval):
- "Converts HTML, XML and numeric entities in the attribute value."
- k, val = kval
- if val is None:
- return kval
- return (k, re.sub("&(#\d+|#x[0-9a-fA-F]+|\w+);",
- self._convertEntities, val))
- self.attrs = map(convert, self.attrs)
-
- def get(self, key, default=None):
- """Returns the value of the 'key' attribute for the tag, or
- the value given for 'default' if it doesn't have that
- attribute."""
- return self._getAttrMap().get(key, default)
-
- def has_key(self, key):
- return self._getAttrMap().has_key(key)
-
- def __getitem__(self, key):
- """tag[key] returns the value of the 'key' attribute for the tag,
- and throws an exception if it's not there."""
- return self._getAttrMap()[key]
-
- def __iter__(self):
- "Iterating over a tag iterates over its contents."
- return iter(self.contents)
-
- def __len__(self):
- "The length of a tag is the length of its list of contents."
- return len(self.contents)
-
- def __contains__(self, x):
- return x in self.contents
-
- def __nonzero__(self):
- "A tag is non-None even if it has no contents."
- return True
-
- def __setitem__(self, key, value):
- """Setting tag[key] sets the value of the 'key' attribute for the
- tag."""
- self._getAttrMap()
- self.attrMap[key] = value
- found = False
- for i in range(0, len(self.attrs)):
- if self.attrs[i][0] == key:
- self.attrs[i] = (key, value)
- found = True
- if not found:
- self.attrs.append((key, value))
- self._getAttrMap()[key] = value
-
- def __delitem__(self, key):
- "Deleting tag[key] deletes all 'key' attributes for the tag."
- for item in self.attrs:
- if item[0] == key:
- self.attrs.remove(item)
- #We don't break because bad HTML can define the same
- #attribute multiple times.
- self._getAttrMap()
- if self.attrMap.has_key(key):
- del self.attrMap[key]
-
- def __call__(self, *args, **kwargs):
- """Calling a tag like a function is the same as calling its
- findAll() method. Eg. tag('a') returns a list of all the A tags
- found within this tag."""
- return apply(self.findAll, args, kwargs)
-
- def __getattr__(self, tag):
- #print "Getattr %s.%s" % (self.__class__, tag)
- if len(tag) > 3 and tag.rfind('Tag') == len(tag)-3:
- return self.find(tag[:-3])
- elif tag.find('__') != 0:
- return self.find(tag)
- raise AttributeError, "'%s' object has no attribute '%s'" % (self.__class__, tag)
-
- def __eq__(self, other):
- """Returns true iff this tag has the same name, the same attributes,
- and the same contents (recursively) as the given tag.
-
- NOTE: right now this will return false if two tags have the
- same attributes in a different order. Should this be fixed?"""
- if not hasattr(other, 'name') or not hasattr(other, 'attrs') or not hasattr(other, 'contents') or self.name != other.name or self.attrs != other.attrs or len(self) != len(other):
- return False
- for i in range(0, len(self.contents)):
- if self.contents[i] != other.contents[i]:
- return False
- return True
-
- def __ne__(self, other):
- """Returns true iff this tag is not identical to the other tag,
- as defined in __eq__."""
- return not self == other
-
- def __repr__(self, encoding=DEFAULT_OUTPUT_ENCODING):
- """Renders this tag as a string."""
- return self.decode(eventualEncoding=encoding)
-
- BARE_AMPERSAND_OR_BRACKET = re.compile("([<>]|"
- + "&(?!#\d+;|#x[0-9a-fA-F]+;|\w+;)"
- + ")")
-
- def _sub_entity(self, x):
- """Used with a regular expression to substitute the
- appropriate XML entity for an XML special character."""
- return "&" + self.XML_SPECIAL_CHARS_TO_ENTITIES[x.group(0)[0]] + ";"
-
- def __unicode__(self):
- return self.decode()
-
- def __str__(self):
- return self.encode()
-
- def encode(self, encoding=DEFAULT_OUTPUT_ENCODING,
- prettyPrint=False, indentLevel=0):
- return self.decode(prettyPrint, indentLevel, encoding).encode(encoding)
-
- def decode(self, prettyPrint=False, indentLevel=0,
- eventualEncoding=DEFAULT_OUTPUT_ENCODING):
- """Returns a string or Unicode representation of this tag and
- its contents. To get Unicode, pass None for encoding."""
-
- attrs = []
- if self.attrs:
- for key, val in self.attrs:
- fmt = '%s="%s"'
- if isString(val):
- if (self.containsSubstitutions
- and eventualEncoding is not None
- and '%SOUP-ENCODING%' in val):
- val = self.substituteEncoding(val, eventualEncoding)
-
- # The attribute value either:
- #
- # * Contains no embedded double quotes or single quotes.
- # No problem: we enclose it in double quotes.
- # * Contains embedded single quotes. No problem:
- # double quotes work here too.
- # * Contains embedded double quotes. No problem:
- # we enclose it in single quotes.
- # * Embeds both single _and_ double quotes. This
- # can't happen naturally, but it can happen if
- # you modify an attribute value after parsing
- # the document. Now we have a bit of a
- # problem. We solve it by enclosing the
- # attribute in single quotes, and escaping any
- # embedded single quotes to XML entities.
- if '"' in val:
- fmt = "%s='%s'"
- if "'" in val:
- # TODO: replace with apos when
- # appropriate.
- val = val.replace("'", "&squot;")
-
- # Now we're okay w/r/t quotes. But the attribute
- # value might also contain angle brackets, or
- # ampersands that aren't part of entities. We need
- # to escape those to XML entities too.
- val = self.BARE_AMPERSAND_OR_BRACKET.sub(self._sub_entity, val)
- if val is None:
- # Handle boolean attributes.
- decoded = key
- else:
- decoded = fmt % (key, val)
- attrs.append(decoded)
- close = ''
- closeTag = ''
- if self.isSelfClosing:
- close = ' /'
- else:
- closeTag = '</%s>' % self.name
-
- indentTag, indentContents = 0, 0
- if prettyPrint:
- indentTag = indentLevel
- space = (' ' * (indentTag-1))
- indentContents = indentTag + 1
- contents = self.decodeContents(prettyPrint, indentContents,
- eventualEncoding)
- if self.hidden:
- s = contents
- else:
- s = []
- attributeString = ''
- if attrs:
- attributeString = ' ' + ' '.join(attrs)
- if prettyPrint:
- s.append(space)
- s.append('<%s%s%s>' % (self.name, attributeString, close))
- if prettyPrint:
- s.append("\n")
- s.append(contents)
- if prettyPrint and contents and contents[-1] != "\n":
- s.append("\n")
- if prettyPrint and closeTag:
- s.append(space)
- s.append(closeTag)
- if prettyPrint and closeTag and self.nextSibling:
- s.append("\n")
- s = ''.join(s)
- return s
-
- def decompose(self):
- """Recursively destroys the contents of this tree."""
- contents = [i for i in self.contents]
- for i in contents:
- if isinstance(i, Tag):
- i.decompose()
- else:
- i.extract()
- self.extract()
-
- def prettify(self, encoding=DEFAULT_OUTPUT_ENCODING):
- return self.encode(encoding, True)
-
- def encodeContents(self, encoding=DEFAULT_OUTPUT_ENCODING,
- prettyPrint=False, indentLevel=0):
- return self.decodeContents(prettyPrint, indentLevel).encode(encoding)
-
- def decodeContents(self, prettyPrint=False, indentLevel=0,
- eventualEncoding=DEFAULT_OUTPUT_ENCODING):
- """Renders the contents of this tag as a string in the given
- encoding. If encoding is None, returns a Unicode string.."""
- s=[]
- for c in self:
- text = None
- if isinstance(c, NavigableString):
- text = c.decodeGivenEventualEncoding(eventualEncoding)
- elif isinstance(c, Tag):
- s.append(c.decode(prettyPrint, indentLevel, eventualEncoding))
- if text and prettyPrint:
- text = text.strip()
- if text:
- if prettyPrint:
- s.append(" " * (indentLevel-1))
- s.append(text)
- if prettyPrint:
- s.append("\n")
- return ''.join(s)
-
- #Soup methods
-
- def find(self, name=None, attrs={}, recursive=True, text=None,
- **kwargs):
- """Return only the first child of this Tag matching the given
- criteria."""
- r = None
- l = self.findAll(name, attrs, recursive, text, 1, **kwargs)
- if l:
- r = l[0]
- return r
- findChild = find
-
- def findAll(self, name=None, attrs={}, recursive=True, text=None,
- limit=None, **kwargs):
- """Extracts a list of Tag objects that match the given
- criteria. You can specify the name of the Tag and any
- attributes you want the Tag to have.
-
- The value of a key-value pair in the 'attrs' map can be a
- string, a list of strings, a regular expression object, or a
- callable that takes a string and returns whether or not the
- string matches for some custom definition of 'matches'. The
- same is true of the tag name."""
- generator = self.recursiveChildGenerator
- if not recursive:
- generator = self.childGenerator
- return self._findAll(name, attrs, text, limit, generator, **kwargs)
- findChildren = findAll
-
- # Pre-3.x compatibility methods. Will go away in 4.0.
- first = find
- fetch = findAll
-
- def fetchText(self, text=None, recursive=True, limit=None):
- return self.findAll(text=text, recursive=recursive, limit=limit)
-
- def firstText(self, text=None, recursive=True):
- return self.find(text=text, recursive=recursive)
-
- # 3.x compatibility methods. Will go away in 4.0.
- def renderContents(self, encoding=DEFAULT_OUTPUT_ENCODING,
- prettyPrint=False, indentLevel=0):
- if encoding is None:
- return self.decodeContents(prettyPrint, indentLevel, encoding)
- else:
- return self.encodeContents(encoding, prettyPrint, indentLevel)
-
-
- #Private methods
-
- def _getAttrMap(self):
- """Initializes a map representation of this tag's attributes,
- if not already initialized."""
- if not getattr(self, 'attrMap'):
- self.attrMap = {}
- for (key, value) in self.attrs:
- self.attrMap[key] = value
- return self.attrMap
-
- #Generator methods
- def recursiveChildGenerator(self):
- if not len(self.contents):
- raise StopIteration
- stopNode = self._lastRecursiveChild().next
- current = self.contents[0]
- while current is not stopNode:
- yield current
- current = current.next
-
- def childGenerator(self):
- if not len(self.contents):
- raise StopIteration
- current = self.contents[0]
- while current:
- yield current
- current = current.nextSibling
- raise StopIteration
-
-# Next, a couple classes to represent queries and their results.
-class SoupStrainer:
- """Encapsulates a number of ways of matching a markup element (tag or
- text)."""
-
- def __init__(self, name=None, attrs={}, text=None, **kwargs):
- self.name = name
- if isString(attrs):
- kwargs['class'] = attrs
- attrs = None
- if kwargs:
- if attrs:
- attrs = attrs.copy()
- attrs.update(kwargs)
- else:
- attrs = kwargs
- self.attrs = attrs
- self.text = text
-
- def __str__(self):
- if self.text:
- return self.text
- else:
- return "%s|%s" % (self.name, self.attrs)
-
- def searchTag(self, markupName=None, markupAttrs={}):
- found = None
- markup = None
- if isinstance(markupName, Tag):
- markup = markupName
- markupAttrs = markup
- callFunctionWithTagData = callable(self.name) \
- and not isinstance(markupName, Tag)
-
- if (not self.name) \
- or callFunctionWithTagData \
- or (markup and self._matches(markup, self.name)) \
- or (not markup and self._matches(markupName, self.name)):
- if callFunctionWithTagData:
- match = self.name(markupName, markupAttrs)
- else:
- match = True
- markupAttrMap = None
- for attr, matchAgainst in self.attrs.items():
- if not markupAttrMap:
- if hasattr(markupAttrs, 'get'):
- markupAttrMap = markupAttrs
- else:
- markupAttrMap = {}
- for k,v in markupAttrs:
- markupAttrMap[k] = v
- attrValue = markupAttrMap.get(attr)
- if not self._matches(attrValue, matchAgainst):
- match = False
- break
- if match:
- if markup:
- found = markup
- else:
- found = markupName
- return found
-
- def search(self, markup):
- #print 'looking for %s in %s' % (self, markup)
- found = None
- # If given a list of items, scan it for a text element that
- # matches.
- if isList(markup) and not isinstance(markup, Tag):
- for element in markup:
- if isinstance(element, NavigableString) \
- and self.search(element):
- found = element
- break
- # If it's a Tag, make sure its name or attributes match.
- # Don't bother with Tags if we're searching for text.
- elif isinstance(markup, Tag):
- if not self.text:
- found = self.searchTag(markup)
- # If it's text, make sure the text matches.
- elif isinstance(markup, NavigableString) or \
- isString(markup):
- if self._matches(markup, self.text):
- found = markup
- else:
- raise Exception, "I don't know how to match against a %s" \
- % markup.__class__
- return found
-
- def _matches(self, markup, matchAgainst):
- #print "Matching %s against %s" % (markup, matchAgainst)
- result = False
- if matchAgainst == True and type(matchAgainst) == types.BooleanType:
- result = markup != None
- elif callable(matchAgainst):
- result = matchAgainst(markup)
- else:
- #Custom match methods take the tag as an argument, but all
- #other ways of matching match the tag name as a string.
- if isinstance(markup, Tag):
- markup = markup.name
- if markup is not None and not isString(markup):
- markup = unicode(markup)
- #Now we know that chunk is either a string, or None.
- if hasattr(matchAgainst, 'match'):
- # It's a regexp object.
- result = markup and matchAgainst.search(markup)
- elif (isList(matchAgainst)
- and (markup is not None or not isString(matchAgainst))):
- result = markup in matchAgainst
- elif hasattr(matchAgainst, 'items'):
- result = markup.has_key(matchAgainst)
- elif matchAgainst and isString(markup):
- if isinstance(markup, unicode):
- matchAgainst = unicode(matchAgainst)
- else:
- matchAgainst = str(matchAgainst)
-
- if not result:
- result = matchAgainst == markup
- return result
-
-class ResultSet(list):
- """A ResultSet is just a list that keeps track of the SoupStrainer
- that created it."""
- def __init__(self, source):
- list.__init__([])
- self.source = source
-
-# Now, some helper functions.
-
-def isList(l):
- """Convenience method that works with all 2.x versions of Python
- to determine whether or not something is listlike."""
- return ((hasattr(l, '__iter__') and not isString(l))
- or (type(l) in (types.ListType, types.TupleType)))
-
-def isString(s):
- """Convenience method that works with all 2.x versions of Python
- to determine whether or not something is stringlike."""
- try:
- return isinstance(s, unicode) or isinstance(s, basestring)
- except NameError:
- return isinstance(s, str)
-
-def buildTagMap(default, *args):
- """Turns a list of maps, lists, or scalars into a single map.
- Used to build the SELF_CLOSING_TAGS, NESTABLE_TAGS, and
- NESTING_RESET_TAGS maps out of lists and partial maps."""
- built = {}
- for portion in args:
- if hasattr(portion, 'items'):
- #It's a map. Merge it.
- for k,v in portion.items():
- built[k] = v
- elif isList(portion) and not isString(portion):
- #It's a list. Map each item to the default.
- for k in portion:
- built[k] = default
- else:
- #It's a scalar. Map it to the default.
- built[portion] = default
- return built
-
-# Now, the parser classes.
-
-class HTMLParserBuilder(HTMLParser):
-
- def __init__(self, soup):
- HTMLParser.__init__(self)
- self.soup = soup
-
- # We inherit feed() and reset().
-
- def handle_starttag(self, name, attrs):
- if name == 'meta':
- self.soup.extractCharsetFromMeta(attrs)
- else:
- self.soup.unknown_starttag(name, attrs)
-
- def handle_endtag(self, name):
- self.soup.unknown_endtag(name)
-
- def handle_data(self, content):
- self.soup.handle_data(content)
-
- def _toStringSubclass(self, text, subclass):
- """Adds a certain piece of text to the tree as a NavigableString
- subclass."""
- self.soup.endData()
- self.handle_data(text)
- self.soup.endData(subclass)
-
- def handle_pi(self, text):
- """Handle a processing instruction as a ProcessingInstruction
- object, possibly one with a %SOUP-ENCODING% slot into which an
- encoding will be plugged later."""
- if text[:3] == "xml":
- text = u"xml version='1.0' encoding='%SOUP-ENCODING%'"
- self._toStringSubclass(text, ProcessingInstruction)
-
- def handle_comment(self, text):
- "Handle comments as Comment objects."
- self._toStringSubclass(text, Comment)
-
- def handle_charref(self, ref):
- "Handle character references as data."
- if self.soup.convertEntities:
- data = unichr(int(ref))
- else:
- data = '&#%s;' % ref
- self.handle_data(data)
-
- def handle_entityref(self, ref):
- """Handle entity references as data, possibly converting known
- HTML and/or XML entity references to the corresponding Unicode
- characters."""
- data = None
- if self.soup.convertHTMLEntities:
- try:
- data = unichr(name2codepoint[ref])
- except KeyError:
- pass
-
- if not data and self.soup.convertXMLEntities:
- data = self.soup.XML_ENTITIES_TO_SPECIAL_CHARS.get(ref)
-
- if not data and self.soup.convertHTMLEntities and \
- not self.soup.XML_ENTITIES_TO_SPECIAL_CHARS.get(ref):
- # TODO: We've got a problem here. We're told this is
- # an entity reference, but it's not an XML entity
- # reference or an HTML entity reference. Nonetheless,
- # the logical thing to do is to pass it through as an
- # unrecognized entity reference.
- #
- # Except: when the input is "&carol;" this function
- # will be called with input "carol". When the input is
- # "AT&T", this function will be called with input
- # "T". We have no way of knowing whether a semicolon
- # was present originally, so we don't know whether
- # this is an unknown entity or just a misplaced
- # ampersand.
- #
- # The more common case is a misplaced ampersand, so I
- # escape the ampersand and omit the trailing semicolon.
- data = "&%s" % ref
- if not data:
- # This case is different from the one above, because we
- # haven't already gone through a supposedly comprehensive
- # mapping of entities to Unicode characters. We might not
- # have gone through any mapping at all. So the chances are
- # very high that this is a real entity, and not a
- # misplaced ampersand.
- data = "&%s;" % ref
- self.handle_data(data)
-
- def handle_decl(self, data):
- "Handle DOCTYPEs and the like as Declaration objects."
- self._toStringSubclass(data, Declaration)
-
- def parse_declaration(self, i):
- """Treat a bogus SGML declaration as raw data. Treat a CDATA
- declaration as a CData object."""
- j = None
- if self.rawdata[i:i+9] == '<![CDATA[':
- k = self.rawdata.find(']]>', i)
- if k == -1:
- k = len(self.rawdata)
- data = self.rawdata[i+9:k]
- j = k+3
- self._toStringSubclass(data, CData)
- else:
- try:
- j = HTMLParser.parse_declaration(self, i)
- except HTMLParseError:
- toHandle = self.rawdata[i:]
- self.handle_data(toHandle)
- j = i + len(toHandle)
- return j
-
-
-class BeautifulStoneSoup(Tag):
-
- """This class contains the basic parser and search code. It defines
- a parser that knows nothing about tag behavior except for the
- following:
-
- You can't close a tag without closing all the tags it encloses.
- That is, "<foo><bar></foo>" actually means
- "<foo><bar></bar></foo>".
-
- [Another possible explanation is "<foo><bar /></foo>", but since
- this class defines no SELF_CLOSING_TAGS, it will never use that
- explanation.]
-
- This class is useful for parsing XML or made-up markup languages,
- or when BeautifulSoup makes an assumption counter to what you were
- expecting."""
-
- SELF_CLOSING_TAGS = {}
- NESTABLE_TAGS = {}
- RESET_NESTING_TAGS = {}
- QUOTE_TAGS = {}
- PRESERVE_WHITESPACE_TAGS = []
-
- MARKUP_MASSAGE = [(re.compile('(<[^<>]*)/>'),
- lambda x: x.group(1) + ' />'),
- (re.compile('<!\s+([^<>]*)>'),
- lambda x: '<!' + x.group(1) + '>')
- ]
-
- ROOT_TAG_NAME = u'[document]'
-
- HTML_ENTITIES = "html"
- XML_ENTITIES = "xml"
- XHTML_ENTITIES = "xhtml"
- # TODO: This only exists for backwards-compatibility
- ALL_ENTITIES = XHTML_ENTITIES
-
- # Used when determining whether a text node is all whitespace and
- # can be replaced with a single space. A text node that contains
- # fancy Unicode spaces (usually non-breaking) should be left
- # alone.
- STRIP_ASCII_SPACES = { 9: None, 10: None, 12: None, 13: None, 32: None, }
-
- def __init__(self, markup="", parseOnlyThese=None, fromEncoding=None,
- markupMassage=True, smartQuotesTo=XML_ENTITIES,
- convertEntities=None, selfClosingTags=None, isHTML=False,
- builder=HTMLParserBuilder):
- """The Soup object is initialized as the 'root tag', and the
- provided markup (which can be a string or a file-like object)
- is fed into the underlying parser.
-
- HTMLParser will process most bad HTML, and the BeautifulSoup
- class has some tricks for dealing with some HTML that kills
- HTMLParser, but Beautiful Soup can nonetheless choke or lose data
- if your data uses self-closing tags or declarations
- incorrectly.
-
- By default, Beautiful Soup uses regexes to sanitize input,
- avoiding the vast majority of these problems. If the problems
- don't apply to you, pass in False for markupMassage, and
- you'll get better performance.
-
- The default parser massage techniques fix the two most common
- instances of invalid HTML that choke HTMLParser:
-
- <br/> (No space between name of closing tag and tag close)
- <! --Comment--> (Extraneous whitespace in declaration)
-
- You can pass in a custom list of (RE object, replace method)
- tuples to get Beautiful Soup to scrub your input the way you
- want."""
-
- self.parseOnlyThese = parseOnlyThese
- self.fromEncoding = fromEncoding
- self.smartQuotesTo = smartQuotesTo
- self.convertEntities = convertEntities
- # Set the rules for how we'll deal with the entities we
- # encounter
- if self.convertEntities:
- # It doesn't make sense to convert encoded characters to
- # entities even while you're converting entities to Unicode.
- # Just convert it all to Unicode.
- self.smartQuotesTo = None
- if convertEntities == self.HTML_ENTITIES:
- self.convertXMLEntities = False
- self.convertHTMLEntities = True
- self.escapeUnrecognizedEntities = True
- elif convertEntities == self.XHTML_ENTITIES:
- self.convertXMLEntities = True
- self.convertHTMLEntities = True
- self.escapeUnrecognizedEntities = False
- elif convertEntities == self.XML_ENTITIES:
- self.convertXMLEntities = True
- self.convertHTMLEntities = False
- self.escapeUnrecognizedEntities = False
- else:
- self.convertXMLEntities = False
- self.convertHTMLEntities = False
- self.escapeUnrecognizedEntities = False
-
- self.instanceSelfClosingTags = buildTagMap(None, selfClosingTags)
- self.builder = builder(self)
- self.reset()
-
- if hasattr(markup, 'read'): # It's a file-type object.
- markup = markup.read()
- self.markup = markup
- self.markupMassage = markupMassage
- try:
- self._feed(isHTML=isHTML)
- except StopParsing:
- pass
- self.markup = None # The markup can now be GCed.
- self.builder = None # So can the builder.
-
- def _feed(self, inDocumentEncoding=None, isHTML=False):
- # Convert the document to Unicode.
- markup = self.markup
- if isinstance(markup, unicode):
- if not hasattr(self, 'originalEncoding'):
- self.originalEncoding = None
- else:
- dammit = UnicodeDammit\
- (markup, [self.fromEncoding, inDocumentEncoding],
- smartQuotesTo=self.smartQuotesTo, isHTML=isHTML)
- markup = dammit.unicode
- self.originalEncoding = dammit.originalEncoding
- self.declaredHTMLEncoding = dammit.declaredHTMLEncoding
- if markup:
- if self.markupMassage:
- if not isList(self.markupMassage):
- self.markupMassage = self.MARKUP_MASSAGE
- for fix, m in self.markupMassage:
- markup = fix.sub(m, markup)
- # TODO: We get rid of markupMassage so that the
- # soup object can be deepcopied later on. Some
- # Python installations can't copy regexes. If anyone
- # was relying on the existence of markupMassage, this
- # might cause problems.
- del(self.markupMassage)
- self.builder.reset()
-
- self.builder.feed(markup)
- # Close out any unfinished strings and close all the open tags.
- self.endData()
- while self.currentTag.name != self.ROOT_TAG_NAME:
- self.popTag()
-
- def isSelfClosingTag(self, name):
- """Returns true iff the given string is the name of a
- self-closing tag according to this parser."""
- return self.SELF_CLOSING_TAGS.has_key(name) \
- or self.instanceSelfClosingTags.has_key(name)
-
- def reset(self):
- Tag.__init__(self, self, self.ROOT_TAG_NAME)
- self.hidden = 1
- self.builder.reset()
- self.currentData = []
- self.currentTag = None
- self.tagStack = []
- self.quoteStack = []
- self.pushTag(self)
-
- def popTag(self):
- tag = self.tagStack.pop()
- # Tags with just one string-owning child get the child as a
- # 'string' property, so that soup.tag.string is shorthand for
- # soup.tag.contents[0]
- if len(self.currentTag.contents) == 1 and \
- isinstance(self.currentTag.contents[0], NavigableString):
- self.currentTag.string = self.currentTag.contents[0]
-
- #print "Pop", tag.name
- if self.tagStack:
- self.currentTag = self.tagStack[-1]
- return self.currentTag
-
- def pushTag(self, tag):
- #print "Push", tag.name
- if self.currentTag:
- self.currentTag.contents.append(tag)
- self.tagStack.append(tag)
- self.currentTag = self.tagStack[-1]
-
- def endData(self, containerClass=NavigableString):
- if self.currentData:
- currentData = u''.join(self.currentData)
- if (currentData.translate(self.STRIP_ASCII_SPACES) == '' and
- not set([tag.name for tag in self.tagStack]).intersection(
- self.PRESERVE_WHITESPACE_TAGS)):
- if '\n' in currentData:
- currentData = '\n'
- else:
- currentData = ' '
- self.currentData = []
- if self.parseOnlyThese and len(self.tagStack) <= 1 and \
- (not self.parseOnlyThese.text or \
- not self.parseOnlyThese.search(currentData)):
- return
- o = containerClass(currentData)
- o.setup(self.currentTag, self.previous)
- if self.previous:
- self.previous.next = o
- self.previous = o
- self.currentTag.contents.append(o)
-
-
- def _popToTag(self, name, inclusivePop=True):
- """Pops the tag stack up to and including the most recent
- instance of the given tag. If inclusivePop is false, pops the tag
- stack up to but *not* including the most recent instqance of
- the given tag."""
- #print "Popping to %s" % name
- if name == self.ROOT_TAG_NAME:
- return
-
- numPops = 0
- mostRecentTag = None
- for i in range(len(self.tagStack)-1, 0, -1):
- if name == self.tagStack[i].name:
- numPops = len(self.tagStack)-i
- break
- if not inclusivePop:
- numPops = numPops - 1
-
- for i in range(0, numPops):
- mostRecentTag = self.popTag()
- return mostRecentTag
-
- def _smartPop(self, name):
-
- """We need to pop up to the previous tag of this type, unless
- one of this tag's nesting reset triggers comes between this
- tag and the previous tag of this type, OR unless this tag is a
- generic nesting trigger and another generic nesting trigger
- comes between this tag and the previous tag of this type.
-
- Examples:
- <p>Foo<b>Bar *<p>* should pop to 'p', not 'b'.
- <p>Foo<table>Bar *<p>* should pop to 'table', not 'p'.
- <p>Foo<table><tr>Bar *<p>* should pop to 'tr', not 'p'.
-
- <li><ul><li> *<li>* should pop to 'ul', not the first 'li'.
- <tr><table><tr> *<tr>* should pop to 'table', not the first 'tr'
- <td><tr><td> *<td>* should pop to 'tr', not the first 'td'
- """
-
- nestingResetTriggers = self.NESTABLE_TAGS.get(name)
- isNestable = nestingResetTriggers != None
- isResetNesting = self.RESET_NESTING_TAGS.has_key(name)
- popTo = None
- inclusive = True
- for i in range(len(self.tagStack)-1, 0, -1):
- p = self.tagStack[i]
- if (not p or p.name == name) and not isNestable:
- #Non-nestable tags get popped to the top or to their
- #last occurance.
- popTo = name
- break
- if (nestingResetTriggers != None
- and p.name in nestingResetTriggers) \
- or (nestingResetTriggers == None and isResetNesting
- and self.RESET_NESTING_TAGS.has_key(p.name)):
-
- #If we encounter one of the nesting reset triggers
- #peculiar to this tag, or we encounter another tag
- #that causes nesting to reset, pop up to but not
- #including that tag.
- popTo = p.name
- inclusive = False
- break
- p = p.parent
- if popTo:
- self._popToTag(popTo, inclusive)
-
- def unknown_starttag(self, name, attrs, selfClosing=0):
- #print "Start tag %s: %s" % (name, attrs)
- if self.quoteStack:
- #This is not a real tag.
- #print "<%s> is not real!" % name
- attrs = ''.join(map(lambda(x, y): ' %s="%s"' % (x, y), attrs))
- self.handle_data('<%s%s>' % (name, attrs))
- return
- self.endData()
-
- if not self.isSelfClosingTag(name) and not selfClosing:
- self._smartPop(name)
-
- if self.parseOnlyThese and len(self.tagStack) <= 1 \
- and (self.parseOnlyThese.text or not self.parseOnlyThese.searchTag(name, attrs)):
- return
-
- tag = Tag(self, name, attrs, self.currentTag, self.previous)
- if self.previous:
- self.previous.next = tag
- self.previous = tag
- self.pushTag(tag)
- if selfClosing or self.isSelfClosingTag(name):
- self.popTag()
- if name in self.QUOTE_TAGS:
- #print "Beginning quote (%s)" % name
- self.quoteStack.append(name)
- self.literal = 1
- return tag
-
- def unknown_endtag(self, name):
- #print "End tag %s" % name
- if self.quoteStack and self.quoteStack[-1] != name:
- #This is not a real end tag.
- #print "</%s> is not real!" % name
- self.handle_data('</%s>' % name)
- return
- self.endData()
- self._popToTag(name)
- if self.quoteStack and self.quoteStack[-1] == name:
- self.quoteStack.pop()
- self.literal = (len(self.quoteStack) > 0)
-
- def handle_data(self, data):
- self.currentData.append(data)
-
- def extractCharsetFromMeta(self, attrs):
- self.unknown_starttag('meta', attrs)
-
-
-class BeautifulSoup(BeautifulStoneSoup):
-
- """This parser knows the following facts about HTML:
-
- * Some tags have no closing tag and should be interpreted as being
- closed as soon as they are encountered.
-
- * The text inside some tags (ie. 'script') may contain tags which
- are not really part of the document and which should be parsed
- as text, not tags. If you want to parse the text as tags, you can
- always fetch it and parse it explicitly.
-
- * Tag nesting rules:
-
- Most tags can't be nested at all. For instance, the occurance of
- a <p> tag should implicitly close the previous <p> tag.
-
- <p>Para1<p>Para2
- should be transformed into:
- <p>Para1</p><p>Para2
-
- Some tags can be nested arbitrarily. For instance, the occurance
- of a <blockquote> tag should _not_ implicitly close the previous
- <blockquote> tag.
-
- Alice said: <blockquote>Bob said: <blockquote>Blah
- should NOT be transformed into:
- Alice said: <blockquote>Bob said: </blockquote><blockquote>Blah
-
- Some tags can be nested, but the nesting is reset by the
- interposition of other tags. For instance, a <tr> tag should
- implicitly close the previous <tr> tag within the same <table>,
- but not close a <tr> tag in another table.
-
- <table><tr>Blah<tr>Blah
- should be transformed into:
- <table><tr>Blah</tr><tr>Blah
- but,
- <tr>Blah<table><tr>Blah
- should NOT be transformed into
- <tr>Blah<table></tr><tr>Blah
-
- Differing assumptions about tag nesting rules are a major source
- of problems with the BeautifulSoup class. If BeautifulSoup is not
- treating as nestable a tag your page author treats as nestable,
- try ICantBelieveItsBeautifulSoup, MinimalSoup, or
- BeautifulStoneSoup before writing your own subclass."""
-
- def __init__(self, *args, **kwargs):
- if not kwargs.has_key('smartQuotesTo'):
- kwargs['smartQuotesTo'] = self.HTML_ENTITIES
- kwargs['isHTML'] = True
- BeautifulStoneSoup.__init__(self, *args, **kwargs)
-
- SELF_CLOSING_TAGS = buildTagMap(None,
- ['br' , 'hr', 'input', 'img', 'meta',
- 'spacer', 'link', 'frame', 'base'])
-
- PRESERVE_WHITESPACE_TAGS = set(['pre', 'textarea'])
-
- QUOTE_TAGS = {'script' : None, 'textarea' : None}
-
- #According to the HTML standard, each of these inline tags can
- #contain another tag of the same type. Furthermore, it's common
- #to actually use these tags this way.
- NESTABLE_INLINE_TAGS = ['span', 'font', 'q', 'object', 'bdo', 'sub', 'sup',
- 'center']
-
- #According to the HTML standard, these block tags can contain
- #another tag of the same type. Furthermore, it's common
- #to actually use these tags this way.
- NESTABLE_BLOCK_TAGS = ['blockquote', 'div', 'fieldset', 'ins', 'del']
-
- #Lists can contain other lists, but there are restrictions.
- NESTABLE_LIST_TAGS = { 'ol' : [],
- 'ul' : [],
- 'li' : ['ul', 'ol'],
- 'dl' : [],
- 'dd' : ['dl'],
- 'dt' : ['dl'] }
-
- #Tables can contain other tables, but there are restrictions.
- NESTABLE_TABLE_TAGS = {'table' : [],
- 'tr' : ['table', 'tbody', 'tfoot', 'thead'],
- 'td' : ['tr'],
- 'th' : ['tr'],
- 'thead' : ['table'],
- 'tbody' : ['table'],
- 'tfoot' : ['table'],
- }
-
- NON_NESTABLE_BLOCK_TAGS = ['address', 'form', 'p', 'pre']
-
- #If one of these tags is encountered, all tags up to the next tag of
- #this type are popped.
- RESET_NESTING_TAGS = buildTagMap(None, NESTABLE_BLOCK_TAGS, 'noscript',
- NON_NESTABLE_BLOCK_TAGS,
- NESTABLE_LIST_TAGS,
- NESTABLE_TABLE_TAGS)
-
- NESTABLE_TAGS = buildTagMap([], NESTABLE_INLINE_TAGS, NESTABLE_BLOCK_TAGS,
- NESTABLE_LIST_TAGS, NESTABLE_TABLE_TAGS)
-
- # Used to detect the charset in a META tag; see start_meta
- CHARSET_RE = re.compile("((^|;)\s*charset=)([^;]*)", re.M)
-
- def extractCharsetFromMeta(self, attrs):
- """Beautiful Soup can detect a charset included in a META tag,
- try to convert the document to that charset, and re-parse the
- document from the beginning."""
- httpEquiv = None
- contentType = None
- contentTypeIndex = None
- tagNeedsEncodingSubstitution = False
-
- for i in range(0, len(attrs)):
- key, value = attrs[i]
- key = key.lower()
- if key == 'http-equiv':
- httpEquiv = value
- elif key == 'content':
- contentType = value
- contentTypeIndex = i
-
- if httpEquiv and contentType: # It's an interesting meta tag.
- match = self.CHARSET_RE.search(contentType)
- if match:
- if (self.declaredHTMLEncoding is not None or
- self.originalEncoding == self.fromEncoding):
- # An HTML encoding was sniffed while converting
- # the document to Unicode, or an HTML encoding was
- # sniffed during a previous pass through the
- # document, or an encoding was specified
- # explicitly and it worked. Rewrite the meta tag.
- def rewrite(match):
- return match.group(1) + "%SOUP-ENCODING%"
- newAttr = self.CHARSET_RE.sub(rewrite, contentType)
- attrs[contentTypeIndex] = (attrs[contentTypeIndex][0],
- newAttr)
- tagNeedsEncodingSubstitution = True
- else:
- # This is our first pass through the document.
- # Go through it again with the encoding information.
- newCharset = match.group(3)
- if newCharset and newCharset != self.originalEncoding:
- self.declaredHTMLEncoding = newCharset
- self._feed(self.declaredHTMLEncoding)
- raise StopParsing
- pass
- tag = self.unknown_starttag("meta", attrs)
- if tag and tagNeedsEncodingSubstitution:
- tag.containsSubstitutions = True
-
-
-class StopParsing(Exception):
- pass
-
-class ICantBelieveItsBeautifulSoup(BeautifulSoup):
-
- """The BeautifulSoup class is oriented towards skipping over
- common HTML errors like unclosed tags. However, sometimes it makes
- errors of its own. For instance, consider this fragment:
-
- <b>Foo<b>Bar</b></b>
-
- This is perfectly valid (if bizarre) HTML. However, the
- BeautifulSoup class will implicitly close the first b tag when it
- encounters the second 'b'. It will think the author wrote
- "<b>Foo<b>Bar", and didn't close the first 'b' tag, because
- there's no real-world reason to bold something that's already
- bold. When it encounters '</b></b>' it will close two more 'b'
- tags, for a grand total of three tags closed instead of two. This
- can throw off the rest of your document structure. The same is
- true of a number of other tags, listed below.
-
- It's much more common for someone to forget to close a 'b' tag
- than to actually use nested 'b' tags, and the BeautifulSoup class
- handles the common case. This class handles the not-co-common
- case: where you can't believe someone wrote what they did, but
- it's valid HTML and BeautifulSoup screwed up by assuming it
- wouldn't be."""
-
- I_CANT_BELIEVE_THEYRE_NESTABLE_INLINE_TAGS = \
- ['em', 'big', 'i', 'small', 'tt', 'abbr', 'acronym', 'strong',
- 'cite', 'code', 'dfn', 'kbd', 'samp', 'strong', 'var', 'b',
- 'big']
-
- I_CANT_BELIEVE_THEYRE_NESTABLE_BLOCK_TAGS = ['noscript']
-
- NESTABLE_TAGS = buildTagMap([], BeautifulSoup.NESTABLE_TAGS,
- I_CANT_BELIEVE_THEYRE_NESTABLE_BLOCK_TAGS,
- I_CANT_BELIEVE_THEYRE_NESTABLE_INLINE_TAGS)
-
-class MinimalSoup(BeautifulSoup):
- """The MinimalSoup class is for parsing HTML that contains
- pathologically bad markup. It makes no assumptions about tag
- nesting, but it does know which tags are self-closing, that
- <script> tags contain Javascript and should not be parsed, that
- META tags may contain encoding information, and so on.
-
- This also makes it better for subclassing than BeautifulStoneSoup
- or BeautifulSoup."""
-
- RESET_NESTING_TAGS = buildTagMap('noscript')
- NESTABLE_TAGS = {}
-
-class BeautifulSOAP(BeautifulStoneSoup):
- """This class will push a tag with only a single string child into
- the tag's parent as an attribute. The attribute's name is the tag
- name, and the value is the string child. An example should give
- the flavor of the change:
-
- <foo><bar>baz</bar></foo>
- =>
- <foo bar="baz"><bar>baz</bar></foo>
-
- You can then access fooTag['bar'] instead of fooTag.barTag.string.
-
- This is, of course, useful for scraping structures that tend to
- use subelements instead of attributes, such as SOAP messages. Note
- that it modifies its input, so don't print the modified version
- out.
-
- I'm not sure how many people really want to use this class; let me
- know if you do. Mainly I like the name."""
-
- def popTag(self):
- if len(self.tagStack) > 1:
- tag = self.tagStack[-1]
- parent = self.tagStack[-2]
- parent._getAttrMap()
- if (isinstance(tag, Tag) and len(tag.contents) == 1 and
- isinstance(tag.contents[0], NavigableString) and
- not parent.attrMap.has_key(tag.name)):
- parent[tag.name] = tag.contents[0]
- BeautifulStoneSoup.popTag(self)
-
-#Enterprise class names! It has come to our attention that some people
-#think the names of the Beautiful Soup parser classes are too silly
-#and "unprofessional" for use in enterprise screen-scraping. We feel
-#your pain! For such-minded folk, the Beautiful Soup Consortium And
-#All-Night Kosher Bakery recommends renaming this file to
-#"RobustParser.py" (or, in cases of extreme enterprisiness,
-#"RobustParserBeanInterface.class") and using the following
-#enterprise-friendly class aliases:
-class RobustXMLParser(BeautifulStoneSoup):
- pass
-class RobustHTMLParser(BeautifulSoup):
- pass
-class RobustWackAssHTMLParser(ICantBelieveItsBeautifulSoup):
- pass
-class RobustInsanelyWackAssHTMLParser(MinimalSoup):
- pass
-class SimplifyingSOAPParser(BeautifulSOAP):
- pass
-
-######################################################
-#
-# Bonus library: Unicode, Dammit
-#
-# This class forces XML data into a standard format (usually to UTF-8
-# or Unicode). It is heavily based on code from Mark Pilgrim's
-# Universal Feed Parser. It does not rewrite the XML or HTML to
-# reflect a new encoding: that happens in BeautifulStoneSoup.handle_pi
-# (XML) and BeautifulSoup.start_meta (HTML).
-
-# Autodetects character encodings.
-# Download from http://chardet.feedparser.org/
-try:
- import chardet
-# import chardet.constants
-# chardet.constants._debug = 1
-except ImportError:
- chardet = None
-
-# cjkcodecs and iconv_codec make Python know about more character encodings.
-# Both are available from http://cjkpython.i18n.org/
-# They're built in if you use Python 2.4.
-try:
- import cjkcodecs.aliases
-except ImportError:
- pass
-try:
- import iconv_codec
-except ImportError:
- pass
-
-class UnicodeDammit:
- """A class for detecting the encoding of a *ML document and
- converting it to a Unicode string. If the source encoding is
- windows-1252, can replace MS smart quotes with their HTML or XML
- equivalents."""
-
- # This dictionary maps commonly seen values for "charset" in HTML
- # meta tags to the corresponding Python codec names. It only covers
- # values that aren't in Python's aliases and can't be determined
- # by the heuristics in find_codec.
- CHARSET_ALIASES = { "macintosh" : "mac-roman",
- "x-sjis" : "shift-jis" }
-
- def __init__(self, markup, overrideEncodings=[],
- smartQuotesTo='xml', isHTML=False):
- self.declaredHTMLEncoding = None
- self.markup, documentEncoding, sniffedEncoding = \
- self._detectEncoding(markup, isHTML)
- self.smartQuotesTo = smartQuotesTo
- self.triedEncodings = []
- if markup == '' or isinstance(markup, unicode):
- self.originalEncoding = None
- self.unicode = unicode(markup)
- return
-
- u = None
- for proposedEncoding in overrideEncodings:
- u = self._convertFrom(proposedEncoding)
- if u: break
- if not u:
- for proposedEncoding in (documentEncoding, sniffedEncoding):
- u = self._convertFrom(proposedEncoding)
- if u: break
-
- # If no luck and we have auto-detection library, try that:
- if not u and chardet and not isinstance(self.markup, unicode):
- u = self._convertFrom(chardet.detect(self.markup)['encoding'])
-
- # As a last resort, try utf-8 and windows-1252:
- if not u:
- for proposed_encoding in ("utf-8", "windows-1252"):
- u = self._convertFrom(proposed_encoding)
- if u: break
-
- self.unicode = u
- if not u: self.originalEncoding = None
-
- def _subMSChar(self, match):
- """Changes a MS smart quote character to an XML or HTML
- entity."""
- orig = match.group(1)
- sub = self.MS_CHARS.get(orig)
- if type(sub) == types.TupleType:
- if self.smartQuotesTo == 'xml':
- sub = '&#x'.encode() + sub[1].encode() + ';'.encode()
- else:
- sub = '&'.encode() + sub[0].encode() + ';'.encode()
- else:
- sub = sub.encode()
- return sub
-
- def _convertFrom(self, proposed):
- proposed = self.find_codec(proposed)
- if not proposed or proposed in self.triedEncodings:
- return None
- self.triedEncodings.append(proposed)
- markup = self.markup
-
- # Convert smart quotes to HTML if coming from an encoding
- # that might have them.
- if self.smartQuotesTo and proposed.lower() in("windows-1252",
- "iso-8859-1",
- "iso-8859-2"):
- smart_quotes_re = "([\x80-\x9f])"
- smart_quotes_compiled = re.compile(smart_quotes_re)
- markup = smart_quotes_compiled.sub(self._subMSChar, markup)
-
- try:
- # print "Trying to convert document to %s" % proposed
- u = self._toUnicode(markup, proposed)
- self.markup = u
- self.originalEncoding = proposed
- except Exception, e:
- # print "That didn't work!"
- # print e
- return None
- #print "Correct encoding: %s" % proposed
- return self.markup
-
- def _toUnicode(self, data, encoding):
- '''Given a string and its encoding, decodes the string into Unicode.
- %encoding is a string recognized by encodings.aliases'''
-
- # strip Byte Order Mark (if present)
- if (len(data) >= 4) and (data[:2] == '\xfe\xff') \
- and (data[2:4] != '\x00\x00'):
- encoding = 'utf-16be'
- data = data[2:]
- elif (len(data) >= 4) and (data[:2] == '\xff\xfe') \
- and (data[2:4] != '\x00\x00'):
- encoding = 'utf-16le'
- data = data[2:]
- elif data[:3] == '\xef\xbb\xbf':
- encoding = 'utf-8'
- data = data[3:]
- elif data[:4] == '\x00\x00\xfe\xff':
- encoding = 'utf-32be'
- data = data[4:]
- elif data[:4] == '\xff\xfe\x00\x00':
- encoding = 'utf-32le'
- data = data[4:]
- newdata = unicode(data, encoding)
- return newdata
-
- def _detectEncoding(self, xml_data, isHTML=False):
- """Given a document, tries to detect its XML encoding."""
- xml_encoding = sniffed_xml_encoding = None
- try:
- if xml_data[:4] == '\x4c\x6f\xa7\x94':
- # EBCDIC
- xml_data = self._ebcdic_to_ascii(xml_data)
- elif xml_data[:4] == '\x00\x3c\x00\x3f':
- # UTF-16BE
- sniffed_xml_encoding = 'utf-16be'
- xml_data = unicode(xml_data, 'utf-16be').encode('utf-8')
- elif (len(xml_data) >= 4) and (xml_data[:2] == '\xfe\xff') \
- and (xml_data[2:4] != '\x00\x00'):
- # UTF-16BE with BOM
- sniffed_xml_encoding = 'utf-16be'
- xml_data = unicode(xml_data[2:], 'utf-16be').encode('utf-8')
- elif xml_data[:4] == '\x3c\x00\x3f\x00':
- # UTF-16LE
- sniffed_xml_encoding = 'utf-16le'
- xml_data = unicode(xml_data, 'utf-16le').encode('utf-8')
- elif (len(xml_data) >= 4) and (xml_data[:2] == '\xff\xfe') and \
- (xml_data[2:4] != '\x00\x00'):
- # UTF-16LE with BOM
- sniffed_xml_encoding = 'utf-16le'
- xml_data = unicode(xml_data[2:], 'utf-16le').encode('utf-8')
- elif xml_data[:4] == '\x00\x00\x00\x3c':
- # UTF-32BE
- sniffed_xml_encoding = 'utf-32be'
- xml_data = unicode(xml_data, 'utf-32be').encode('utf-8')
- elif xml_data[:4] == '\x3c\x00\x00\x00':
- # UTF-32LE
- sniffed_xml_encoding = 'utf-32le'
- xml_data = unicode(xml_data, 'utf-32le').encode('utf-8')
- elif xml_data[:4] == '\x00\x00\xfe\xff':
- # UTF-32BE with BOM
- sniffed_xml_encoding = 'utf-32be'
- xml_data = unicode(xml_data[4:], 'utf-32be').encode('utf-8')
- elif xml_data[:4] == '\xff\xfe\x00\x00':
- # UTF-32LE with BOM
- sniffed_xml_encoding = 'utf-32le'
- xml_data = unicode(xml_data[4:], 'utf-32le').encode('utf-8')
- elif xml_data[:3] == '\xef\xbb\xbf':
- # UTF-8 with BOM
- sniffed_xml_encoding = 'utf-8'
- xml_data = unicode(xml_data[3:], 'utf-8').encode('utf-8')
- else:
- sniffed_xml_encoding = 'ascii'
- pass
- except:
- xml_encoding_match = None
- xml_encoding_re = '^<\?.*encoding=[\'"](.*?)[\'"].*\?>'.encode()
- xml_encoding_match = re.compile(xml_encoding_re).match(xml_data)
- if not xml_encoding_match and isHTML:
- meta_re = '<\s*meta[^>]+charset=([^>]*?)[;\'">]'.encode()
- regexp = re.compile(meta_re, re.I)
- xml_encoding_match = regexp.search(xml_data)
- if xml_encoding_match is not None:
- xml_encoding = xml_encoding_match.groups()[0].decode(
- 'ascii').lower()
- if isHTML:
- self.declaredHTMLEncoding = xml_encoding
- if sniffed_xml_encoding and \
- (xml_encoding in ('iso-10646-ucs-2', 'ucs-2', 'csunicode',
- 'iso-10646-ucs-4', 'ucs-4', 'csucs4',
- 'utf-16', 'utf-32', 'utf_16', 'utf_32',
- 'utf16', 'u16')):
- xml_encoding = sniffed_xml_encoding
- return xml_data, xml_encoding, sniffed_xml_encoding
-
-
- def find_codec(self, charset):
- return self._codec(self.CHARSET_ALIASES.get(charset, charset)) \
- or (charset and self._codec(charset.replace("-", ""))) \
- or (charset and self._codec(charset.replace("-", "_"))) \
- or charset
-
- def _codec(self, charset):
- if not charset: return charset
- codec = None
- try:
- codecs.lookup(charset)
- codec = charset
- except (LookupError, ValueError):
- pass
- return codec
-
- EBCDIC_TO_ASCII_MAP = None
- def _ebcdic_to_ascii(self, s):
- c = self.__class__
- if not c.EBCDIC_TO_ASCII_MAP:
- emap = (0,1,2,3,156,9,134,127,151,141,142,11,12,13,14,15,
- 16,17,18,19,157,133,8,135,24,25,146,143,28,29,30,31,
- 128,129,130,131,132,10,23,27,136,137,138,139,140,5,6,7,
- 144,145,22,147,148,149,150,4,152,153,154,155,20,21,158,26,
- 32,160,161,162,163,164,165,166,167,168,91,46,60,40,43,33,
- 38,169,170,171,172,173,174,175,176,177,93,36,42,41,59,94,
- 45,47,178,179,180,181,182,183,184,185,124,44,37,95,62,63,
- 186,187,188,189,190,191,192,193,194,96,58,35,64,39,61,34,
- 195,97,98,99,100,101,102,103,104,105,196,197,198,199,200,
- 201,202,106,107,108,109,110,111,112,113,114,203,204,205,
- 206,207,208,209,126,115,116,117,118,119,120,121,122,210,
- 211,212,213,214,215,216,217,218,219,220,221,222,223,224,
- 225,226,227,228,229,230,231,123,65,66,67,68,69,70,71,72,
- 73,232,233,234,235,236,237,125,74,75,76,77,78,79,80,81,
- 82,238,239,240,241,242,243,92,159,83,84,85,86,87,88,89,
- 90,244,245,246,247,248,249,48,49,50,51,52,53,54,55,56,57,
- 250,251,252,253,254,255)
- import string
- c.EBCDIC_TO_ASCII_MAP = string.maketrans( \
- ''.join(map(chr, range(256))), ''.join(map(chr, emap)))
- return s.translate(c.EBCDIC_TO_ASCII_MAP)
-
- MS_CHARS = { '\x80' : ('euro', '20AC'),
- '\x81' : ' ',
- '\x82' : ('sbquo', '201A'),
- '\x83' : ('fnof', '192'),
- '\x84' : ('bdquo', '201E'),
- '\x85' : ('hellip', '2026'),
- '\x86' : ('dagger', '2020'),
- '\x87' : ('Dagger', '2021'),
- '\x88' : ('circ', '2C6'),
- '\x89' : ('permil', '2030'),
- '\x8A' : ('Scaron', '160'),
- '\x8B' : ('lsaquo', '2039'),
- '\x8C' : ('OElig', '152'),
- '\x8D' : '?',
- '\x8E' : ('#x17D', '17D'),
- '\x8F' : '?',
- '\x90' : '?',
- '\x91' : ('lsquo', '2018'),
- '\x92' : ('rsquo', '2019'),
- '\x93' : ('ldquo', '201C'),
- '\x94' : ('rdquo', '201D'),
- '\x95' : ('bull', '2022'),
- '\x96' : ('ndash', '2013'),
- '\x97' : ('mdash', '2014'),
- '\x98' : ('tilde', '2DC'),
- '\x99' : ('trade', '2122'),
- '\x9a' : ('scaron', '161'),
- '\x9b' : ('rsaquo', '203A'),
- '\x9c' : ('oelig', '153'),
- '\x9d' : '?',
- '\x9e' : ('#x17E', '17E'),
- '\x9f' : ('Yuml', ''),}
-
-#######################################################################
-
-
-#By default, act as an HTML pretty-printer.
-if __name__ == '__main__':
- import sys
- soup = BeautifulSoup(sys.stdin)
- print soup.prettify()
--- a/scripts/python/findpackage.py Wed Nov 18 12:21:26 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,178 +0,0 @@
-# findpackage.py - finds which Symbian package contains a file (if any) by searching opengrok
-
-import urllib2
-import urllib
-import os.path
-import cookielib
-import sys
-import getpass
-from BeautifulSoup import BeautifulSoup
-
-user_agent = 'findpackage.py script'
-headers = { 'User-Agent' : user_agent }
-top_level_url = "http://developer.symbian.org"
-
-COOKIEFILE = 'cookies.lwp'
-# the path and filename to save your cookies in
-
-# importing cookielib worked
-urlopen = urllib2.urlopen
-Request = urllib2.Request
-cj = cookielib.LWPCookieJar()
-
-# This is a subclass of FileCookieJar
-# that has useful load and save methods
-if os.path.isfile(COOKIEFILE):
- cj.load(COOKIEFILE)
-
-# Now we need to get our Cookie Jar
-# installed in the opener;
-# for fetching URLs
-opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
-urllib2.install_opener(opener)
-
-def login():
- loginurl = 'https://developer.symbian.org/main/user_profile/login.php'
-
- print >> sys.stderr, 'username: ',
- username=sys.stdin.readline().strip()
- password=getpass.getpass()
-
- values = {'username' : username,
- 'password' : password,
- 'submit': 'Login'}
-
- headers = { 'User-Agent' : user_agent }
-
-
- data = urllib.urlencode(values)
- req = urllib2.Request(loginurl, data, headers)
-
- response = urllib2.urlopen(req)
- doc=response.read()
-
- if doc.find('Please try again') != -1:
- print >> sys.stderr, 'Login failed'
- return False
-
- cj.save(COOKIEFILE)
- return True
-
-def findpackageforlibrary(filename, project):
-
- dotpos = filename.find('.')
-
- if dotpos != -1:
- searchterm = filename[0:dotpos]
- else:
- searchterm = filename
-
- searchurl = 'https://developer.symbian.org/xref/sfl/search?q="TARGET+%s"&defs=&refs=&path=&hist=&project=%%2F%s'
- url = searchurl % (searchterm, project)
- req = urllib2.Request(url)
-
- response = urllib2.urlopen(req)
-
- doc=response.read()
-
- if doc.find('Restricted access') != -1:
- if(login()):
- # try again after login
- response = urllib2.urlopen(req)
- doc=response.read()
- else:
- return False
-
-
- # BeatifulSoup chokes on some javascript, so we cut away everything before the <body>
- try:
- bodystart=doc.find('<body>')
- doc = doc[bodystart:]
- except:
- pass
-
- soup=BeautifulSoup(doc)
-
- # let's hope the HTML format never changes...
- results=soup.findAll('div', id='results')
- pkgname=''
- try:
- temp=results[0].a.string
- fspos=temp.find('sf')
- temp=temp[fspos+3:]
- pkgpos=temp.find('/')
- temp=temp[pkgpos+1:]
-
- endpkgpos=temp.find('/')
- pkgname=temp[0:endpkgpos]
- except:
- print 'error: file \'%s\' not found in opengrok' % filename
- else:
- print 'first package with target %s: %s' % (searchterm,pkgname)
-
- return True
-
-def findpackageforheader(filename, project):
- searchterm=filename
- searchurl = 'https://developer.symbian.org/xref/sfl/search?q=&defs=&refs=&path=%s&hist=&project=%%2F%s'
- url = searchurl % (searchterm, project)
-
- req = urllib2.Request(url)
-
- response = urllib2.urlopen(req)
-
- doc=response.read()
-
- if doc.find('Restricted access') != -1:
- if(login()):
- # try again after login
- response = urllib2.urlopen(req)
- doc=response.read()
- else:
- return False
-
-
- # BeatifulSoup chokes on some javascript, so we cut away everything before the <body>
- try:
- bodystart=doc.find('<body>')
- doc = doc[bodystart:]
- except:
- pass
-
- soup=BeautifulSoup(doc)
-
- # let's hope the HTML format never changes...
- results=soup.findAll('div', id='results')
- pkgname=''
- try:
- temp=results[0].a.string
- fspos=temp.find('sf')
- temp=temp[fspos+3:]
- pkgpos=temp.find('/')
- temp=temp[pkgpos+1:]
-
- endpkgpos=temp.find('/')
- pkgname=temp[0:endpkgpos]
- except:
- print 'error: file \'%s\' not found in opengrok' % filename
- else:
- print 'package:', pkgname
-
- return True
-
-
-if len(sys.argv) < 2:
- print 'usage: findpackage.py <filename> [project]'
- exit()
-
-filename = sys.argv[1]
-
-if len(sys.argv) == 3:
- project = sys.argv[2]
-else:
- project = 'Symbian2'
-
-if filename.endswith('.lib') or filename.endswith('.dll'):
- findpackageforlibrary(filename, project)
-else:
- findpackageforheader(filename, project)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/python/findpackage/BeautifulSoup.py Wed Nov 18 14:00:16 2009 +0000
@@ -0,0 +1,2000 @@
+"""Beautiful Soup
+Elixir and Tonic
+"The Screen-Scraper's Friend"
+http://www.crummy.com/software/BeautifulSoup/
+
+Beautiful Soup parses a (possibly invalid) XML or HTML document into a
+tree representation. It provides methods and Pythonic idioms that make
+it easy to navigate, search, and modify the tree.
+
+A well-formed XML/HTML document yields a well-formed data
+structure. An ill-formed XML/HTML document yields a correspondingly
+ill-formed data structure. If your document is only locally
+well-formed, you can use this library to find and process the
+well-formed part of it.
+
+Beautiful Soup works with Python 2.2 and up. It has no external
+dependencies, but you'll have more success at converting data to UTF-8
+if you also install these three packages:
+
+* chardet, for auto-detecting character encodings
+ http://chardet.feedparser.org/
+* cjkcodecs and iconv_codec, which add more encodings to the ones supported
+ by stock Python.
+ http://cjkpython.i18n.org/
+
+Beautiful Soup defines classes for two main parsing strategies:
+
+ * BeautifulStoneSoup, for parsing XML, SGML, or your domain-specific
+ language that kind of looks like XML.
+
+ * BeautifulSoup, for parsing run-of-the-mill HTML code, be it valid
+ or invalid. This class has web browser-like heuristics for
+ obtaining a sensible parse tree in the face of common HTML errors.
+
+Beautiful Soup also defines a class (UnicodeDammit) for autodetecting
+the encoding of an HTML or XML document, and converting it to
+Unicode. Much of this code is taken from Mark Pilgrim's Universal Feed Parser.
+
+For more than you ever wanted to know about Beautiful Soup, see the
+documentation:
+http://www.crummy.com/software/BeautifulSoup/documentation.html
+
+Here, have some legalese:
+
+Copyright (c) 2004-2009, Leonard Richardson
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+ * Neither the name of the the Beautiful Soup Consortium and All
+ Night Kosher Bakery nor the names of its contributors may be
+ used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE, DAMMIT.
+
+"""
+from __future__ import generators
+
+__author__ = "Leonard Richardson (leonardr@segfault.org)"
+__version__ = "3.1.0.1"
+__copyright__ = "Copyright (c) 2004-2009 Leonard Richardson"
+__license__ = "New-style BSD"
+
+import codecs
+import markupbase
+import types
+import re
+from HTMLParser import HTMLParser, HTMLParseError
+try:
+ from htmlentitydefs import name2codepoint
+except ImportError:
+ name2codepoint = {}
+try:
+ set
+except NameError:
+ from sets import Set as set
+
+#These hacks make Beautiful Soup able to parse XML with namespaces
+markupbase._declname_match = re.compile(r'[a-zA-Z][-_.:a-zA-Z0-9]*\s*').match
+
+DEFAULT_OUTPUT_ENCODING = "utf-8"
+
+# First, the classes that represent markup elements.
+
+def sob(unicode, encoding):
+ """Returns either the given Unicode string or its encoding."""
+ if encoding is None:
+ return unicode
+ else:
+ return unicode.encode(encoding)
+
+class PageElement:
+ """Contains the navigational information for some part of the page
+ (either a tag or a piece of text)"""
+
+ def setup(self, parent=None, previous=None):
+ """Sets up the initial relations between this element and
+ other elements."""
+ self.parent = parent
+ self.previous = previous
+ self.next = None
+ self.previousSibling = None
+ self.nextSibling = None
+ if self.parent and self.parent.contents:
+ self.previousSibling = self.parent.contents[-1]
+ self.previousSibling.nextSibling = self
+
+ def replaceWith(self, replaceWith):
+ oldParent = self.parent
+ myIndex = self.parent.contents.index(self)
+ if hasattr(replaceWith, 'parent') and replaceWith.parent == self.parent:
+ # We're replacing this element with one of its siblings.
+ index = self.parent.contents.index(replaceWith)
+ if index and index < myIndex:
+ # Furthermore, it comes before this element. That
+ # means that when we extract it, the index of this
+ # element will change.
+ myIndex = myIndex - 1
+ self.extract()
+ oldParent.insert(myIndex, replaceWith)
+
+ def extract(self):
+ """Destructively rips this element out of the tree."""
+ if self.parent:
+ try:
+ self.parent.contents.remove(self)
+ except ValueError:
+ pass
+
+ #Find the two elements that would be next to each other if
+ #this element (and any children) hadn't been parsed. Connect
+ #the two.
+ lastChild = self._lastRecursiveChild()
+ nextElement = lastChild.next
+
+ if self.previous:
+ self.previous.next = nextElement
+ if nextElement:
+ nextElement.previous = self.previous
+ self.previous = None
+ lastChild.next = None
+
+ self.parent = None
+ if self.previousSibling:
+ self.previousSibling.nextSibling = self.nextSibling
+ if self.nextSibling:
+ self.nextSibling.previousSibling = self.previousSibling
+ self.previousSibling = self.nextSibling = None
+ return self
+
+ def _lastRecursiveChild(self):
+ "Finds the last element beneath this object to be parsed."
+ lastChild = self
+ while hasattr(lastChild, 'contents') and lastChild.contents:
+ lastChild = lastChild.contents[-1]
+ return lastChild
+
+ def insert(self, position, newChild):
+ if (isinstance(newChild, basestring)
+ or isinstance(newChild, unicode)) \
+ and not isinstance(newChild, NavigableString):
+ newChild = NavigableString(newChild)
+
+ position = min(position, len(self.contents))
+ if hasattr(newChild, 'parent') and newChild.parent != None:
+ # We're 'inserting' an element that's already one
+ # of this object's children.
+ if newChild.parent == self:
+ index = self.find(newChild)
+ if index and index < position:
+ # Furthermore we're moving it further down the
+ # list of this object's children. That means that
+ # when we extract this element, our target index
+ # will jump down one.
+ position = position - 1
+ newChild.extract()
+
+ newChild.parent = self
+ previousChild = None
+ if position == 0:
+ newChild.previousSibling = None
+ newChild.previous = self
+ else:
+ previousChild = self.contents[position-1]
+ newChild.previousSibling = previousChild
+ newChild.previousSibling.nextSibling = newChild
+ newChild.previous = previousChild._lastRecursiveChild()
+ if newChild.previous:
+ newChild.previous.next = newChild
+
+ newChildsLastElement = newChild._lastRecursiveChild()
+
+ if position >= len(self.contents):
+ newChild.nextSibling = None
+
+ parent = self
+ parentsNextSibling = None
+ while not parentsNextSibling:
+ parentsNextSibling = parent.nextSibling
+ parent = parent.parent
+ if not parent: # This is the last element in the document.
+ break
+ if parentsNextSibling:
+ newChildsLastElement.next = parentsNextSibling
+ else:
+ newChildsLastElement.next = None
+ else:
+ nextChild = self.contents[position]
+ newChild.nextSibling = nextChild
+ if newChild.nextSibling:
+ newChild.nextSibling.previousSibling = newChild
+ newChildsLastElement.next = nextChild
+
+ if newChildsLastElement.next:
+ newChildsLastElement.next.previous = newChildsLastElement
+ self.contents.insert(position, newChild)
+
+ def append(self, tag):
+ """Appends the given tag to the contents of this tag."""
+ self.insert(len(self.contents), tag)
+
+ def findNext(self, name=None, attrs={}, text=None, **kwargs):
+ """Returns the first item that matches the given criteria and
+ appears after this Tag in the document."""
+ return self._findOne(self.findAllNext, name, attrs, text, **kwargs)
+
+ def findAllNext(self, name=None, attrs={}, text=None, limit=None,
+ **kwargs):
+ """Returns all items that match the given criteria and appear
+ after this Tag in the document."""
+ return self._findAll(name, attrs, text, limit, self.nextGenerator,
+ **kwargs)
+
+ def findNextSibling(self, name=None, attrs={}, text=None, **kwargs):
+ """Returns the closest sibling to this Tag that matches the
+ given criteria and appears after this Tag in the document."""
+ return self._findOne(self.findNextSiblings, name, attrs, text,
+ **kwargs)
+
+ def findNextSiblings(self, name=None, attrs={}, text=None, limit=None,
+ **kwargs):
+ """Returns the siblings of this Tag that match the given
+ criteria and appear after this Tag in the document."""
+ return self._findAll(name, attrs, text, limit,
+ self.nextSiblingGenerator, **kwargs)
+ fetchNextSiblings = findNextSiblings # Compatibility with pre-3.x
+
+ def findPrevious(self, name=None, attrs={}, text=None, **kwargs):
+ """Returns the first item that matches the given criteria and
+ appears before this Tag in the document."""
+ return self._findOne(self.findAllPrevious, name, attrs, text, **kwargs)
+
+ def findAllPrevious(self, name=None, attrs={}, text=None, limit=None,
+ **kwargs):
+ """Returns all items that match the given criteria and appear
+ before this Tag in the document."""
+ return self._findAll(name, attrs, text, limit, self.previousGenerator,
+ **kwargs)
+ fetchPrevious = findAllPrevious # Compatibility with pre-3.x
+
+ def findPreviousSibling(self, name=None, attrs={}, text=None, **kwargs):
+ """Returns the closest sibling to this Tag that matches the
+ given criteria and appears before this Tag in the document."""
+ return self._findOne(self.findPreviousSiblings, name, attrs, text,
+ **kwargs)
+
+ def findPreviousSiblings(self, name=None, attrs={}, text=None,
+ limit=None, **kwargs):
+ """Returns the siblings of this Tag that match the given
+ criteria and appear before this Tag in the document."""
+ return self._findAll(name, attrs, text, limit,
+ self.previousSiblingGenerator, **kwargs)
+ fetchPreviousSiblings = findPreviousSiblings # Compatibility with pre-3.x
+
+ def findParent(self, name=None, attrs={}, **kwargs):
+ """Returns the closest parent of this Tag that matches the given
+ criteria."""
+ # NOTE: We can't use _findOne because findParents takes a different
+ # set of arguments.
+ r = None
+ l = self.findParents(name, attrs, 1)
+ if l:
+ r = l[0]
+ return r
+
+ def findParents(self, name=None, attrs={}, limit=None, **kwargs):
+ """Returns the parents of this Tag that match the given
+ criteria."""
+
+ return self._findAll(name, attrs, None, limit, self.parentGenerator,
+ **kwargs)
+ fetchParents = findParents # Compatibility with pre-3.x
+
+ #These methods do the real heavy lifting.
+
+ def _findOne(self, method, name, attrs, text, **kwargs):
+ r = None
+ l = method(name, attrs, text, 1, **kwargs)
+ if l:
+ r = l[0]
+ return r
+
+ def _findAll(self, name, attrs, text, limit, generator, **kwargs):
+ "Iterates over a generator looking for things that match."
+
+ if isinstance(name, SoupStrainer):
+ strainer = name
+ else:
+ # Build a SoupStrainer
+ strainer = SoupStrainer(name, attrs, text, **kwargs)
+ results = ResultSet(strainer)
+ g = generator()
+ while True:
+ try:
+ i = g.next()
+ except StopIteration:
+ break
+ if i:
+ found = strainer.search(i)
+ if found:
+ results.append(found)
+ if limit and len(results) >= limit:
+ break
+ return results
+
+ #These Generators can be used to navigate starting from both
+ #NavigableStrings and Tags.
+ def nextGenerator(self):
+ i = self
+ while i:
+ i = i.next
+ yield i
+
+ def nextSiblingGenerator(self):
+ i = self
+ while i:
+ i = i.nextSibling
+ yield i
+
+ def previousGenerator(self):
+ i = self
+ while i:
+ i = i.previous
+ yield i
+
+ def previousSiblingGenerator(self):
+ i = self
+ while i:
+ i = i.previousSibling
+ yield i
+
+ def parentGenerator(self):
+ i = self
+ while i:
+ i = i.parent
+ yield i
+
+ # Utility methods
+ def substituteEncoding(self, str, encoding=None):
+ encoding = encoding or "utf-8"
+ return str.replace("%SOUP-ENCODING%", encoding)
+
+ def toEncoding(self, s, encoding=None):
+ """Encodes an object to a string in some encoding, or to Unicode.
+ ."""
+ if isinstance(s, unicode):
+ if encoding:
+ s = s.encode(encoding)
+ elif isinstance(s, str):
+ if encoding:
+ s = s.encode(encoding)
+ else:
+ s = unicode(s)
+ else:
+ if encoding:
+ s = self.toEncoding(str(s), encoding)
+ else:
+ s = unicode(s)
+ return s
+
+class NavigableString(unicode, PageElement):
+
+ def __new__(cls, value):
+ """Create a new NavigableString.
+
+ When unpickling a NavigableString, this method is called with
+ the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
+ passed in to the superclass's __new__ or the superclass won't know
+ how to handle non-ASCII characters.
+ """
+ if isinstance(value, unicode):
+ return unicode.__new__(cls, value)
+ return unicode.__new__(cls, value, DEFAULT_OUTPUT_ENCODING)
+
+ def __getnewargs__(self):
+ return (unicode(self),)
+
+ def __getattr__(self, attr):
+ """text.string gives you text. This is for backwards
+ compatibility for Navigable*String, but for CData* it lets you
+ get the string without the CData wrapper."""
+ if attr == 'string':
+ return self
+ else:
+ raise AttributeError, "'%s' object has no attribute '%s'" % (self.__class__.__name__, attr)
+
+ def encode(self, encoding=DEFAULT_OUTPUT_ENCODING):
+ return self.decode().encode(encoding)
+
+ def decodeGivenEventualEncoding(self, eventualEncoding):
+ return self
+
+class CData(NavigableString):
+
+ def decodeGivenEventualEncoding(self, eventualEncoding):
+ return u'<![CDATA[' + self + u']]>'
+
+class ProcessingInstruction(NavigableString):
+
+ def decodeGivenEventualEncoding(self, eventualEncoding):
+ output = self
+ if u'%SOUP-ENCODING%' in output:
+ output = self.substituteEncoding(output, eventualEncoding)
+ return u'<?' + output + u'?>'
+
+class Comment(NavigableString):
+ def decodeGivenEventualEncoding(self, eventualEncoding):
+ return u'<!--' + self + u'-->'
+
+class Declaration(NavigableString):
+ def decodeGivenEventualEncoding(self, eventualEncoding):
+ return u'<!' + self + u'>'
+
+class Tag(PageElement):
+
+ """Represents a found HTML tag with its attributes and contents."""
+
+ def _invert(h):
+ "Cheap function to invert a hash."
+ i = {}
+ for k,v in h.items():
+ i[v] = k
+ return i
+
+ XML_ENTITIES_TO_SPECIAL_CHARS = { "apos" : "'",
+ "quot" : '"',
+ "amp" : "&",
+ "lt" : "<",
+ "gt" : ">" }
+
+ XML_SPECIAL_CHARS_TO_ENTITIES = _invert(XML_ENTITIES_TO_SPECIAL_CHARS)
+
+ def _convertEntities(self, match):
+ """Used in a call to re.sub to replace HTML, XML, and numeric
+ entities with the appropriate Unicode characters. If HTML
+ entities are being converted, any unrecognized entities are
+ escaped."""
+ x = match.group(1)
+ if self.convertHTMLEntities and x in name2codepoint:
+ return unichr(name2codepoint[x])
+ elif x in self.XML_ENTITIES_TO_SPECIAL_CHARS:
+ if self.convertXMLEntities:
+ return self.XML_ENTITIES_TO_SPECIAL_CHARS[x]
+ else:
+ return u'&%s;' % x
+ elif len(x) > 0 and x[0] == '#':
+ # Handle numeric entities
+ if len(x) > 1 and x[1] == 'x':
+ return unichr(int(x[2:], 16))
+ else:
+ return unichr(int(x[1:]))
+
+ elif self.escapeUnrecognizedEntities:
+ return u'&%s;' % x
+ else:
+ return u'&%s;' % x
+
+ def __init__(self, parser, name, attrs=None, parent=None,
+ previous=None):
+ "Basic constructor."
+
+ # We don't actually store the parser object: that lets extracted
+ # chunks be garbage-collected
+ self.parserClass = parser.__class__
+ self.isSelfClosing = parser.isSelfClosingTag(name)
+ self.name = name
+ if attrs == None:
+ attrs = []
+ self.attrs = attrs
+ self.contents = []
+ self.setup(parent, previous)
+ self.hidden = False
+ self.containsSubstitutions = False
+ self.convertHTMLEntities = parser.convertHTMLEntities
+ self.convertXMLEntities = parser.convertXMLEntities
+ self.escapeUnrecognizedEntities = parser.escapeUnrecognizedEntities
+
+ def convert(kval):
+ "Converts HTML, XML and numeric entities in the attribute value."
+ k, val = kval
+ if val is None:
+ return kval
+ return (k, re.sub("&(#\d+|#x[0-9a-fA-F]+|\w+);",
+ self._convertEntities, val))
+ self.attrs = map(convert, self.attrs)
+
+ def get(self, key, default=None):
+ """Returns the value of the 'key' attribute for the tag, or
+ the value given for 'default' if it doesn't have that
+ attribute."""
+ return self._getAttrMap().get(key, default)
+
+ def has_key(self, key):
+ return self._getAttrMap().has_key(key)
+
+ def __getitem__(self, key):
+ """tag[key] returns the value of the 'key' attribute for the tag,
+ and throws an exception if it's not there."""
+ return self._getAttrMap()[key]
+
+ def __iter__(self):
+ "Iterating over a tag iterates over its contents."
+ return iter(self.contents)
+
+ def __len__(self):
+ "The length of a tag is the length of its list of contents."
+ return len(self.contents)
+
+ def __contains__(self, x):
+ return x in self.contents
+
+ def __nonzero__(self):
+ "A tag is non-None even if it has no contents."
+ return True
+
+ def __setitem__(self, key, value):
+ """Setting tag[key] sets the value of the 'key' attribute for the
+ tag."""
+ self._getAttrMap()
+ self.attrMap[key] = value
+ found = False
+ for i in range(0, len(self.attrs)):
+ if self.attrs[i][0] == key:
+ self.attrs[i] = (key, value)
+ found = True
+ if not found:
+ self.attrs.append((key, value))
+ self._getAttrMap()[key] = value
+
+ def __delitem__(self, key):
+ "Deleting tag[key] deletes all 'key' attributes for the tag."
+ for item in self.attrs:
+ if item[0] == key:
+ self.attrs.remove(item)
+ #We don't break because bad HTML can define the same
+ #attribute multiple times.
+ self._getAttrMap()
+ if self.attrMap.has_key(key):
+ del self.attrMap[key]
+
+ def __call__(self, *args, **kwargs):
+ """Calling a tag like a function is the same as calling its
+ findAll() method. Eg. tag('a') returns a list of all the A tags
+ found within this tag."""
+ return apply(self.findAll, args, kwargs)
+
+ def __getattr__(self, tag):
+ #print "Getattr %s.%s" % (self.__class__, tag)
+ if len(tag) > 3 and tag.rfind('Tag') == len(tag)-3:
+ return self.find(tag[:-3])
+ elif tag.find('__') != 0:
+ return self.find(tag)
+ raise AttributeError, "'%s' object has no attribute '%s'" % (self.__class__, tag)
+
+ def __eq__(self, other):
+ """Returns true iff this tag has the same name, the same attributes,
+ and the same contents (recursively) as the given tag.
+
+ NOTE: right now this will return false if two tags have the
+ same attributes in a different order. Should this be fixed?"""
+ if not hasattr(other, 'name') or not hasattr(other, 'attrs') or not hasattr(other, 'contents') or self.name != other.name or self.attrs != other.attrs or len(self) != len(other):
+ return False
+ for i in range(0, len(self.contents)):
+ if self.contents[i] != other.contents[i]:
+ return False
+ return True
+
+ def __ne__(self, other):
+ """Returns true iff this tag is not identical to the other tag,
+ as defined in __eq__."""
+ return not self == other
+
+ def __repr__(self, encoding=DEFAULT_OUTPUT_ENCODING):
+ """Renders this tag as a string."""
+ return self.decode(eventualEncoding=encoding)
+
+ BARE_AMPERSAND_OR_BRACKET = re.compile("([<>]|"
+ + "&(?!#\d+;|#x[0-9a-fA-F]+;|\w+;)"
+ + ")")
+
+ def _sub_entity(self, x):
+ """Used with a regular expression to substitute the
+ appropriate XML entity for an XML special character."""
+ return "&" + self.XML_SPECIAL_CHARS_TO_ENTITIES[x.group(0)[0]] + ";"
+
+ def __unicode__(self):
+ return self.decode()
+
+ def __str__(self):
+ return self.encode()
+
+ def encode(self, encoding=DEFAULT_OUTPUT_ENCODING,
+ prettyPrint=False, indentLevel=0):
+ return self.decode(prettyPrint, indentLevel, encoding).encode(encoding)
+
+ def decode(self, prettyPrint=False, indentLevel=0,
+ eventualEncoding=DEFAULT_OUTPUT_ENCODING):
+ """Returns a string or Unicode representation of this tag and
+ its contents. To get Unicode, pass None for encoding."""
+
+ attrs = []
+ if self.attrs:
+ for key, val in self.attrs:
+ fmt = '%s="%s"'
+ if isString(val):
+ if (self.containsSubstitutions
+ and eventualEncoding is not None
+ and '%SOUP-ENCODING%' in val):
+ val = self.substituteEncoding(val, eventualEncoding)
+
+ # The attribute value either:
+ #
+ # * Contains no embedded double quotes or single quotes.
+ # No problem: we enclose it in double quotes.
+ # * Contains embedded single quotes. No problem:
+ # double quotes work here too.
+ # * Contains embedded double quotes. No problem:
+ # we enclose it in single quotes.
+ # * Embeds both single _and_ double quotes. This
+ # can't happen naturally, but it can happen if
+ # you modify an attribute value after parsing
+ # the document. Now we have a bit of a
+ # problem. We solve it by enclosing the
+ # attribute in single quotes, and escaping any
+ # embedded single quotes to XML entities.
+ if '"' in val:
+ fmt = "%s='%s'"
+ if "'" in val:
+ # TODO: replace with apos when
+ # appropriate.
+ val = val.replace("'", "&squot;")
+
+ # Now we're okay w/r/t quotes. But the attribute
+ # value might also contain angle brackets, or
+ # ampersands that aren't part of entities. We need
+ # to escape those to XML entities too.
+ val = self.BARE_AMPERSAND_OR_BRACKET.sub(self._sub_entity, val)
+ if val is None:
+ # Handle boolean attributes.
+ decoded = key
+ else:
+ decoded = fmt % (key, val)
+ attrs.append(decoded)
+ close = ''
+ closeTag = ''
+ if self.isSelfClosing:
+ close = ' /'
+ else:
+ closeTag = '</%s>' % self.name
+
+ indentTag, indentContents = 0, 0
+ if prettyPrint:
+ indentTag = indentLevel
+ space = (' ' * (indentTag-1))
+ indentContents = indentTag + 1
+ contents = self.decodeContents(prettyPrint, indentContents,
+ eventualEncoding)
+ if self.hidden:
+ s = contents
+ else:
+ s = []
+ attributeString = ''
+ if attrs:
+ attributeString = ' ' + ' '.join(attrs)
+ if prettyPrint:
+ s.append(space)
+ s.append('<%s%s%s>' % (self.name, attributeString, close))
+ if prettyPrint:
+ s.append("\n")
+ s.append(contents)
+ if prettyPrint and contents and contents[-1] != "\n":
+ s.append("\n")
+ if prettyPrint and closeTag:
+ s.append(space)
+ s.append(closeTag)
+ if prettyPrint and closeTag and self.nextSibling:
+ s.append("\n")
+ s = ''.join(s)
+ return s
+
+ def decompose(self):
+ """Recursively destroys the contents of this tree."""
+ contents = [i for i in self.contents]
+ for i in contents:
+ if isinstance(i, Tag):
+ i.decompose()
+ else:
+ i.extract()
+ self.extract()
+
+ def prettify(self, encoding=DEFAULT_OUTPUT_ENCODING):
+ return self.encode(encoding, True)
+
+ def encodeContents(self, encoding=DEFAULT_OUTPUT_ENCODING,
+ prettyPrint=False, indentLevel=0):
+ return self.decodeContents(prettyPrint, indentLevel).encode(encoding)
+
+ def decodeContents(self, prettyPrint=False, indentLevel=0,
+ eventualEncoding=DEFAULT_OUTPUT_ENCODING):
+ """Renders the contents of this tag as a string in the given
+ encoding. If encoding is None, returns a Unicode string.."""
+ s=[]
+ for c in self:
+ text = None
+ if isinstance(c, NavigableString):
+ text = c.decodeGivenEventualEncoding(eventualEncoding)
+ elif isinstance(c, Tag):
+ s.append(c.decode(prettyPrint, indentLevel, eventualEncoding))
+ if text and prettyPrint:
+ text = text.strip()
+ if text:
+ if prettyPrint:
+ s.append(" " * (indentLevel-1))
+ s.append(text)
+ if prettyPrint:
+ s.append("\n")
+ return ''.join(s)
+
+ #Soup methods
+
+ def find(self, name=None, attrs={}, recursive=True, text=None,
+ **kwargs):
+ """Return only the first child of this Tag matching the given
+ criteria."""
+ r = None
+ l = self.findAll(name, attrs, recursive, text, 1, **kwargs)
+ if l:
+ r = l[0]
+ return r
+ findChild = find
+
+ def findAll(self, name=None, attrs={}, recursive=True, text=None,
+ limit=None, **kwargs):
+ """Extracts a list of Tag objects that match the given
+ criteria. You can specify the name of the Tag and any
+ attributes you want the Tag to have.
+
+ The value of a key-value pair in the 'attrs' map can be a
+ string, a list of strings, a regular expression object, or a
+ callable that takes a string and returns whether or not the
+ string matches for some custom definition of 'matches'. The
+ same is true of the tag name."""
+ generator = self.recursiveChildGenerator
+ if not recursive:
+ generator = self.childGenerator
+ return self._findAll(name, attrs, text, limit, generator, **kwargs)
+ findChildren = findAll
+
+ # Pre-3.x compatibility methods. Will go away in 4.0.
+ first = find
+ fetch = findAll
+
+ def fetchText(self, text=None, recursive=True, limit=None):
+ return self.findAll(text=text, recursive=recursive, limit=limit)
+
+ def firstText(self, text=None, recursive=True):
+ return self.find(text=text, recursive=recursive)
+
+ # 3.x compatibility methods. Will go away in 4.0.
+ def renderContents(self, encoding=DEFAULT_OUTPUT_ENCODING,
+ prettyPrint=False, indentLevel=0):
+ if encoding is None:
+ return self.decodeContents(prettyPrint, indentLevel, encoding)
+ else:
+ return self.encodeContents(encoding, prettyPrint, indentLevel)
+
+
+ #Private methods
+
+ def _getAttrMap(self):
+ """Initializes a map representation of this tag's attributes,
+ if not already initialized."""
+ if not getattr(self, 'attrMap'):
+ self.attrMap = {}
+ for (key, value) in self.attrs:
+ self.attrMap[key] = value
+ return self.attrMap
+
+ #Generator methods
+ def recursiveChildGenerator(self):
+ if not len(self.contents):
+ raise StopIteration
+ stopNode = self._lastRecursiveChild().next
+ current = self.contents[0]
+ while current is not stopNode:
+ yield current
+ current = current.next
+
+ def childGenerator(self):
+ if not len(self.contents):
+ raise StopIteration
+ current = self.contents[0]
+ while current:
+ yield current
+ current = current.nextSibling
+ raise StopIteration
+
+# Next, a couple classes to represent queries and their results.
+class SoupStrainer:
+ """Encapsulates a number of ways of matching a markup element (tag or
+ text)."""
+
+ def __init__(self, name=None, attrs={}, text=None, **kwargs):
+ self.name = name
+ if isString(attrs):
+ kwargs['class'] = attrs
+ attrs = None
+ if kwargs:
+ if attrs:
+ attrs = attrs.copy()
+ attrs.update(kwargs)
+ else:
+ attrs = kwargs
+ self.attrs = attrs
+ self.text = text
+
+ def __str__(self):
+ if self.text:
+ return self.text
+ else:
+ return "%s|%s" % (self.name, self.attrs)
+
+ def searchTag(self, markupName=None, markupAttrs={}):
+ found = None
+ markup = None
+ if isinstance(markupName, Tag):
+ markup = markupName
+ markupAttrs = markup
+ callFunctionWithTagData = callable(self.name) \
+ and not isinstance(markupName, Tag)
+
+ if (not self.name) \
+ or callFunctionWithTagData \
+ or (markup and self._matches(markup, self.name)) \
+ or (not markup and self._matches(markupName, self.name)):
+ if callFunctionWithTagData:
+ match = self.name(markupName, markupAttrs)
+ else:
+ match = True
+ markupAttrMap = None
+ for attr, matchAgainst in self.attrs.items():
+ if not markupAttrMap:
+ if hasattr(markupAttrs, 'get'):
+ markupAttrMap = markupAttrs
+ else:
+ markupAttrMap = {}
+ for k,v in markupAttrs:
+ markupAttrMap[k] = v
+ attrValue = markupAttrMap.get(attr)
+ if not self._matches(attrValue, matchAgainst):
+ match = False
+ break
+ if match:
+ if markup:
+ found = markup
+ else:
+ found = markupName
+ return found
+
+ def search(self, markup):
+ #print 'looking for %s in %s' % (self, markup)
+ found = None
+ # If given a list of items, scan it for a text element that
+ # matches.
+ if isList(markup) and not isinstance(markup, Tag):
+ for element in markup:
+ if isinstance(element, NavigableString) \
+ and self.search(element):
+ found = element
+ break
+ # If it's a Tag, make sure its name or attributes match.
+ # Don't bother with Tags if we're searching for text.
+ elif isinstance(markup, Tag):
+ if not self.text:
+ found = self.searchTag(markup)
+ # If it's text, make sure the text matches.
+ elif isinstance(markup, NavigableString) or \
+ isString(markup):
+ if self._matches(markup, self.text):
+ found = markup
+ else:
+ raise Exception, "I don't know how to match against a %s" \
+ % markup.__class__
+ return found
+
+ def _matches(self, markup, matchAgainst):
+ #print "Matching %s against %s" % (markup, matchAgainst)
+ result = False
+ if matchAgainst == True and type(matchAgainst) == types.BooleanType:
+ result = markup != None
+ elif callable(matchAgainst):
+ result = matchAgainst(markup)
+ else:
+ #Custom match methods take the tag as an argument, but all
+ #other ways of matching match the tag name as a string.
+ if isinstance(markup, Tag):
+ markup = markup.name
+ if markup is not None and not isString(markup):
+ markup = unicode(markup)
+ #Now we know that chunk is either a string, or None.
+ if hasattr(matchAgainst, 'match'):
+ # It's a regexp object.
+ result = markup and matchAgainst.search(markup)
+ elif (isList(matchAgainst)
+ and (markup is not None or not isString(matchAgainst))):
+ result = markup in matchAgainst
+ elif hasattr(matchAgainst, 'items'):
+ result = markup.has_key(matchAgainst)
+ elif matchAgainst and isString(markup):
+ if isinstance(markup, unicode):
+ matchAgainst = unicode(matchAgainst)
+ else:
+ matchAgainst = str(matchAgainst)
+
+ if not result:
+ result = matchAgainst == markup
+ return result
+
+class ResultSet(list):
+ """A ResultSet is just a list that keeps track of the SoupStrainer
+ that created it."""
+ def __init__(self, source):
+ list.__init__([])
+ self.source = source
+
+# Now, some helper functions.
+
+def isList(l):
+ """Convenience method that works with all 2.x versions of Python
+ to determine whether or not something is listlike."""
+ return ((hasattr(l, '__iter__') and not isString(l))
+ or (type(l) in (types.ListType, types.TupleType)))
+
+def isString(s):
+ """Convenience method that works with all 2.x versions of Python
+ to determine whether or not something is stringlike."""
+ try:
+ return isinstance(s, unicode) or isinstance(s, basestring)
+ except NameError:
+ return isinstance(s, str)
+
+def buildTagMap(default, *args):
+ """Turns a list of maps, lists, or scalars into a single map.
+ Used to build the SELF_CLOSING_TAGS, NESTABLE_TAGS, and
+ NESTING_RESET_TAGS maps out of lists and partial maps."""
+ built = {}
+ for portion in args:
+ if hasattr(portion, 'items'):
+ #It's a map. Merge it.
+ for k,v in portion.items():
+ built[k] = v
+ elif isList(portion) and not isString(portion):
+ #It's a list. Map each item to the default.
+ for k in portion:
+ built[k] = default
+ else:
+ #It's a scalar. Map it to the default.
+ built[portion] = default
+ return built
+
+# Now, the parser classes.
+
+class HTMLParserBuilder(HTMLParser):
+
+ def __init__(self, soup):
+ HTMLParser.__init__(self)
+ self.soup = soup
+
+ # We inherit feed() and reset().
+
+ def handle_starttag(self, name, attrs):
+ if name == 'meta':
+ self.soup.extractCharsetFromMeta(attrs)
+ else:
+ self.soup.unknown_starttag(name, attrs)
+
+ def handle_endtag(self, name):
+ self.soup.unknown_endtag(name)
+
+ def handle_data(self, content):
+ self.soup.handle_data(content)
+
+ def _toStringSubclass(self, text, subclass):
+ """Adds a certain piece of text to the tree as a NavigableString
+ subclass."""
+ self.soup.endData()
+ self.handle_data(text)
+ self.soup.endData(subclass)
+
+ def handle_pi(self, text):
+ """Handle a processing instruction as a ProcessingInstruction
+ object, possibly one with a %SOUP-ENCODING% slot into which an
+ encoding will be plugged later."""
+ if text[:3] == "xml":
+ text = u"xml version='1.0' encoding='%SOUP-ENCODING%'"
+ self._toStringSubclass(text, ProcessingInstruction)
+
+ def handle_comment(self, text):
+ "Handle comments as Comment objects."
+ self._toStringSubclass(text, Comment)
+
+ def handle_charref(self, ref):
+ "Handle character references as data."
+ if self.soup.convertEntities:
+ data = unichr(int(ref))
+ else:
+ data = '&#%s;' % ref
+ self.handle_data(data)
+
+ def handle_entityref(self, ref):
+ """Handle entity references as data, possibly converting known
+ HTML and/or XML entity references to the corresponding Unicode
+ characters."""
+ data = None
+ if self.soup.convertHTMLEntities:
+ try:
+ data = unichr(name2codepoint[ref])
+ except KeyError:
+ pass
+
+ if not data and self.soup.convertXMLEntities:
+ data = self.soup.XML_ENTITIES_TO_SPECIAL_CHARS.get(ref)
+
+ if not data and self.soup.convertHTMLEntities and \
+ not self.soup.XML_ENTITIES_TO_SPECIAL_CHARS.get(ref):
+ # TODO: We've got a problem here. We're told this is
+ # an entity reference, but it's not an XML entity
+ # reference or an HTML entity reference. Nonetheless,
+ # the logical thing to do is to pass it through as an
+ # unrecognized entity reference.
+ #
+ # Except: when the input is "&carol;" this function
+ # will be called with input "carol". When the input is
+ # "AT&T", this function will be called with input
+ # "T". We have no way of knowing whether a semicolon
+ # was present originally, so we don't know whether
+ # this is an unknown entity or just a misplaced
+ # ampersand.
+ #
+ # The more common case is a misplaced ampersand, so I
+ # escape the ampersand and omit the trailing semicolon.
+ data = "&%s" % ref
+ if not data:
+ # This case is different from the one above, because we
+ # haven't already gone through a supposedly comprehensive
+ # mapping of entities to Unicode characters. We might not
+ # have gone through any mapping at all. So the chances are
+ # very high that this is a real entity, and not a
+ # misplaced ampersand.
+ data = "&%s;" % ref
+ self.handle_data(data)
+
+ def handle_decl(self, data):
+ "Handle DOCTYPEs and the like as Declaration objects."
+ self._toStringSubclass(data, Declaration)
+
+ def parse_declaration(self, i):
+ """Treat a bogus SGML declaration as raw data. Treat a CDATA
+ declaration as a CData object."""
+ j = None
+ if self.rawdata[i:i+9] == '<![CDATA[':
+ k = self.rawdata.find(']]>', i)
+ if k == -1:
+ k = len(self.rawdata)
+ data = self.rawdata[i+9:k]
+ j = k+3
+ self._toStringSubclass(data, CData)
+ else:
+ try:
+ j = HTMLParser.parse_declaration(self, i)
+ except HTMLParseError:
+ toHandle = self.rawdata[i:]
+ self.handle_data(toHandle)
+ j = i + len(toHandle)
+ return j
+
+
+class BeautifulStoneSoup(Tag):
+
+ """This class contains the basic parser and search code. It defines
+ a parser that knows nothing about tag behavior except for the
+ following:
+
+ You can't close a tag without closing all the tags it encloses.
+ That is, "<foo><bar></foo>" actually means
+ "<foo><bar></bar></foo>".
+
+ [Another possible explanation is "<foo><bar /></foo>", but since
+ this class defines no SELF_CLOSING_TAGS, it will never use that
+ explanation.]
+
+ This class is useful for parsing XML or made-up markup languages,
+ or when BeautifulSoup makes an assumption counter to what you were
+ expecting."""
+
+ SELF_CLOSING_TAGS = {}
+ NESTABLE_TAGS = {}
+ RESET_NESTING_TAGS = {}
+ QUOTE_TAGS = {}
+ PRESERVE_WHITESPACE_TAGS = []
+
+ MARKUP_MASSAGE = [(re.compile('(<[^<>]*)/>'),
+ lambda x: x.group(1) + ' />'),
+ (re.compile('<!\s+([^<>]*)>'),
+ lambda x: '<!' + x.group(1) + '>')
+ ]
+
+ ROOT_TAG_NAME = u'[document]'
+
+ HTML_ENTITIES = "html"
+ XML_ENTITIES = "xml"
+ XHTML_ENTITIES = "xhtml"
+ # TODO: This only exists for backwards-compatibility
+ ALL_ENTITIES = XHTML_ENTITIES
+
+ # Used when determining whether a text node is all whitespace and
+ # can be replaced with a single space. A text node that contains
+ # fancy Unicode spaces (usually non-breaking) should be left
+ # alone.
+ STRIP_ASCII_SPACES = { 9: None, 10: None, 12: None, 13: None, 32: None, }
+
+ def __init__(self, markup="", parseOnlyThese=None, fromEncoding=None,
+ markupMassage=True, smartQuotesTo=XML_ENTITIES,
+ convertEntities=None, selfClosingTags=None, isHTML=False,
+ builder=HTMLParserBuilder):
+ """The Soup object is initialized as the 'root tag', and the
+ provided markup (which can be a string or a file-like object)
+ is fed into the underlying parser.
+
+ HTMLParser will process most bad HTML, and the BeautifulSoup
+ class has some tricks for dealing with some HTML that kills
+ HTMLParser, but Beautiful Soup can nonetheless choke or lose data
+ if your data uses self-closing tags or declarations
+ incorrectly.
+
+ By default, Beautiful Soup uses regexes to sanitize input,
+ avoiding the vast majority of these problems. If the problems
+ don't apply to you, pass in False for markupMassage, and
+ you'll get better performance.
+
+ The default parser massage techniques fix the two most common
+ instances of invalid HTML that choke HTMLParser:
+
+ <br/> (No space between name of closing tag and tag close)
+ <! --Comment--> (Extraneous whitespace in declaration)
+
+ You can pass in a custom list of (RE object, replace method)
+ tuples to get Beautiful Soup to scrub your input the way you
+ want."""
+
+ self.parseOnlyThese = parseOnlyThese
+ self.fromEncoding = fromEncoding
+ self.smartQuotesTo = smartQuotesTo
+ self.convertEntities = convertEntities
+ # Set the rules for how we'll deal with the entities we
+ # encounter
+ if self.convertEntities:
+ # It doesn't make sense to convert encoded characters to
+ # entities even while you're converting entities to Unicode.
+ # Just convert it all to Unicode.
+ self.smartQuotesTo = None
+ if convertEntities == self.HTML_ENTITIES:
+ self.convertXMLEntities = False
+ self.convertHTMLEntities = True
+ self.escapeUnrecognizedEntities = True
+ elif convertEntities == self.XHTML_ENTITIES:
+ self.convertXMLEntities = True
+ self.convertHTMLEntities = True
+ self.escapeUnrecognizedEntities = False
+ elif convertEntities == self.XML_ENTITIES:
+ self.convertXMLEntities = True
+ self.convertHTMLEntities = False
+ self.escapeUnrecognizedEntities = False
+ else:
+ self.convertXMLEntities = False
+ self.convertHTMLEntities = False
+ self.escapeUnrecognizedEntities = False
+
+ self.instanceSelfClosingTags = buildTagMap(None, selfClosingTags)
+ self.builder = builder(self)
+ self.reset()
+
+ if hasattr(markup, 'read'): # It's a file-type object.
+ markup = markup.read()
+ self.markup = markup
+ self.markupMassage = markupMassage
+ try:
+ self._feed(isHTML=isHTML)
+ except StopParsing:
+ pass
+ self.markup = None # The markup can now be GCed.
+ self.builder = None # So can the builder.
+
+ def _feed(self, inDocumentEncoding=None, isHTML=False):
+ # Convert the document to Unicode.
+ markup = self.markup
+ if isinstance(markup, unicode):
+ if not hasattr(self, 'originalEncoding'):
+ self.originalEncoding = None
+ else:
+ dammit = UnicodeDammit\
+ (markup, [self.fromEncoding, inDocumentEncoding],
+ smartQuotesTo=self.smartQuotesTo, isHTML=isHTML)
+ markup = dammit.unicode
+ self.originalEncoding = dammit.originalEncoding
+ self.declaredHTMLEncoding = dammit.declaredHTMLEncoding
+ if markup:
+ if self.markupMassage:
+ if not isList(self.markupMassage):
+ self.markupMassage = self.MARKUP_MASSAGE
+ for fix, m in self.markupMassage:
+ markup = fix.sub(m, markup)
+ # TODO: We get rid of markupMassage so that the
+ # soup object can be deepcopied later on. Some
+ # Python installations can't copy regexes. If anyone
+ # was relying on the existence of markupMassage, this
+ # might cause problems.
+ del(self.markupMassage)
+ self.builder.reset()
+
+ self.builder.feed(markup)
+ # Close out any unfinished strings and close all the open tags.
+ self.endData()
+ while self.currentTag.name != self.ROOT_TAG_NAME:
+ self.popTag()
+
+ def isSelfClosingTag(self, name):
+ """Returns true iff the given string is the name of a
+ self-closing tag according to this parser."""
+ return self.SELF_CLOSING_TAGS.has_key(name) \
+ or self.instanceSelfClosingTags.has_key(name)
+
+ def reset(self):
+ Tag.__init__(self, self, self.ROOT_TAG_NAME)
+ self.hidden = 1
+ self.builder.reset()
+ self.currentData = []
+ self.currentTag = None
+ self.tagStack = []
+ self.quoteStack = []
+ self.pushTag(self)
+
+ def popTag(self):
+ tag = self.tagStack.pop()
+ # Tags with just one string-owning child get the child as a
+ # 'string' property, so that soup.tag.string is shorthand for
+ # soup.tag.contents[0]
+ if len(self.currentTag.contents) == 1 and \
+ isinstance(self.currentTag.contents[0], NavigableString):
+ self.currentTag.string = self.currentTag.contents[0]
+
+ #print "Pop", tag.name
+ if self.tagStack:
+ self.currentTag = self.tagStack[-1]
+ return self.currentTag
+
+ def pushTag(self, tag):
+ #print "Push", tag.name
+ if self.currentTag:
+ self.currentTag.contents.append(tag)
+ self.tagStack.append(tag)
+ self.currentTag = self.tagStack[-1]
+
+ def endData(self, containerClass=NavigableString):
+ if self.currentData:
+ currentData = u''.join(self.currentData)
+ if (currentData.translate(self.STRIP_ASCII_SPACES) == '' and
+ not set([tag.name for tag in self.tagStack]).intersection(
+ self.PRESERVE_WHITESPACE_TAGS)):
+ if '\n' in currentData:
+ currentData = '\n'
+ else:
+ currentData = ' '
+ self.currentData = []
+ if self.parseOnlyThese and len(self.tagStack) <= 1 and \
+ (not self.parseOnlyThese.text or \
+ not self.parseOnlyThese.search(currentData)):
+ return
+ o = containerClass(currentData)
+ o.setup(self.currentTag, self.previous)
+ if self.previous:
+ self.previous.next = o
+ self.previous = o
+ self.currentTag.contents.append(o)
+
+
+ def _popToTag(self, name, inclusivePop=True):
+ """Pops the tag stack up to and including the most recent
+ instance of the given tag. If inclusivePop is false, pops the tag
+ stack up to but *not* including the most recent instqance of
+ the given tag."""
+ #print "Popping to %s" % name
+ if name == self.ROOT_TAG_NAME:
+ return
+
+ numPops = 0
+ mostRecentTag = None
+ for i in range(len(self.tagStack)-1, 0, -1):
+ if name == self.tagStack[i].name:
+ numPops = len(self.tagStack)-i
+ break
+ if not inclusivePop:
+ numPops = numPops - 1
+
+ for i in range(0, numPops):
+ mostRecentTag = self.popTag()
+ return mostRecentTag
+
+ def _smartPop(self, name):
+
+ """We need to pop up to the previous tag of this type, unless
+ one of this tag's nesting reset triggers comes between this
+ tag and the previous tag of this type, OR unless this tag is a
+ generic nesting trigger and another generic nesting trigger
+ comes between this tag and the previous tag of this type.
+
+ Examples:
+ <p>Foo<b>Bar *<p>* should pop to 'p', not 'b'.
+ <p>Foo<table>Bar *<p>* should pop to 'table', not 'p'.
+ <p>Foo<table><tr>Bar *<p>* should pop to 'tr', not 'p'.
+
+ <li><ul><li> *<li>* should pop to 'ul', not the first 'li'.
+ <tr><table><tr> *<tr>* should pop to 'table', not the first 'tr'
+ <td><tr><td> *<td>* should pop to 'tr', not the first 'td'
+ """
+
+ nestingResetTriggers = self.NESTABLE_TAGS.get(name)
+ isNestable = nestingResetTriggers != None
+ isResetNesting = self.RESET_NESTING_TAGS.has_key(name)
+ popTo = None
+ inclusive = True
+ for i in range(len(self.tagStack)-1, 0, -1):
+ p = self.tagStack[i]
+ if (not p or p.name == name) and not isNestable:
+ #Non-nestable tags get popped to the top or to their
+ #last occurance.
+ popTo = name
+ break
+ if (nestingResetTriggers != None
+ and p.name in nestingResetTriggers) \
+ or (nestingResetTriggers == None and isResetNesting
+ and self.RESET_NESTING_TAGS.has_key(p.name)):
+
+ #If we encounter one of the nesting reset triggers
+ #peculiar to this tag, or we encounter another tag
+ #that causes nesting to reset, pop up to but not
+ #including that tag.
+ popTo = p.name
+ inclusive = False
+ break
+ p = p.parent
+ if popTo:
+ self._popToTag(popTo, inclusive)
+
+ def unknown_starttag(self, name, attrs, selfClosing=0):
+ #print "Start tag %s: %s" % (name, attrs)
+ if self.quoteStack:
+ #This is not a real tag.
+ #print "<%s> is not real!" % name
+ attrs = ''.join(map(lambda(x, y): ' %s="%s"' % (x, y), attrs))
+ self.handle_data('<%s%s>' % (name, attrs))
+ return
+ self.endData()
+
+ if not self.isSelfClosingTag(name) and not selfClosing:
+ self._smartPop(name)
+
+ if self.parseOnlyThese and len(self.tagStack) <= 1 \
+ and (self.parseOnlyThese.text or not self.parseOnlyThese.searchTag(name, attrs)):
+ return
+
+ tag = Tag(self, name, attrs, self.currentTag, self.previous)
+ if self.previous:
+ self.previous.next = tag
+ self.previous = tag
+ self.pushTag(tag)
+ if selfClosing or self.isSelfClosingTag(name):
+ self.popTag()
+ if name in self.QUOTE_TAGS:
+ #print "Beginning quote (%s)" % name
+ self.quoteStack.append(name)
+ self.literal = 1
+ return tag
+
+ def unknown_endtag(self, name):
+ #print "End tag %s" % name
+ if self.quoteStack and self.quoteStack[-1] != name:
+ #This is not a real end tag.
+ #print "</%s> is not real!" % name
+ self.handle_data('</%s>' % name)
+ return
+ self.endData()
+ self._popToTag(name)
+ if self.quoteStack and self.quoteStack[-1] == name:
+ self.quoteStack.pop()
+ self.literal = (len(self.quoteStack) > 0)
+
+ def handle_data(self, data):
+ self.currentData.append(data)
+
+ def extractCharsetFromMeta(self, attrs):
+ self.unknown_starttag('meta', attrs)
+
+
+class BeautifulSoup(BeautifulStoneSoup):
+
+ """This parser knows the following facts about HTML:
+
+ * Some tags have no closing tag and should be interpreted as being
+ closed as soon as they are encountered.
+
+ * The text inside some tags (ie. 'script') may contain tags which
+ are not really part of the document and which should be parsed
+ as text, not tags. If you want to parse the text as tags, you can
+ always fetch it and parse it explicitly.
+
+ * Tag nesting rules:
+
+ Most tags can't be nested at all. For instance, the occurance of
+ a <p> tag should implicitly close the previous <p> tag.
+
+ <p>Para1<p>Para2
+ should be transformed into:
+ <p>Para1</p><p>Para2
+
+ Some tags can be nested arbitrarily. For instance, the occurance
+ of a <blockquote> tag should _not_ implicitly close the previous
+ <blockquote> tag.
+
+ Alice said: <blockquote>Bob said: <blockquote>Blah
+ should NOT be transformed into:
+ Alice said: <blockquote>Bob said: </blockquote><blockquote>Blah
+
+ Some tags can be nested, but the nesting is reset by the
+ interposition of other tags. For instance, a <tr> tag should
+ implicitly close the previous <tr> tag within the same <table>,
+ but not close a <tr> tag in another table.
+
+ <table><tr>Blah<tr>Blah
+ should be transformed into:
+ <table><tr>Blah</tr><tr>Blah
+ but,
+ <tr>Blah<table><tr>Blah
+ should NOT be transformed into
+ <tr>Blah<table></tr><tr>Blah
+
+ Differing assumptions about tag nesting rules are a major source
+ of problems with the BeautifulSoup class. If BeautifulSoup is not
+ treating as nestable a tag your page author treats as nestable,
+ try ICantBelieveItsBeautifulSoup, MinimalSoup, or
+ BeautifulStoneSoup before writing your own subclass."""
+
+ def __init__(self, *args, **kwargs):
+ if not kwargs.has_key('smartQuotesTo'):
+ kwargs['smartQuotesTo'] = self.HTML_ENTITIES
+ kwargs['isHTML'] = True
+ BeautifulStoneSoup.__init__(self, *args, **kwargs)
+
+ SELF_CLOSING_TAGS = buildTagMap(None,
+ ['br' , 'hr', 'input', 'img', 'meta',
+ 'spacer', 'link', 'frame', 'base'])
+
+ PRESERVE_WHITESPACE_TAGS = set(['pre', 'textarea'])
+
+ QUOTE_TAGS = {'script' : None, 'textarea' : None}
+
+ #According to the HTML standard, each of these inline tags can
+ #contain another tag of the same type. Furthermore, it's common
+ #to actually use these tags this way.
+ NESTABLE_INLINE_TAGS = ['span', 'font', 'q', 'object', 'bdo', 'sub', 'sup',
+ 'center']
+
+ #According to the HTML standard, these block tags can contain
+ #another tag of the same type. Furthermore, it's common
+ #to actually use these tags this way.
+ NESTABLE_BLOCK_TAGS = ['blockquote', 'div', 'fieldset', 'ins', 'del']
+
+ #Lists can contain other lists, but there are restrictions.
+ NESTABLE_LIST_TAGS = { 'ol' : [],
+ 'ul' : [],
+ 'li' : ['ul', 'ol'],
+ 'dl' : [],
+ 'dd' : ['dl'],
+ 'dt' : ['dl'] }
+
+ #Tables can contain other tables, but there are restrictions.
+ NESTABLE_TABLE_TAGS = {'table' : [],
+ 'tr' : ['table', 'tbody', 'tfoot', 'thead'],
+ 'td' : ['tr'],
+ 'th' : ['tr'],
+ 'thead' : ['table'],
+ 'tbody' : ['table'],
+ 'tfoot' : ['table'],
+ }
+
+ NON_NESTABLE_BLOCK_TAGS = ['address', 'form', 'p', 'pre']
+
+ #If one of these tags is encountered, all tags up to the next tag of
+ #this type are popped.
+ RESET_NESTING_TAGS = buildTagMap(None, NESTABLE_BLOCK_TAGS, 'noscript',
+ NON_NESTABLE_BLOCK_TAGS,
+ NESTABLE_LIST_TAGS,
+ NESTABLE_TABLE_TAGS)
+
+ NESTABLE_TAGS = buildTagMap([], NESTABLE_INLINE_TAGS, NESTABLE_BLOCK_TAGS,
+ NESTABLE_LIST_TAGS, NESTABLE_TABLE_TAGS)
+
+ # Used to detect the charset in a META tag; see start_meta
+ CHARSET_RE = re.compile("((^|;)\s*charset=)([^;]*)", re.M)
+
+ def extractCharsetFromMeta(self, attrs):
+ """Beautiful Soup can detect a charset included in a META tag,
+ try to convert the document to that charset, and re-parse the
+ document from the beginning."""
+ httpEquiv = None
+ contentType = None
+ contentTypeIndex = None
+ tagNeedsEncodingSubstitution = False
+
+ for i in range(0, len(attrs)):
+ key, value = attrs[i]
+ key = key.lower()
+ if key == 'http-equiv':
+ httpEquiv = value
+ elif key == 'content':
+ contentType = value
+ contentTypeIndex = i
+
+ if httpEquiv and contentType: # It's an interesting meta tag.
+ match = self.CHARSET_RE.search(contentType)
+ if match:
+ if (self.declaredHTMLEncoding is not None or
+ self.originalEncoding == self.fromEncoding):
+ # An HTML encoding was sniffed while converting
+ # the document to Unicode, or an HTML encoding was
+ # sniffed during a previous pass through the
+ # document, or an encoding was specified
+ # explicitly and it worked. Rewrite the meta tag.
+ def rewrite(match):
+ return match.group(1) + "%SOUP-ENCODING%"
+ newAttr = self.CHARSET_RE.sub(rewrite, contentType)
+ attrs[contentTypeIndex] = (attrs[contentTypeIndex][0],
+ newAttr)
+ tagNeedsEncodingSubstitution = True
+ else:
+ # This is our first pass through the document.
+ # Go through it again with the encoding information.
+ newCharset = match.group(3)
+ if newCharset and newCharset != self.originalEncoding:
+ self.declaredHTMLEncoding = newCharset
+ self._feed(self.declaredHTMLEncoding)
+ raise StopParsing
+ pass
+ tag = self.unknown_starttag("meta", attrs)
+ if tag and tagNeedsEncodingSubstitution:
+ tag.containsSubstitutions = True
+
+
+class StopParsing(Exception):
+ pass
+
+class ICantBelieveItsBeautifulSoup(BeautifulSoup):
+
+ """The BeautifulSoup class is oriented towards skipping over
+ common HTML errors like unclosed tags. However, sometimes it makes
+ errors of its own. For instance, consider this fragment:
+
+ <b>Foo<b>Bar</b></b>
+
+ This is perfectly valid (if bizarre) HTML. However, the
+ BeautifulSoup class will implicitly close the first b tag when it
+ encounters the second 'b'. It will think the author wrote
+ "<b>Foo<b>Bar", and didn't close the first 'b' tag, because
+ there's no real-world reason to bold something that's already
+ bold. When it encounters '</b></b>' it will close two more 'b'
+ tags, for a grand total of three tags closed instead of two. This
+ can throw off the rest of your document structure. The same is
+ true of a number of other tags, listed below.
+
+ It's much more common for someone to forget to close a 'b' tag
+ than to actually use nested 'b' tags, and the BeautifulSoup class
+ handles the common case. This class handles the not-co-common
+ case: where you can't believe someone wrote what they did, but
+ it's valid HTML and BeautifulSoup screwed up by assuming it
+ wouldn't be."""
+
+ I_CANT_BELIEVE_THEYRE_NESTABLE_INLINE_TAGS = \
+ ['em', 'big', 'i', 'small', 'tt', 'abbr', 'acronym', 'strong',
+ 'cite', 'code', 'dfn', 'kbd', 'samp', 'strong', 'var', 'b',
+ 'big']
+
+ I_CANT_BELIEVE_THEYRE_NESTABLE_BLOCK_TAGS = ['noscript']
+
+ NESTABLE_TAGS = buildTagMap([], BeautifulSoup.NESTABLE_TAGS,
+ I_CANT_BELIEVE_THEYRE_NESTABLE_BLOCK_TAGS,
+ I_CANT_BELIEVE_THEYRE_NESTABLE_INLINE_TAGS)
+
+class MinimalSoup(BeautifulSoup):
+ """The MinimalSoup class is for parsing HTML that contains
+ pathologically bad markup. It makes no assumptions about tag
+ nesting, but it does know which tags are self-closing, that
+ <script> tags contain Javascript and should not be parsed, that
+ META tags may contain encoding information, and so on.
+
+ This also makes it better for subclassing than BeautifulStoneSoup
+ or BeautifulSoup."""
+
+ RESET_NESTING_TAGS = buildTagMap('noscript')
+ NESTABLE_TAGS = {}
+
+class BeautifulSOAP(BeautifulStoneSoup):
+ """This class will push a tag with only a single string child into
+ the tag's parent as an attribute. The attribute's name is the tag
+ name, and the value is the string child. An example should give
+ the flavor of the change:
+
+ <foo><bar>baz</bar></foo>
+ =>
+ <foo bar="baz"><bar>baz</bar></foo>
+
+ You can then access fooTag['bar'] instead of fooTag.barTag.string.
+
+ This is, of course, useful for scraping structures that tend to
+ use subelements instead of attributes, such as SOAP messages. Note
+ that it modifies its input, so don't print the modified version
+ out.
+
+ I'm not sure how many people really want to use this class; let me
+ know if you do. Mainly I like the name."""
+
+ def popTag(self):
+ if len(self.tagStack) > 1:
+ tag = self.tagStack[-1]
+ parent = self.tagStack[-2]
+ parent._getAttrMap()
+ if (isinstance(tag, Tag) and len(tag.contents) == 1 and
+ isinstance(tag.contents[0], NavigableString) and
+ not parent.attrMap.has_key(tag.name)):
+ parent[tag.name] = tag.contents[0]
+ BeautifulStoneSoup.popTag(self)
+
+#Enterprise class names! It has come to our attention that some people
+#think the names of the Beautiful Soup parser classes are too silly
+#and "unprofessional" for use in enterprise screen-scraping. We feel
+#your pain! For such-minded folk, the Beautiful Soup Consortium And
+#All-Night Kosher Bakery recommends renaming this file to
+#"RobustParser.py" (or, in cases of extreme enterprisiness,
+#"RobustParserBeanInterface.class") and using the following
+#enterprise-friendly class aliases:
+class RobustXMLParser(BeautifulStoneSoup):
+ pass
+class RobustHTMLParser(BeautifulSoup):
+ pass
+class RobustWackAssHTMLParser(ICantBelieveItsBeautifulSoup):
+ pass
+class RobustInsanelyWackAssHTMLParser(MinimalSoup):
+ pass
+class SimplifyingSOAPParser(BeautifulSOAP):
+ pass
+
+######################################################
+#
+# Bonus library: Unicode, Dammit
+#
+# This class forces XML data into a standard format (usually to UTF-8
+# or Unicode). It is heavily based on code from Mark Pilgrim's
+# Universal Feed Parser. It does not rewrite the XML or HTML to
+# reflect a new encoding: that happens in BeautifulStoneSoup.handle_pi
+# (XML) and BeautifulSoup.start_meta (HTML).
+
+# Autodetects character encodings.
+# Download from http://chardet.feedparser.org/
+try:
+ import chardet
+# import chardet.constants
+# chardet.constants._debug = 1
+except ImportError:
+ chardet = None
+
+# cjkcodecs and iconv_codec make Python know about more character encodings.
+# Both are available from http://cjkpython.i18n.org/
+# They're built in if you use Python 2.4.
+try:
+ import cjkcodecs.aliases
+except ImportError:
+ pass
+try:
+ import iconv_codec
+except ImportError:
+ pass
+
+class UnicodeDammit:
+ """A class for detecting the encoding of a *ML document and
+ converting it to a Unicode string. If the source encoding is
+ windows-1252, can replace MS smart quotes with their HTML or XML
+ equivalents."""
+
+ # This dictionary maps commonly seen values for "charset" in HTML
+ # meta tags to the corresponding Python codec names. It only covers
+ # values that aren't in Python's aliases and can't be determined
+ # by the heuristics in find_codec.
+ CHARSET_ALIASES = { "macintosh" : "mac-roman",
+ "x-sjis" : "shift-jis" }
+
+ def __init__(self, markup, overrideEncodings=[],
+ smartQuotesTo='xml', isHTML=False):
+ self.declaredHTMLEncoding = None
+ self.markup, documentEncoding, sniffedEncoding = \
+ self._detectEncoding(markup, isHTML)
+ self.smartQuotesTo = smartQuotesTo
+ self.triedEncodings = []
+ if markup == '' or isinstance(markup, unicode):
+ self.originalEncoding = None
+ self.unicode = unicode(markup)
+ return
+
+ u = None
+ for proposedEncoding in overrideEncodings:
+ u = self._convertFrom(proposedEncoding)
+ if u: break
+ if not u:
+ for proposedEncoding in (documentEncoding, sniffedEncoding):
+ u = self._convertFrom(proposedEncoding)
+ if u: break
+
+ # If no luck and we have auto-detection library, try that:
+ if not u and chardet and not isinstance(self.markup, unicode):
+ u = self._convertFrom(chardet.detect(self.markup)['encoding'])
+
+ # As a last resort, try utf-8 and windows-1252:
+ if not u:
+ for proposed_encoding in ("utf-8", "windows-1252"):
+ u = self._convertFrom(proposed_encoding)
+ if u: break
+
+ self.unicode = u
+ if not u: self.originalEncoding = None
+
+ def _subMSChar(self, match):
+ """Changes a MS smart quote character to an XML or HTML
+ entity."""
+ orig = match.group(1)
+ sub = self.MS_CHARS.get(orig)
+ if type(sub) == types.TupleType:
+ if self.smartQuotesTo == 'xml':
+ sub = '&#x'.encode() + sub[1].encode() + ';'.encode()
+ else:
+ sub = '&'.encode() + sub[0].encode() + ';'.encode()
+ else:
+ sub = sub.encode()
+ return sub
+
+ def _convertFrom(self, proposed):
+ proposed = self.find_codec(proposed)
+ if not proposed or proposed in self.triedEncodings:
+ return None
+ self.triedEncodings.append(proposed)
+ markup = self.markup
+
+ # Convert smart quotes to HTML if coming from an encoding
+ # that might have them.
+ if self.smartQuotesTo and proposed.lower() in("windows-1252",
+ "iso-8859-1",
+ "iso-8859-2"):
+ smart_quotes_re = "([\x80-\x9f])"
+ smart_quotes_compiled = re.compile(smart_quotes_re)
+ markup = smart_quotes_compiled.sub(self._subMSChar, markup)
+
+ try:
+ # print "Trying to convert document to %s" % proposed
+ u = self._toUnicode(markup, proposed)
+ self.markup = u
+ self.originalEncoding = proposed
+ except Exception, e:
+ # print "That didn't work!"
+ # print e
+ return None
+ #print "Correct encoding: %s" % proposed
+ return self.markup
+
+ def _toUnicode(self, data, encoding):
+ '''Given a string and its encoding, decodes the string into Unicode.
+ %encoding is a string recognized by encodings.aliases'''
+
+ # strip Byte Order Mark (if present)
+ if (len(data) >= 4) and (data[:2] == '\xfe\xff') \
+ and (data[2:4] != '\x00\x00'):
+ encoding = 'utf-16be'
+ data = data[2:]
+ elif (len(data) >= 4) and (data[:2] == '\xff\xfe') \
+ and (data[2:4] != '\x00\x00'):
+ encoding = 'utf-16le'
+ data = data[2:]
+ elif data[:3] == '\xef\xbb\xbf':
+ encoding = 'utf-8'
+ data = data[3:]
+ elif data[:4] == '\x00\x00\xfe\xff':
+ encoding = 'utf-32be'
+ data = data[4:]
+ elif data[:4] == '\xff\xfe\x00\x00':
+ encoding = 'utf-32le'
+ data = data[4:]
+ newdata = unicode(data, encoding)
+ return newdata
+
+ def _detectEncoding(self, xml_data, isHTML=False):
+ """Given a document, tries to detect its XML encoding."""
+ xml_encoding = sniffed_xml_encoding = None
+ try:
+ if xml_data[:4] == '\x4c\x6f\xa7\x94':
+ # EBCDIC
+ xml_data = self._ebcdic_to_ascii(xml_data)
+ elif xml_data[:4] == '\x00\x3c\x00\x3f':
+ # UTF-16BE
+ sniffed_xml_encoding = 'utf-16be'
+ xml_data = unicode(xml_data, 'utf-16be').encode('utf-8')
+ elif (len(xml_data) >= 4) and (xml_data[:2] == '\xfe\xff') \
+ and (xml_data[2:4] != '\x00\x00'):
+ # UTF-16BE with BOM
+ sniffed_xml_encoding = 'utf-16be'
+ xml_data = unicode(xml_data[2:], 'utf-16be').encode('utf-8')
+ elif xml_data[:4] == '\x3c\x00\x3f\x00':
+ # UTF-16LE
+ sniffed_xml_encoding = 'utf-16le'
+ xml_data = unicode(xml_data, 'utf-16le').encode('utf-8')
+ elif (len(xml_data) >= 4) and (xml_data[:2] == '\xff\xfe') and \
+ (xml_data[2:4] != '\x00\x00'):
+ # UTF-16LE with BOM
+ sniffed_xml_encoding = 'utf-16le'
+ xml_data = unicode(xml_data[2:], 'utf-16le').encode('utf-8')
+ elif xml_data[:4] == '\x00\x00\x00\x3c':
+ # UTF-32BE
+ sniffed_xml_encoding = 'utf-32be'
+ xml_data = unicode(xml_data, 'utf-32be').encode('utf-8')
+ elif xml_data[:4] == '\x3c\x00\x00\x00':
+ # UTF-32LE
+ sniffed_xml_encoding = 'utf-32le'
+ xml_data = unicode(xml_data, 'utf-32le').encode('utf-8')
+ elif xml_data[:4] == '\x00\x00\xfe\xff':
+ # UTF-32BE with BOM
+ sniffed_xml_encoding = 'utf-32be'
+ xml_data = unicode(xml_data[4:], 'utf-32be').encode('utf-8')
+ elif xml_data[:4] == '\xff\xfe\x00\x00':
+ # UTF-32LE with BOM
+ sniffed_xml_encoding = 'utf-32le'
+ xml_data = unicode(xml_data[4:], 'utf-32le').encode('utf-8')
+ elif xml_data[:3] == '\xef\xbb\xbf':
+ # UTF-8 with BOM
+ sniffed_xml_encoding = 'utf-8'
+ xml_data = unicode(xml_data[3:], 'utf-8').encode('utf-8')
+ else:
+ sniffed_xml_encoding = 'ascii'
+ pass
+ except:
+ xml_encoding_match = None
+ xml_encoding_re = '^<\?.*encoding=[\'"](.*?)[\'"].*\?>'.encode()
+ xml_encoding_match = re.compile(xml_encoding_re).match(xml_data)
+ if not xml_encoding_match and isHTML:
+ meta_re = '<\s*meta[^>]+charset=([^>]*?)[;\'">]'.encode()
+ regexp = re.compile(meta_re, re.I)
+ xml_encoding_match = regexp.search(xml_data)
+ if xml_encoding_match is not None:
+ xml_encoding = xml_encoding_match.groups()[0].decode(
+ 'ascii').lower()
+ if isHTML:
+ self.declaredHTMLEncoding = xml_encoding
+ if sniffed_xml_encoding and \
+ (xml_encoding in ('iso-10646-ucs-2', 'ucs-2', 'csunicode',
+ 'iso-10646-ucs-4', 'ucs-4', 'csucs4',
+ 'utf-16', 'utf-32', 'utf_16', 'utf_32',
+ 'utf16', 'u16')):
+ xml_encoding = sniffed_xml_encoding
+ return xml_data, xml_encoding, sniffed_xml_encoding
+
+
+ def find_codec(self, charset):
+ return self._codec(self.CHARSET_ALIASES.get(charset, charset)) \
+ or (charset and self._codec(charset.replace("-", ""))) \
+ or (charset and self._codec(charset.replace("-", "_"))) \
+ or charset
+
+ def _codec(self, charset):
+ if not charset: return charset
+ codec = None
+ try:
+ codecs.lookup(charset)
+ codec = charset
+ except (LookupError, ValueError):
+ pass
+ return codec
+
+ EBCDIC_TO_ASCII_MAP = None
+ def _ebcdic_to_ascii(self, s):
+ c = self.__class__
+ if not c.EBCDIC_TO_ASCII_MAP:
+ emap = (0,1,2,3,156,9,134,127,151,141,142,11,12,13,14,15,
+ 16,17,18,19,157,133,8,135,24,25,146,143,28,29,30,31,
+ 128,129,130,131,132,10,23,27,136,137,138,139,140,5,6,7,
+ 144,145,22,147,148,149,150,4,152,153,154,155,20,21,158,26,
+ 32,160,161,162,163,164,165,166,167,168,91,46,60,40,43,33,
+ 38,169,170,171,172,173,174,175,176,177,93,36,42,41,59,94,
+ 45,47,178,179,180,181,182,183,184,185,124,44,37,95,62,63,
+ 186,187,188,189,190,191,192,193,194,96,58,35,64,39,61,34,
+ 195,97,98,99,100,101,102,103,104,105,196,197,198,199,200,
+ 201,202,106,107,108,109,110,111,112,113,114,203,204,205,
+ 206,207,208,209,126,115,116,117,118,119,120,121,122,210,
+ 211,212,213,214,215,216,217,218,219,220,221,222,223,224,
+ 225,226,227,228,229,230,231,123,65,66,67,68,69,70,71,72,
+ 73,232,233,234,235,236,237,125,74,75,76,77,78,79,80,81,
+ 82,238,239,240,241,242,243,92,159,83,84,85,86,87,88,89,
+ 90,244,245,246,247,248,249,48,49,50,51,52,53,54,55,56,57,
+ 250,251,252,253,254,255)
+ import string
+ c.EBCDIC_TO_ASCII_MAP = string.maketrans( \
+ ''.join(map(chr, range(256))), ''.join(map(chr, emap)))
+ return s.translate(c.EBCDIC_TO_ASCII_MAP)
+
+ MS_CHARS = { '\x80' : ('euro', '20AC'),
+ '\x81' : ' ',
+ '\x82' : ('sbquo', '201A'),
+ '\x83' : ('fnof', '192'),
+ '\x84' : ('bdquo', '201E'),
+ '\x85' : ('hellip', '2026'),
+ '\x86' : ('dagger', '2020'),
+ '\x87' : ('Dagger', '2021'),
+ '\x88' : ('circ', '2C6'),
+ '\x89' : ('permil', '2030'),
+ '\x8A' : ('Scaron', '160'),
+ '\x8B' : ('lsaquo', '2039'),
+ '\x8C' : ('OElig', '152'),
+ '\x8D' : '?',
+ '\x8E' : ('#x17D', '17D'),
+ '\x8F' : '?',
+ '\x90' : '?',
+ '\x91' : ('lsquo', '2018'),
+ '\x92' : ('rsquo', '2019'),
+ '\x93' : ('ldquo', '201C'),
+ '\x94' : ('rdquo', '201D'),
+ '\x95' : ('bull', '2022'),
+ '\x96' : ('ndash', '2013'),
+ '\x97' : ('mdash', '2014'),
+ '\x98' : ('tilde', '2DC'),
+ '\x99' : ('trade', '2122'),
+ '\x9a' : ('scaron', '161'),
+ '\x9b' : ('rsaquo', '203A'),
+ '\x9c' : ('oelig', '153'),
+ '\x9d' : '?',
+ '\x9e' : ('#x17E', '17E'),
+ '\x9f' : ('Yuml', ''),}
+
+#######################################################################
+
+
+#By default, act as an HTML pretty-printer.
+if __name__ == '__main__':
+ import sys
+ soup = BeautifulSoup(sys.stdin)
+ print soup.prettify()
Binary file scripts/python/findpackage/BeautifulSoup.pyc has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/python/findpackage/findpackage.py Wed Nov 18 14:00:16 2009 +0000
@@ -0,0 +1,178 @@
+# findpackage.py - finds which Symbian package contains a file (if any) by searching opengrok
+
+import urllib2
+import urllib
+import os.path
+import cookielib
+import sys
+import getpass
+from BeautifulSoup import BeautifulSoup
+
+user_agent = 'findpackage.py script'
+headers = { 'User-Agent' : user_agent }
+top_level_url = "http://developer.symbian.org"
+
+COOKIEFILE = 'cookies.lwp'
+# the path and filename to save your cookies in
+
+# importing cookielib worked
+urlopen = urllib2.urlopen
+Request = urllib2.Request
+cj = cookielib.LWPCookieJar()
+
+# This is a subclass of FileCookieJar
+# that has useful load and save methods
+if os.path.isfile(COOKIEFILE):
+ cj.load(COOKIEFILE)
+
+# Now we need to get our Cookie Jar
+# installed in the opener;
+# for fetching URLs
+opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
+urllib2.install_opener(opener)
+
+def login():
+ loginurl = 'https://developer.symbian.org/main/user_profile/login.php'
+
+ print >> sys.stderr, 'username: ',
+ username=sys.stdin.readline().strip()
+ password=getpass.getpass()
+
+ values = {'username' : username,
+ 'password' : password,
+ 'submit': 'Login'}
+
+ headers = { 'User-Agent' : user_agent }
+
+
+ data = urllib.urlencode(values)
+ req = urllib2.Request(loginurl, data, headers)
+
+ response = urllib2.urlopen(req)
+ doc=response.read()
+
+ if doc.find('Please try again') != -1:
+ print >> sys.stderr, 'Login failed'
+ return False
+
+ cj.save(COOKIEFILE)
+ return True
+
+def findpackageforlibrary(filename, project):
+
+ dotpos = filename.find('.')
+
+ if dotpos != -1:
+ searchterm = filename[0:dotpos]
+ else:
+ searchterm = filename
+
+ searchurl = 'https://developer.symbian.org/xref/sfl/search?q="TARGET+%s"&defs=&refs=&path=&hist=&project=%%2F%s'
+ url = searchurl % (searchterm, project)
+ req = urllib2.Request(url)
+
+ response = urllib2.urlopen(req)
+
+ doc=response.read()
+
+ if doc.find('Restricted access') != -1:
+ if(login()):
+ # try again after login
+ response = urllib2.urlopen(req)
+ doc=response.read()
+ else:
+ return False
+
+
+ # BeatifulSoup chokes on some javascript, so we cut away everything before the <body>
+ try:
+ bodystart=doc.find('<body>')
+ doc = doc[bodystart:]
+ except:
+ pass
+
+ soup=BeautifulSoup(doc)
+
+ # let's hope the HTML format never changes...
+ results=soup.findAll('div', id='results')
+ pkgname=''
+ try:
+ temp=results[0].a.string
+ fspos=temp.find('sf')
+ temp=temp[fspos+3:]
+ pkgpos=temp.find('/')
+ temp=temp[pkgpos+1:]
+
+ endpkgpos=temp.find('/')
+ pkgname=temp[0:endpkgpos]
+ except:
+ print 'error: file \'%s\' not found in opengrok' % filename
+ else:
+ print 'first package with target %s: %s' % (searchterm,pkgname)
+
+ return True
+
+def findpackageforheader(filename, project):
+ searchterm=filename
+ searchurl = 'https://developer.symbian.org/xref/sfl/search?q=&defs=&refs=&path=%s&hist=&project=%%2F%s'
+ url = searchurl % (searchterm, project)
+
+ req = urllib2.Request(url)
+
+ response = urllib2.urlopen(req)
+
+ doc=response.read()
+
+ if doc.find('Restricted access') != -1:
+ if(login()):
+ # try again after login
+ response = urllib2.urlopen(req)
+ doc=response.read()
+ else:
+ return False
+
+
+ # BeatifulSoup chokes on some javascript, so we cut away everything before the <body>
+ try:
+ bodystart=doc.find('<body>')
+ doc = doc[bodystart:]
+ except:
+ pass
+
+ soup=BeautifulSoup(doc)
+
+ # let's hope the HTML format never changes...
+ results=soup.findAll('div', id='results')
+ pkgname=''
+ try:
+ temp=results[0].a.string
+ fspos=temp.find('sf')
+ temp=temp[fspos+3:]
+ pkgpos=temp.find('/')
+ temp=temp[pkgpos+1:]
+
+ endpkgpos=temp.find('/')
+ pkgname=temp[0:endpkgpos]
+ except:
+ print 'error: file \'%s\' not found in opengrok' % filename
+ else:
+ print 'package:', pkgname
+
+ return True
+
+
+if len(sys.argv) < 2:
+ print 'usage: findpackage.py <filename> [project]'
+ exit()
+
+filename = sys.argv[1]
+
+if len(sys.argv) == 3:
+ project = sys.argv[2]
+else:
+ project = 'Symbian2'
+
+if filename.endswith('.lib') or filename.endswith('.dll'):
+ findpackageforlibrary(filename, project)
+else:
+ findpackageforheader(filename, project)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/python/ispublic/ispublic.py Wed Nov 18 14:00:16 2009 +0000
@@ -0,0 +1,38 @@
+import sys
+
+def strip_path(pathname):
+ pathname = pathname.strip()
+ while pathname.find('/') != -1:
+ x=pathname.find('/')
+ pathname = pathname[x+1:]
+
+ while pathname.find('\\') != -1:
+ x=pathname.find('\\')
+ pathname = pathname[x+1:]
+
+ #print 'strip_path returning %s' % pathname
+ return pathname
+
+
+res_f = open('symbian_2_public_api_list.txt')
+
+pubapis=[]
+
+for line in res_f:
+ pathname = line[0:len(line)-1]
+
+ filename = strip_path(pathname).lower()
+ pubapis.append(filename)
+
+
+
+def is_public(shortname):
+ fname=strip_path(shortname).lower()
+ #print 'finding %s in public apis' % fname
+
+ return fname in pubapis
+
+if (is_public(sys.argv[1])):
+ print 'Public'
+else:
+ print 'Platform'
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/python/ispublic/symbian_2_public_api_list.txt Wed Nov 18 14:00:16 2009 +0000
@@ -0,0 +1,3648 @@
+epoc32/include/_sdpdefs.h
+epoc32/include/_sipcodecdefs.h
+epoc32/include/accmonitor.h
+epoc32/include/accmonitorcapabilities.h
+epoc32/include/accmonitorinfo.h
+epoc32/include/accmonitorinfo.inl
+epoc32/include/activeapdb.h
+epoc32/include/activefavouritesdbnotifier.h
+epoc32/include/aiftool.rh
+epoc32/include/aiwcommon.h
+epoc32/include/aiwcommon.hrh
+epoc32/include/aiwcommon.rh
+epoc32/include/aiwgenericparam.h
+epoc32/include/aiwgenericparam.hrh
+epoc32/include/aiwgenericparam.inl
+epoc32/include/aiwservicehandler.h
+epoc32/include/aiwvariant.h
+epoc32/include/aiwvariant.inl
+epoc32/include/aiwvarianttype.hrh
+epoc32/include/aknanim.hrh
+epoc32/include/aknanim.rh
+epoc32/include/aknapp.h
+epoc32/include/aknappui.h
+epoc32/include/aknbiditextutils.h
+epoc32/include/aknbitmapanimation.h
+epoc32/include/aknborders.h
+epoc32/include/aknbutton.h
+epoc32/include/akncheckboxsettingpage.h
+epoc32/include/aknchoicelist.h
+epoc32/include/aknclearer.h
+epoc32/include/akncolourselectiongrid.h
+epoc32/include/akncommondialogs.h
+epoc32/include/akncommondialogsdynmem.h
+epoc32/include/akncontext.h
+epoc32/include/akncontrol.h
+epoc32/include/akncustomtreeordering.h
+epoc32/include/akndef.hrh
+epoc32/include/akndescarraydecorator.h
+epoc32/include/akndialog.h
+epoc32/include/akndlgshut.h
+epoc32/include/akndoc.h
+epoc32/include/akneditstateindicator.h
+epoc32/include/aknedsts.h
+epoc32/include/aknedstsobs.h
+epoc32/include/aknfontaccess.h
+epoc32/include/aknfontcategory.hrh
+epoc32/include/aknfontidoffsets.hrh
+epoc32/include/aknform.h
+epoc32/include/akngloballistmsgquery.h
+epoc32/include/akngmsstylegrid.h
+epoc32/include/akngrid.h
+epoc32/include/akngridm.h
+epoc32/include/akngridview.h
+epoc32/include/aknhlistpanic.h
+epoc32/include/akniconarray.h
+epoc32/include/akniconobserver.h
+epoc32/include/akniconsrvclient.h
+epoc32/include/akniconutils.inl
+epoc32/include/aknindicatorcontainer.h
+epoc32/include/akninfopopupnotecontroller.h
+epoc32/include/akninfrm.h
+epoc32/include/akninputlanguageinfo.h
+epoc32/include/aknintermediate.h
+epoc32/include/akninternaliconutils.h
+epoc32/include/aknipfed.h
+epoc32/include/aknlayout2id.h
+epoc32/include/aknlistboxlayoutdecorator.h
+epoc32/include/aknlistboxsettingpage.h
+epoc32/include/aknlistquerycontrol.h
+epoc32/include/aknlistquerydialog.h
+epoc32/include/aknlists.h
+epoc32/include/aknlocationed.h
+epoc32/include/aknlongtapdetector.h
+epoc32/include/aknmessagequerycontrol.h
+epoc32/include/aknmessagequerydialog.h
+epoc32/include/aknmfnecommandobserver.h
+epoc32/include/aknmfnesettingpage.h
+epoc32/include/aknmultilinequerycontrol.h
+epoc32/include/aknnavide.h
+epoc32/include/aknnavidecoratorobserver.h
+epoc32/include/aknnavilabel.h
+epoc32/include/aknnaviobserver.h
+epoc32/include/aknnotecontrol.h
+epoc32/include/aknnotedialog.h
+epoc32/include/aknnotewrappers.h
+epoc32/include/aknnumed.h
+epoc32/include/aknnumedwin.h
+epoc32/include/aknnumseced.h
+epoc32/include/aknpanic.h
+epoc32/include/aknpasswordsettingpage.h
+epoc32/include/aknpictographdrawerinterface.h
+epoc32/include/aknpictographinterface.h
+epoc32/include/aknpictographinterface.inl
+epoc32/include/aknpointereventsuppressor.h
+epoc32/include/aknpopup.h
+epoc32/include/aknpopupfader.h
+epoc32/include/aknpopupfield.h
+epoc32/include/aknpopupfieldlist.h
+epoc32/include/aknpopupfieldtext.h
+epoc32/include/aknpopupheadingpane.h
+epoc32/include/aknpopuplayout.h
+epoc32/include/aknpopupnotify.h
+epoc32/include/aknpopupsettingpage.h
+epoc32/include/aknpreviewpopupcontentprovider.h
+epoc32/include/aknpreviewpopupcontroller.h
+epoc32/include/aknpreviewpopupobserver.h
+epoc32/include/aknprogressdialog.h
+epoc32/include/aknprogresstimer.h
+epoc32/include/aknquerycontrol.h
+epoc32/include/aknquerydata.h
+epoc32/include/aknquerydialog.h
+epoc32/include/aknqueryvalue.h
+epoc32/include/aknqueryvaluedate.h
+epoc32/include/aknqueryvalueduration.h
+epoc32/include/aknqueryvaluenumber.h
+epoc32/include/aknqueryvaluephone.h
+epoc32/include/aknqueryvaluetext.h
+epoc32/include/aknqueryvaluetime.h
+epoc32/include/aknradiobuttonsettingpage.h
+epoc32/include/aknsbasicbackgroundcontrolcontext.h
+epoc32/include/aknscbut.h
+epoc32/include/aknsconstants.h
+epoc32/include/aknsconstants.hrh
+epoc32/include/aknscontrolcontext.h
+epoc32/include/aknscreenmode.h
+epoc32/include/aknscrlb.h
+epoc32/include/aknsdatacontext.h
+epoc32/include/aknsdrawutils.h
+epoc32/include/aknselectionlist.h
+epoc32/include/aknserverapp.h
+epoc32/include/aknsettingitemlist.h
+epoc32/include/aknsettingpage.h
+epoc32/include/aknsinglecolumnstyletreelist.h
+epoc32/include/aknsinglestyletreelist.h
+epoc32/include/aknsitemid.inl
+epoc32/include/aknslayeredbackgroundcontrolcontext.h
+epoc32/include/aknslider.h
+epoc32/include/aknslidersettingpage.h
+epoc32/include/aknslistboxbackgroundcontrolcontext.h
+epoc32/include/aknsoundinfo.h
+epoc32/include/aknsoundsystem.h
+epoc32/include/aknsrleffect.h
+epoc32/include/aknsrleffectcontext.h
+epoc32/include/aknsrlparameter.h
+epoc32/include/aknstaticnotedialog.h
+epoc32/include/aknstyluspopupmenu.h
+epoc32/include/aknswallpaperutils.h
+epoc32/include/akntabobserver.h
+epoc32/include/akntextsettingpage.h
+epoc32/include/akntitlepaneobserver.h
+epoc32/include/akntoolbar.h
+epoc32/include/akntoolbarextension.h
+epoc32/include/akntoolbarobserver.h
+epoc32/include/akntouchpaneobserver.h
+epoc32/include/akntreelist.h
+epoc32/include/akntreelistconstants.h
+epoc32/include/akntreelistobserver.h
+epoc32/include/aknuniteditor.h
+epoc32/include/aknview.h
+epoc32/include/aknviewappui.h
+epoc32/include/aknvolumecontrol.h
+epoc32/include/aknvolumesettingpage.h
+epoc32/include/aknwaitdialog.h
+epoc32/include/aknwaitnotewrapper.h
+epoc32/include/aknwseventobserver.h
+epoc32/include/animation.h
+epoc32/include/animationconfig.h
+epoc32/include/animationdataprovider.h
+epoc32/include/animationevents.h
+epoc32/include/animationframe.h
+epoc32/include/animationgroup.h
+epoc32/include/animationmixins.h
+epoc32/include/animationticker.h
+epoc32/include/animationtls.h
+epoc32/include/animator.h
+epoc32/include/ansicomp.h
+epoc32/include/apaccesspointitem.h
+epoc32/include/apacmdln.h
+epoc32/include/apadbase.h
+epoc32/include/apadef.h
+epoc32/include/apaflrec.h
+epoc32/include/apaid.h
+epoc32/include/apamdr.h
+epoc32/include/apasvst.h
+epoc32/include/apcaptionfile.rh
+epoc32/include/apdatahandler.h
+epoc32/include/apengineconsts.h
+epoc32/include/apenginever.h
+epoc32/include/apfctlf.h
+epoc32/include/apffndr.h
+epoc32/include/apgcli.h
+epoc32/include/apgctl.h
+epoc32/include/apgdoor.h
+epoc32/include/apgicnfl.h
+epoc32/include/apgtask.h
+epoc32/include/apgwgnam.h
+epoc32/include/aplistitem.h
+epoc32/include/aplistitemlist.h
+epoc32/include/apmrec.h
+epoc32/include/apmrec.inl
+epoc32/include/apmstd.h
+epoc32/include/apnetworkitem.h
+epoc32/include/apnetworkitemlist.h
+epoc32/include/apnetworks.h
+epoc32/include/apparc.h
+epoc32/include/appinfo.rh
+epoc32/include/apselect.h
+epoc32/include/apsettingshandlercommons.h
+epoc32/include/apsettingshandlerui.h
+epoc32/include/aputils.h
+epoc32/include/asaltdefs.h
+epoc32/include/ascliclientutils.h
+epoc32/include/asclidefinitions.h
+epoc32/include/asclisession.h
+epoc32/include/asclisoundplay.h
+epoc32/include/asn1cons.h
+epoc32/include/asn1dec.h
+epoc32/include/asn1enc.h
+epoc32/include/asshdalarm.h
+epoc32/include/asshdbitflags.h
+epoc32/include/asshddefs.h
+epoc32/include/attrlut.h
+epoc32/include/audioeffectbase.h
+epoc32/include/audioeffectdata.h
+epoc32/include/audioequalizerbase.h
+epoc32/include/audioequalizerdata.h
+epoc32/include/audioequalizerutility.h
+epoc32/include/audioequalizerutilitydata.h
+epoc32/include/authority16.h
+epoc32/include/authority8.h
+epoc32/include/authoritycommon.h
+epoc32/include/avkon.hrh
+epoc32/include/avkon.rh
+epoc32/include/avkon.rsg
+epoc32/include/avkonicons.hrh
+epoc32/include/babackup.h
+epoc32/include/babitflags.h
+epoc32/include/bacell.h
+epoc32/include/bacline.h
+epoc32/include/baclipb.h
+epoc32/include/bacntf.h
+epoc32/include/badef.rh
+epoc32/include/badesca.h
+epoc32/include/baerrrsvr.rh
+epoc32/include/bafindf.h
+epoc32/include/baliba.h
+epoc32/include/bamatch.h
+epoc32/include/bamdesca.h
+epoc32/include/banamedplugins.h
+epoc32/include/banddev.h
+epoc32/include/barsc.h
+epoc32/include/barsc2.h
+epoc32/include/barsread.h
+epoc32/include/barsread2.h
+epoc32/include/basched.h
+epoc32/include/basicanimation.h
+epoc32/include/bassboostbase.h
+epoc32/include/bassboostdata.h
+epoc32/include/bassnd.h
+epoc32/include/bautils.h
+epoc32/include/bcardeng.h
+epoc32/include/bidi.h
+epoc32/include/biditext.h
+epoc32/include/bidivisual.h
+epoc32/include/bif.h
+epoc32/include/biftool2.rh
+epoc32/include/biodb.h
+epoc32/include/biouids.h
+epoc32/include/bitdev.h
+epoc32/include/bitdev.inl
+epoc32/include/bitmap.h
+epoc32/include/bitmaptransforms.h
+epoc32/include/bitmaptransforms.inl
+epoc32/include/bitstd.h
+epoc32/include/bluetooth/hci/hcierrors.h
+epoc32/include/bmpancli.h
+epoc32/include/brctldefs.h
+epoc32/include/brctldialogsprovider.h
+epoc32/include/brctldownloadobserver.h
+epoc32/include/brctlinterface.h
+epoc32/include/brctllayoutobserver.h
+epoc32/include/brctllinkresolver.h
+epoc32/include/brctlsoftkeysobserver.h
+epoc32/include/brctlspecialloadobserver.h
+epoc32/include/brctlwindowobserver.h
+epoc32/include/browserplugininterface.h
+epoc32/include/bsp.h
+epoc32/include/bsp.inl
+epoc32/include/bt_sock.h
+epoc32/include/bt_subscribe.h
+epoc32/include/btdevice.h
+epoc32/include/btextnotifiers.h
+epoc32/include/btmanclient.h
+epoc32/include/btmsgtypeuid.h
+epoc32/include/btmtmcmds.h
+epoc32/include/btnotifierapi.h
+epoc32/include/btsdp.h
+epoc32/include/btserversdkcrkeys.h
+epoc32/include/bttypes.h
+epoc32/include/c32comm.h
+epoc32/include/c32comm.inl
+epoc32/include/cacheman.h
+epoc32/include/caf/streamableptrarray.inl
+epoc32/include/cakncommondialogsbase.h
+epoc32/include/caknfilenamepromptdialog.h
+epoc32/include/caknfileselectiondialog.h
+epoc32/include/caknmemoryselectiondialog.h
+epoc32/include/caknmemoryselectiondialogmultidrive.h
+epoc32/include/caknmemoryselectionsettingitem.h
+epoc32/include/caknmemoryselectionsettingitemmultidrive.h
+epoc32/include/caknmemoryselectionsettingpage.h
+epoc32/include/calalarm.h
+epoc32/include/calcategory.h
+epoc32/include/calcategorymanager.h
+epoc32/include/calchangecallback.h
+epoc32/include/calcommon.h
+epoc32/include/calcontent.h
+epoc32/include/caldataexchange.h
+epoc32/include/caldataformat.h
+epoc32/include/calendarconverter.h
+epoc32/include/caleninterimutils.h
+epoc32/include/caleninterimutils2.h
+epoc32/include/calentry.h
+epoc32/include/calentryview.h
+epoc32/include/calinstance.h
+epoc32/include/calinstanceview.h
+epoc32/include/caliterator.h
+epoc32/include/calnotification.h
+epoc32/include/calprogresscallback.h
+epoc32/include/calrrule.h
+epoc32/include/calsession.h
+epoc32/include/caltime.h
+epoc32/include/caluser.h
+epoc32/include/cbioasyncwaiter.h
+epoc32/include/cbnfnode.h
+epoc32/include/cbnfparser.h
+epoc32/include/ccertattributefilter.h
+epoc32/include/cctcertinfo.h
+epoc32/include/cdbcols.h
+epoc32/include/cdblen.h
+epoc32/include/cdbover.inl
+epoc32/include/cdbpreftable.h
+epoc32/include/cdbstore.h
+epoc32/include/cdbstore.inl
+epoc32/include/cdbtemp.h
+epoc32/include/cdirectorylocalizer.h
+epoc32/include/cdownloadmgruibase.h
+epoc32/include/cdownloadmgruidownloadmenu.h
+epoc32/include/cdownloadmgruidownloadslist.h
+epoc32/include/cdownloadmgruilibregistry.h
+epoc32/include/cdownloadmgruiuserinteractions.h
+epoc32/include/cdtdmodel.h
+epoc32/include/cecombrowserplugininterface.h
+epoc32/include/cemailaccounts.h
+epoc32/include/cenrepnotifyhandler.h
+epoc32/include/centralrepository.h
+epoc32/include/certificateapps.h
+epoc32/include/cfragmentedstring.h
+epoc32/include/charactersetconverter.h
+epoc32/include/charactersetconverter.inl
+epoc32/include/charconv.h
+epoc32/include/chttpformencoder.h
+epoc32/include/clfcontentlisting.h
+epoc32/include/clfcontentlisting.hrh
+epoc32/include/clfcontentlisting.rh
+epoc32/include/clkdatetimeview.h
+epoc32/include/clkmdlobserver.h
+epoc32/include/clmkcategoryselectordlg.h
+epoc32/include/clmkeditordlg.h
+epoc32/include/clmklandmarkselectordlg.h
+epoc32/include/clock.h
+epoc32/include/cmapplicationsettingsui.h
+epoc32/include/cmarkedstack.h
+epoc32/include/cmarkedstack.inl
+epoc32/include/cmconnectionmethod.h
+epoc32/include/cmconnectionmethod.inl
+epoc32/include/cmconnectionmethoddef.h
+epoc32/include/cmdefconnvalues.h
+epoc32/include/cmdestination.h
+epoc32/include/cmessageaddress.h
+epoc32/include/cmessagedata.h
+epoc32/include/cmmanager.h
+epoc32/include/cmmanager.inl
+epoc32/include/cmmanagerdef.h
+epoc32/include/cmplugincsddef.h
+epoc32/include/cmplugindialcommondefs.h
+epoc32/include/cmpluginembdestinationdef.h
+epoc32/include/cmpluginhscsddef.h
+epoc32/include/cmpluginpacketdatadef.h
+epoc32/include/cmpluginvpndef.h
+epoc32/include/cmpluginwlandef.h
+epoc32/include/cmsvattachment.h
+epoc32/include/cmsvmimeheaders.h
+epoc32/include/cmsvrecipientlist.h
+epoc32/include/cmsvtechnologytypedefaultmtmsettings.h
+epoc32/include/cnftool.rh
+epoc32/include/cnode.h
+epoc32/include/cnode.inl
+epoc32/include/cnodeleteattribute.h
+epoc32/include/cntdb.h
+epoc32/include/cntdbobs.h
+epoc32/include/cntdef.h
+epoc32/include/cntfield.h
+epoc32/include/cntfilt.h
+epoc32/include/cntfldst.h
+epoc32/include/cntitem.h
+epoc32/include/cntvcard.h
+epoc32/include/cntview.h
+epoc32/include/cntviewbase.h
+epoc32/include/cntviewfindconfig.inl
+epoc32/include/coeaui.h
+epoc32/include/coeccntx.h
+epoc32/include/coecntrl.h
+epoc32/include/coecobs.h
+epoc32/include/coecoloruse.h
+epoc32/include/coecontrolarray.h
+epoc32/include/coedef.h
+epoc32/include/coeerror.h
+epoc32/include/coefepff.h
+epoc32/include/coefont.h
+epoc32/include/coefontprovider.h
+epoc32/include/coehelp.h
+epoc32/include/coeinput.h
+epoc32/include/coemain.h
+epoc32/include/coemain.inl
+epoc32/include/coemop.h
+epoc32/include/coesndpy.h
+epoc32/include/coetextdrawer.h
+epoc32/include/coeutils.h
+epoc32/include/coeview.h
+epoc32/include/commdb.h
+epoc32/include/commdb.inl
+epoc32/include/commdbconnpref.h
+epoc32/include/commdbconnpref.inl
+epoc32/include/commondialogs.hrh
+epoc32/include/commondialogs.rh
+epoc32/include/commonphoneparser.h
+epoc32/include/comms-infras/cftransportmacro.h
+epoc32/include/comms-infras/cs_mobility_apiext.h
+epoc32/include/commsdat.h
+epoc32/include/commsdattypeinfov1_1.h
+epoc32/include/commsdattypesv1_1.h
+epoc32/include/conarc.h
+epoc32/include/concnf.h
+epoc32/include/coneresloader.h
+epoc32/include/confndr.h
+epoc32/include/conlist.h
+epoc32/include/connect/sbdefs.h
+epoc32/include/connpref.h
+epoc32/include/conplugin.rh
+epoc32/include/constd.h
+epoc32/include/contentlistingfactory.h
+epoc32/include/convgeneratedcpp.h
+epoc32/include/convnames.h
+epoc32/include/convutils.h
+epoc32/include/coreapplicationuissdkcrkeys.h
+epoc32/include/cpbkaddressselect.h
+epoc32/include/cpbkcontactchangenotifier.h
+epoc32/include/cpbkcontacteditordlg.h
+epoc32/include/cpbkcontactiter.h
+epoc32/include/cpbkdatasaveappui.h
+epoc32/include/cpbkemailaddressselect.h
+epoc32/include/cpbkemailoversmsaddressselect.h
+epoc32/include/cpbkfieldinfo.h
+epoc32/include/cpbkidlefinder.h
+epoc32/include/cpbkmmsaddressselect.h
+epoc32/include/cpbkmultipleentryfetchdlg.h
+epoc32/include/cpbkphonenumberselect.h
+epoc32/include/cpbkphonenumberselectbase.h
+epoc32/include/cpbkpocaddressselect.h
+epoc32/include/cpbkselectfielddlg.h
+epoc32/include/cpbksingleentryfetchdlg.h
+epoc32/include/cpbksingleitemfetchdlg.h
+epoc32/include/cpbksmsaddressselect.h
+epoc32/include/cpbkvideonumberselect.h
+epoc32/include/cpbkviewstate.h
+epoc32/include/cpbkvoipaddressselect.h
+epoc32/include/crichbio.h
+epoc32/include/crulemarkedstack.h
+epoc32/include/crulemarkedstack.inl
+epoc32/include/cryptopanic.h
+epoc32/include/cryptotokenregistryinfo.rh
+epoc32/include/cs_port.h
+epoc32/include/cs_subconevents.h
+epoc32/include/cs_subconevents.inl
+epoc32/include/cs_subconparams.h
+epoc32/include/cs_subconparams.inl
+epoc32/include/csatelliteinfoui.h
+epoc32/include/csch_cli.h
+epoc32/include/csendasaccounts.h
+epoc32/include/csendasmessagetypes.h
+epoc32/include/csendingserviceinfo.h
+epoc32/include/csmsaccount.h
+epoc32/include/csmsemailfields.h
+epoc32/include/cstack.h
+epoc32/include/cstack.inl
+epoc32/include/csy.rh
+epoc32/include/ct.h
+epoc32/include/ct/mcttokeninterface.h
+epoc32/include/ct/rcpointerarray.h
+epoc32/include/ct/rmpointerarray.h
+epoc32/include/ct/tcttokenhandle.h
+epoc32/include/ct/tcttokenobjecthandle.h
+epoc32/include/customcommandtypes.h
+epoc32/include/d32dbms.h
+epoc32/include/d32dbms.inl
+epoc32/include/d32locd.inl
+epoc32/include/dclcrkeys.h
+epoc32/include/delimitedparser16.h
+epoc32/include/delimitedparser8.h
+epoc32/include/delimitedparsercommon.h
+epoc32/include/delimitedpath16.h
+epoc32/include/delimitedpath8.h
+epoc32/include/delimitedpathsegment16.h
+epoc32/include/delimitedpathsegment8.h
+epoc32/include/delimitedquery16.h
+epoc32/include/delimitedquery8.h
+epoc32/include/dial.h
+epoc32/include/dial.inl
+epoc32/include/dial_consts.h
+epoc32/include/directorylocalizer.rh
+epoc32/include/distanceattenuationbase.h
+epoc32/include/distanceattenuationdata.h
+epoc32/include/dns_qry.inl
+epoc32/include/documenthandler.h
+epoc32/include/domain/applications/browseruisdkcrkeys.h
+epoc32/include/domain/browseruisdkcrkeys.h
+epoc32/include/dopplerbase.h
+epoc32/include/dopplerdata.h
+epoc32/include/downloadmgrclient.h
+epoc32/include/downloadslistdlgobserver.h
+epoc32/include/driveinfo.h
+epoc32/include/driveinfo.inl
+epoc32/include/drmaudiosampleplayer.h
+epoc32/include/drmhelper.h
+epoc32/include/drmhelperserverinternalcrkeys.h
+epoc32/include/drmlicensechecker.h
+epoc32/include/dtdnode.h
+epoc32/include/dtdnode.inl
+epoc32/include/e32base.h
+epoc32/include/e32capability.h
+epoc32/include/e32cmn.h
+epoc32/include/e32cmn.inl
+epoc32/include/e32cons.h
+epoc32/include/e32const.h
+epoc32/include/e32def.h
+epoc32/include/e32des16.h
+epoc32/include/e32des8.h
+epoc32/include/e32err.h
+epoc32/include/e32event.h
+epoc32/include/e32hashtab.h
+epoc32/include/e32keys.h
+epoc32/include/e32kpan.h
+epoc32/include/e32lang.h
+epoc32/include/e32math.h
+epoc32/include/e32math.inl
+epoc32/include/e32msgqueue.h
+epoc32/include/e32msgqueue.inl
+epoc32/include/e32panic.h
+epoc32/include/e32property.h
+epoc32/include/e32std.h
+epoc32/include/e32test.h
+epoc32/include/ecam.h
+epoc32/include/ecam/ecamconstants.h
+epoc32/include/ecamadvsettings.h
+epoc32/include/ecamadvsettingsuids.hrh
+epoc32/include/ecamimageprocessing.h
+epoc32/include/ecamuids.hrh
+epoc32/include/ecmtclient.h
+epoc32/include/ecom/ecom.h
+epoc32/include/ecom/ecomerrorcodes.h
+epoc32/include/ecom/ecomresolverparams.h
+epoc32/include/ecom/ecomresolverparams.inl
+epoc32/include/ecom/implementationinformation.h
+epoc32/include/ecom/implementationproxy.h
+epoc32/include/ecom/publicregistry.h
+epoc32/include/ecom/registryinfo.rh
+epoc32/include/ecom/registryinfov2.rh
+epoc32/include/ecom/resolver.h
+epoc32/include/eikalert.h
+epoc32/include/eikalign.h
+epoc32/include/eikamnt.h
+epoc32/include/eikapp.h
+epoc32/include/eikappui.h
+epoc32/include/eikaufty.h
+epoc32/include/eikbctrl.h
+epoc32/include/eikbgfty.h
+epoc32/include/eikbhelp.h
+epoc32/include/eikbtgpc.h
+epoc32/include/eikbtgps.h
+epoc32/include/eikbutb.h
+epoc32/include/eikcal.h
+epoc32/include/eikcapc.h
+epoc32/include/eikcapca.h
+epoc32/include/eikccpu.h
+epoc32/include/eikclb.h
+epoc32/include/eikcmbut.h
+epoc32/include/eikcmobs.h
+epoc32/include/eikcoctlpanic.h
+epoc32/include/eikcolor.hrh
+epoc32/include/eikconso.h
+epoc32/include/eikctgrp.h
+epoc32/include/eikdebug.h
+epoc32/include/eikdef.h
+epoc32/include/eikdialg.h
+epoc32/include/eikdll.h
+epoc32/include/eikdoc.h
+epoc32/include/eikdpobs.h
+epoc32/include/eikedwin.h
+epoc32/include/eikedwob.h
+epoc32/include/eikembal.h
+epoc32/include/eikenv.h
+epoc32/include/eikfctry.h
+epoc32/include/eikfnlab.h
+epoc32/include/eikfpne.h
+epoc32/include/eikfutil.h
+epoc32/include/eikgted.h
+epoc32/include/eikhfdlg.h
+epoc32/include/eikhkeyc.h
+epoc32/include/eikhkeyt.h
+epoc32/include/eikimage.h
+epoc32/include/eikinfo.h
+epoc32/include/eikkeys.h
+epoc32/include/eiklay.h
+epoc32/include/eiklbbut.h
+epoc32/include/eiklbd.h
+epoc32/include/eiklbed.h
+epoc32/include/eiklbi.h
+epoc32/include/eiklbm.h
+epoc32/include/eiklbo.h
+epoc32/include/eiklbv.h
+epoc32/include/eiklbx.h
+epoc32/include/eikmenub.h
+epoc32/include/eikmenup.h
+epoc32/include/eikmfne.h
+epoc32/include/eikmnbut.h
+epoc32/include/eikmobs.h
+epoc32/include/eikmover.h
+epoc32/include/eikmsg.h
+epoc32/include/eiknotapi.h
+epoc32/include/eikon.hrh
+epoc32/include/eikon.rh
+epoc32/include/eikpicturefactory.h
+epoc32/include/eikproc.h
+epoc32/include/eikprogi.h
+epoc32/include/eikrted.h
+epoc32/include/eikrutil.h
+epoc32/include/eiksbfrm.h
+epoc32/include/eiksbobs.h
+epoc32/include/eikscbut.h
+epoc32/include/eikscrlb.h
+epoc32/include/eikseced.h
+epoc32/include/eikslb.h
+epoc32/include/eikspace.h
+epoc32/include/eikspmod.h
+epoc32/include/eikstart.h
+epoc32/include/eikthumb.h
+epoc32/include/eiktxlbm.h
+epoc32/include/eiktxlbx.h
+epoc32/include/eikunder.h
+epoc32/include/eikvcurs.h
+epoc32/include/emsinformationelement.inl
+epoc32/include/environmentalreverbbase.h
+epoc32/include/environmentalreverbdata.h
+epoc32/include/environmentalreverbutility.h
+epoc32/include/environmentalreverbutilitydata.h
+epoc32/include/epos_cposlandmarkdatabaseextended.h
+epoc32/include/epos_cposlandmarkencoder.h
+epoc32/include/epos_cposlandmarkparser.h
+epoc32/include/epos_cposlandmarksearch.h
+epoc32/include/epos_cposlmareacriteria.h
+epoc32/include/epos_cposlmcategorycriteria.h
+epoc32/include/epos_cposlmcategorymanager.h
+epoc32/include/epos_cposlmcatnamecriteria.h
+epoc32/include/epos_cposlmcompositecriteria.h
+epoc32/include/epos_cposlmdatabasemanager.h
+epoc32/include/epos_cposlmidlistcriteria.h
+epoc32/include/epos_cposlmitemiterator.h
+epoc32/include/epos_cposlmmultidbsearch.h
+epoc32/include/epos_cposlmnearestcriteria.h
+epoc32/include/epos_cposlmoperation.h
+epoc32/include/epos_cposlmoperation.inl
+epoc32/include/epos_cposlmpartialreadparameters.h
+epoc32/include/epos_cposlmsearchcriteria.h
+epoc32/include/epos_cposlmtextcriteria.h
+epoc32/include/epos_landmarks.h
+epoc32/include/epos_poslandmarkserialization.h
+epoc32/include/epos_poslmcategoryserialization.h
+epoc32/include/epos_tposlmdatabaseevent.h
+epoc32/include/epos_tposlmdatabasesettings.h
+epoc32/include/epos_tposlmsortpref.h
+epoc32/include/errorui.h
+epoc32/include/es_enum.h
+epoc32/include/es_enum.inl
+epoc32/include/es_prot.inl
+epoc32/include/es_sock.h
+epoc32/include/es_sock.inl
+epoc32/include/escapeutils.h
+epoc32/include/estatus.h
+epoc32/include/etel.h
+epoc32/include/etel3rdparty.h
+epoc32/include/etelmm.h
+epoc32/include/etelpckt.inl
+epoc32/include/eui_addr.h
+epoc32/include/ewsd.h
+epoc32/include/exifmodify.h
+epoc32/include/exifread.h
+epoc32/include/exiftag.h
+epoc32/include/extendedmtmids.hrh
+epoc32/include/exterror.h
+epoc32/include/ezbufman.h
+epoc32/include/ezcompressor.h
+epoc32/include/ezdecompressor.h
+epoc32/include/ezfilebuffer.h
+epoc32/include/ezgzip.h
+epoc32/include/ezlib.h
+epoc32/include/ezliberrorcodes.h
+epoc32/include/ezstream.h
+epoc32/include/f32file.h
+epoc32/include/f32file.inl
+epoc32/include/f32fsys.inl
+epoc32/include/favouritesdb.h
+epoc32/include/favouritesdbincremental.h
+epoc32/include/favouritesdbnotifier.h
+epoc32/include/favouritesdbobserver.h
+epoc32/include/favouritesfile.h
+epoc32/include/favouritesfile.inl
+epoc32/include/favouriteshandle.h
+epoc32/include/favouriteshandle.inl
+epoc32/include/favouritesitem.h
+epoc32/include/favouritesitemdata.h
+epoc32/include/favouritesitemlist.h
+epoc32/include/favouriteslimits.h
+epoc32/include/favouritessession.h
+epoc32/include/favouritessession.inl
+epoc32/include/favouriteswapap.h
+epoc32/include/faxdefn.h
+epoc32/include/fbs.h
+epoc32/include/featdiscovery.h
+epoc32/include/featureinfo.h
+epoc32/include/fepbase.h
+epoc32/include/fepbconfig.h
+epoc32/include/fepbutils.h
+epoc32/include/fepitfr.h
+epoc32/include/fepplugin.h
+epoc32/include/fepplugin.inl
+epoc32/include/finditemengine.h
+epoc32/include/flash_ui.h
+epoc32/include/fldbase.h
+epoc32/include/fldbltin.h
+epoc32/include/fldinfo.h
+epoc32/include/fntstore.h
+epoc32/include/fontids.hrh
+epoc32/include/frmconst.h
+epoc32/include/frmframe.h
+epoc32/include/frmlaydt.h
+epoc32/include/frmpage.h
+epoc32/include/frmparam.h
+epoc32/include/frmprint.h
+epoc32/include/frmtlay.h
+epoc32/include/frmtview.h
+epoc32/include/frmvis.h
+epoc32/include/gcce/gcce.h
+epoc32/include/gdi.h
+epoc32/include/gdi.inl
+epoc32/include/gfxtranseffect/gfxtransadapter.h
+epoc32/include/gifscaler.h
+epoc32/include/gles/egl.h
+epoc32/include/gles/egldisplaypropertydef.h
+epoc32/include/gles/egltypes.h
+epoc32/include/gles/gl.h
+epoc32/include/graphics/blendingalgorithms.inl
+epoc32/include/graphicsaccelerator.h
+epoc32/include/grdcells.h
+epoc32/include/grddef.h
+epoc32/include/grdprint.h
+epoc32/include/grdprint.inl
+epoc32/include/grdstd.h
+epoc32/include/grdstd.inl
+epoc32/include/gsmubuf.h
+epoc32/include/gsmuelem.h
+epoc32/include/gsmuelem.inl
+epoc32/include/gsmuetel.h
+epoc32/include/gsmuetel.inl
+epoc32/include/gsmumsg.h
+epoc32/include/gsmumsg.inl
+epoc32/include/gsmunmspacemobmsg.h
+epoc32/include/gsmunmspacemobph.h
+epoc32/include/gsmunmspacemobstore.h
+epoc32/include/gsmupdu.h
+epoc32/include/gsmupdu.inl
+epoc32/include/gulalign.h
+epoc32/include/gulbordr.h
+epoc32/include/gulcolor.h
+epoc32/include/guldef.h
+epoc32/include/gulfont.h
+epoc32/include/gulfont.hrh
+epoc32/include/gulftflg.hrh
+epoc32/include/gulicon.h
+epoc32/include/gulutil.h
+epoc32/include/hash.h
+epoc32/include/hcierrors.h
+epoc32/include/hlplch.h
+epoc32/include/hlpmodel.h
+epoc32/include/http.h
+epoc32/include/http/cauthenticationfilterinterface.h
+epoc32/include/http/cecomfilter.h
+epoc32/include/http/framework/csecuritypolicy.h
+epoc32/include/http/framework/csecuritypolicy.inl
+epoc32/include/http/mhttpauthenticationcallback.h
+epoc32/include/http/mhttpdatasupplier.h
+epoc32/include/http/mhttpfilter.h
+epoc32/include/http/mhttpfilterbase.h
+epoc32/include/http/mhttpfiltercreationcallback.h
+epoc32/include/http/mhttpsessioneventcallback.h
+epoc32/include/http/mhttptransactioncallback.h
+epoc32/include/http/rhttpconnectioninfo.h
+epoc32/include/http/rhttpfiltercollection.h
+epoc32/include/http/rhttpheaders.h
+epoc32/include/http/rhttpmessage.h
+epoc32/include/http/rhttppropertyset.h
+epoc32/include/http/rhttprequest.h
+epoc32/include/http/rhttpresponse.h
+epoc32/include/http/rhttpsession.h
+epoc32/include/http/rhttptransaction.h
+epoc32/include/http/rhttptransactionpropertyset.h
+epoc32/include/http/tfilterconfigurationiter.h
+epoc32/include/http/tfilterinformation.h
+epoc32/include/http/thttpevent.h
+epoc32/include/http/thttpevent.inl
+epoc32/include/http/thttpfilterhandle.h
+epoc32/include/http/thttpfilteriterator.h
+epoc32/include/http/thttpfilterregistration.h
+epoc32/include/http/thttphdrfielditer.h
+epoc32/include/http/thttphdrval.h
+epoc32/include/httpdownloadmgrcommon.h
+epoc32/include/httperr.h
+epoc32/include/httpstd.h
+epoc32/include/httpstringconstants.h
+epoc32/include/hwrmlight.h
+epoc32/include/hwrmpowerstatesdkpskeys.h
+epoc32/include/hwrmvibra.h
+epoc32/include/hwrmvibrasdkcrkeys.h
+epoc32/include/iapprefs.h
+epoc32/include/icl/icl_uids.hrh
+epoc32/include/icl/imagecodec.h
+epoc32/include/icl/imagecodecdata.h
+epoc32/include/icl/imageconstruct.h
+epoc32/include/icl/imagedata.h
+epoc32/include/icl/imageplugin.h
+epoc32/include/icl/imageprocessor.h
+epoc32/include/icl/imagetransform.hrh
+epoc32/include/icl/imagetransformpaniccodes.h
+epoc32/include/icl/imagetransformplugin.h
+epoc32/include/icl/imagetransformpluginext.h
+epoc32/include/iclanimationdataprovider.h
+epoc32/include/imageconversion.h
+epoc32/include/imagetransform.h
+epoc32/include/imapcmds.h
+epoc32/include/imapconnectionobserver.h
+epoc32/include/imapset.h
+epoc32/include/imclient.h
+epoc32/include/imconnection.h
+epoc32/include/imconnection.inl
+epoc32/include/imcvcodc.h
+epoc32/include/imcvcodc.inl
+epoc32/include/imerrors.h
+epoc32/include/imlauncherplugin.h
+epoc32/include/imlauncherplugin.inl
+epoc32/include/impcmtm.h
+epoc32/include/imsk.h
+epoc32/include/in6_if.h
+epoc32/include/in6_opt.h
+epoc32/include/in_sock.h
+epoc32/include/inet6err.h
+epoc32/include/inetprottextutils.h
+epoc32/include/ip_subconparams.h
+epoc32/include/ip_subconparams.inl
+epoc32/include/ipaddr.h
+epoc32/include/ir_sock.h
+epoc32/include/irmsgtypeuid.h
+epoc32/include/irmtmcmds.h
+epoc32/include/jri.h
+epoc32/include/lafmain.h
+epoc32/include/lafpanic.h
+epoc32/include/lafpublc.h
+epoc32/include/lafpublc.hrh
+epoc32/include/lbs.h
+epoc32/include/lbsclasstypes.h
+epoc32/include/lbscommon.h
+epoc32/include/lbscriteria.h
+epoc32/include/lbserrors.h
+epoc32/include/lbsfieldids.h
+epoc32/include/lbsipc.h
+epoc32/include/lbsposition.h
+epoc32/include/lbspositioninfo.h
+epoc32/include/lbsrequestor.h
+epoc32/include/lbssatellite.h
+epoc32/include/libc/_ansi.h
+epoc32/include/libc/arpa/ftp.h
+epoc32/include/libc/arpa/inet.h
+epoc32/include/libc/arpa/nameser.h
+epoc32/include/libc/arpa/telnet.h
+epoc32/include/libc/arpa/tftp.h
+epoc32/include/libc/assert.h
+epoc32/include/libc/ctype.h
+epoc32/include/libc/dirent.h
+epoc32/include/libc/errno.h
+epoc32/include/libc/fcntl.h
+epoc32/include/libc/ieeefp.h
+epoc32/include/libc/limits.h
+epoc32/include/libc/locale.h
+epoc32/include/libc/machine/ieeefp.h
+epoc32/include/libc/machine/types.h
+epoc32/include/libc/math.h
+epoc32/include/libc/netdb.h
+epoc32/include/libc/netdb_r.h
+epoc32/include/libc/netinet/arp.h
+epoc32/include/libc/netinet/in.h
+epoc32/include/libc/netinet/ip.h
+epoc32/include/libc/netinet/ip_icmp.h
+epoc32/include/libc/netinet/tcp.h
+epoc32/include/libc/netinet/tcp_fsm.h
+epoc32/include/libc/netinet/tcp_seq.h
+epoc32/include/libc/netinet/udp.h
+epoc32/include/libc/process.h
+epoc32/include/libc/pwd.h
+epoc32/include/libc/reent.h
+epoc32/include/libc/setjmp.h
+epoc32/include/libc/signal.h
+epoc32/include/libc/stdarg.h
+epoc32/include/libc/stdarg_e.h
+epoc32/include/libc/stddef.h
+epoc32/include/libc/stdio.h
+epoc32/include/libc/stdio_r.h
+epoc32/include/libc/stdlib.h
+epoc32/include/libc/stdlib_r.h
+epoc32/include/libc/string.h
+epoc32/include/libc/sys/_types.h
+epoc32/include/libc/sys/config.h
+epoc32/include/libc/sys/dirent.h
+epoc32/include/libc/sys/errno.h
+epoc32/include/libc/sys/fcntl.h
+epoc32/include/libc/sys/file.h
+epoc32/include/libc/sys/ioctl.h
+epoc32/include/libc/sys/param.h
+epoc32/include/libc/sys/reent.h
+epoc32/include/libc/sys/resource.h
+epoc32/include/libc/sys/serial.h
+epoc32/include/libc/sys/signal.h
+epoc32/include/libc/sys/socket.h
+epoc32/include/libc/sys/stat.h
+epoc32/include/libc/sys/stdio_t.h
+epoc32/include/libc/sys/time.h
+epoc32/include/libc/sys/times.h
+epoc32/include/libc/sys/types.h
+epoc32/include/libc/sys/unistd.h
+epoc32/include/libc/sys/wait.h
+epoc32/include/libc/time.h
+epoc32/include/libc/unistd.h
+epoc32/include/liblogger.h
+epoc32/include/linebreak.h
+epoc32/include/listenerdopplerbase.h
+epoc32/include/listenerlocationbase.h
+epoc32/include/listenerorientationbase.h
+epoc32/include/localtypes.h
+epoc32/include/locationbase.h
+epoc32/include/locationdata.h
+epoc32/include/logcli.h
+epoc32/include/logcli.inl
+epoc32/include/logclientchangeobserver.h
+epoc32/include/logeng.h
+epoc32/include/logview.h
+epoc32/include/logview.inl
+epoc32/include/logviewchangeobserver.h
+epoc32/include/logwrap.h
+epoc32/include/logwrap.hrh
+epoc32/include/logwrap.inl
+epoc32/include/logwrap.rsg
+epoc32/include/loudnessbase.h
+epoc32/include/loudnessdata.h
+epoc32/include/maknfilefilter.h
+epoc32/include/maknfileselectionobserver.h
+epoc32/include/maknmemoryselectionobserver.h
+epoc32/include/maudioeffectobserver.h
+epoc32/include/maudioequalizerobserver.h
+epoc32/include/mbassboostobserver.h
+epoc32/include/mcertstore.h
+epoc32/include/mclfchangeditemobserver.h
+epoc32/include/mclfcontentlistingengine.h
+epoc32/include/mclfcustomgrouper.h
+epoc32/include/mclfcustomsorter.h
+epoc32/include/mclfitem.h
+epoc32/include/mclfitemlistmodel.h
+epoc32/include/mclfmodifiableitem.h
+epoc32/include/mclfoperationobserver.h
+epoc32/include/mclfpostfilter.h
+epoc32/include/mclfprocessobserver.h
+epoc32/include/mclfsortingstyle.h
+epoc32/include/mcontactbackupobserver.h
+epoc32/include/mctcertapps.h
+epoc32/include/mctwritablecertstore.inl
+epoc32/include/mcustomcommand.h
+epoc32/include/mcustominterface.h
+epoc32/include/mda/client/resource.h
+epoc32/include/mda/client/utility.h
+epoc32/include/mda/common/audio.h
+epoc32/include/mda/common/audio.hrh
+epoc32/include/mda/common/audiostream.hrh
+epoc32/include/mda/common/base.h
+epoc32/include/mda/common/base.hrh
+epoc32/include/mda/common/base.inl
+epoc32/include/mda/common/controller.h
+epoc32/include/mda/common/port.h
+epoc32/include/mda/common/port.hrh
+epoc32/include/mda/common/resource.h
+epoc32/include/mda/common/resource.hrh
+epoc32/include/mda/common/video.h
+epoc32/include/mda/common/video.hrh
+epoc32/include/mda/common/video.inl
+epoc32/include/mdaaudioinputstream.h
+epoc32/include/mdaaudiooutputstream.h
+epoc32/include/mdaaudiosampleeditor.h
+epoc32/include/mdaaudiosampleplayer.h
+epoc32/include/mdaaudiotoneplayer.h
+epoc32/include/mdaframeinfo.h
+epoc32/include/mdaimageconverter.h
+epoc32/include/mdataproviderobserver.h
+epoc32/include/mdistanceattenuationobserver.h
+epoc32/include/mdopplerobserver.h
+epoc32/include/mdptx.h
+epoc32/include/mediafiletypes.hrh
+epoc32/include/medobsrv.h
+epoc32/include/menvironmentalreverbobserver.h
+epoc32/include/messagingsdkcrkeys.h
+epoc32/include/metadatabase.h
+epoc32/include/mframeworksp.h
+epoc32/include/mgfetch.h
+epoc32/include/midiclientutility.h
+epoc32/include/miut_err.h
+epoc32/include/miutconv.h
+epoc32/include/miutdef.h
+epoc32/include/miuthdr.h
+epoc32/include/miuthdr.inl
+epoc32/include/miutmsg.h
+epoc32/include/miutpars.h
+epoc32/include/miutset.h
+epoc32/include/miutstd.hrh
+epoc32/include/mlistenerdopplerobserver.h
+epoc32/include/mlistenerlocationobserver.h
+epoc32/include/mlistenerorientationobserver.h
+epoc32/include/mlocationobserver.h
+epoc32/include/mloudnessobserver.h
+epoc32/include/mm/mmcaf.h
+epoc32/include/mmf/common/mmcaf.h
+epoc32/include/mmf/common/mmfaudio.h
+epoc32/include/mmf/common/mmfbase.h
+epoc32/include/mmf/common/mmfcontroller.h
+epoc32/include/mmf/common/mmfcontrollerframework.h
+epoc32/include/mmf/common/mmfcontrollerframeworkbase.h
+epoc32/include/mmf/common/mmfcontrollerpluginresolver.h
+epoc32/include/mmf/common/mmfdrmcustomcommands.h
+epoc32/include/mmf/common/mmfdurationinfocustomcommands.h
+epoc32/include/mmf/common/mmferrors.h
+epoc32/include/mmf/common/mmffourcc.h
+epoc32/include/mmf/common/mmfipc.inl
+epoc32/include/mmf/common/mmfmeta.h
+epoc32/include/mmf/common/mmfmididatacommon.h
+epoc32/include/mmf/common/mmfpaniccodes.h
+epoc32/include/mmf/common/mmfstandardcustomcommands.h
+epoc32/include/mmf/common/mmfutilities.h
+epoc32/include/mmf/common/mmfutilities.inl
+epoc32/include/mmf/common/mmfvideo.h
+epoc32/include/mmf/plugin/mmfplugininterfaceuids.hrh
+epoc32/include/mmf/server/mmfbuffer.h
+epoc32/include/mmf/server/mmfbuffer.hrh
+epoc32/include/mmf/server/mmfdatabuffer.h
+epoc32/include/mmf/server/mmfdatasink.h
+epoc32/include/mmf/server/mmfdatasource.h
+epoc32/include/mmf/server/mmfdatasourcesink.hrh
+epoc32/include/mmfplugininterfaceuids.hrh
+epoc32/include/mmfropcustomcommandconstants.h
+epoc32/include/mmgfetchcanceler.h
+epoc32/include/mmgfetchverifier.h
+epoc32/include/mmsclient.h
+epoc32/include/mmsclient.inl
+epoc32/include/mmsconst.h
+epoc32/include/mmserrors.h
+epoc32/include/mmsgbiocontrol.h
+epoc32/include/mmsgbiocontrolextension.h
+epoc32/include/mmsvattachmentmanager.h
+epoc32/include/mmsvattachmentmanagersync.h
+epoc32/include/mncnnotification.h
+epoc32/include/mncnnotification.inl
+epoc32/include/morientationobserver.h
+epoc32/include/mpbkcontactdbobserver.h
+epoc32/include/mpbkeditoroktoexitcallback.h
+epoc32/include/mpbkfetchcallbacks.h
+epoc32/include/mpbkfetchdlgselection.h
+epoc32/include/mpbkfielddata.h
+epoc32/include/mpbkthumbnailoperationobservers.h
+epoc32/include/mproengactiveprofileobserver.h
+epoc32/include/mproengalerttoneseeker.h
+epoc32/include/mproengalerttoneseekerobserver.h
+epoc32/include/mproengengine.h
+epoc32/include/mproengnotifyhandler.h
+epoc32/include/mproengprofile.h
+epoc32/include/mproengprofileactivationobserver.h
+epoc32/include/mproengprofilename.h
+epoc32/include/mproengprofilenamearray.h
+epoc32/include/mproengprofilenamearrayobserver.h
+epoc32/include/mproengprofileobserver.h
+epoc32/include/mproengtones.h
+epoc32/include/mproengtonesettings.h
+epoc32/include/mroomlevelobserver.h
+epoc32/include/msenauthenticationprovider.h
+epoc32/include/msenconsumerpolicy.h
+epoc32/include/msencontenthandlerclient.h
+epoc32/include/msenelement.h
+epoc32/include/msenfragment.h
+epoc32/include/msenhostlet.h
+epoc32/include/msenhostletrequest.h
+epoc32/include/msenhostletresponse.h
+epoc32/include/msenidentityprovideridarray.h
+epoc32/include/msenmessage.h
+epoc32/include/msenproperties.h
+epoc32/include/msenproperty.h
+epoc32/include/msenproviderpolicy.h
+epoc32/include/msenserviceconsumer.h
+epoc32/include/msenservicedescription.h
+epoc32/include/msenservicepolicy.h
+epoc32/include/msgbiocontrol.h
+epoc32/include/msgbiocontrolobserver.h
+epoc32/include/msgbiouids.h
+epoc32/include/msgeditor.hrh
+epoc32/include/msourcedopplerobserver.h
+epoc32/include/msourcelocationobserver.h
+epoc32/include/msourceorientationobserver.h
+epoc32/include/mstereowideningobserver.h
+epoc32/include/msvapi.h
+epoc32/include/msvapi.inl
+epoc32/include/msventry.h
+epoc32/include/msventry.inl
+epoc32/include/msvfind.h
+epoc32/include/msvfind.inl
+epoc32/include/msvftext.h
+epoc32/include/msvftext.inl
+epoc32/include/msvids.h
+epoc32/include/msvipc.h
+epoc32/include/msvipc.inl
+epoc32/include/msvrcpt.h
+epoc32/include/msvrcpt.inl
+epoc32/include/msvreg.h
+epoc32/include/msvreg.inl
+epoc32/include/msvruids.h
+epoc32/include/msvstd.h
+epoc32/include/msvstd.hrh
+epoc32/include/msvstd.inl
+epoc32/include/msvstore.h
+epoc32/include/msvuids.h
+epoc32/include/mtclbase.h
+epoc32/include/mtclreg.h
+epoc32/include/mtmconfig.rh
+epoc32/include/mtmdef.h
+epoc32/include/mtmdef.hrh
+epoc32/include/mtmuibas.h
+epoc32/include/mtmuidef.hrh
+epoc32/include/mtmuids.h
+epoc32/include/mtsr.h
+epoc32/include/mtud.hrh
+epoc32/include/mtud.rh
+epoc32/include/mtudcbas.h
+epoc32/include/mtudreg.h
+epoc32/include/mtuireg.h
+epoc32/include/mturutils.h
+epoc32/include/mwappluginsp.h
+epoc32/include/mwbxmlconverterobserver.h
+epoc32/include/networking/qos3gpp_subconparams.h
+epoc32/include/networking/qos3gpp_subconparams.inl
+epoc32/include/nifman.h
+epoc32/include/nifvar.h
+epoc32/include/np_defines.h
+epoc32/include/npapi.h
+epoc32/include/npupp.h
+epoc32/include/numberconversion.h
+epoc32/include/obex.h
+epoc32/include/obexbase.h
+epoc32/include/obexbaseobject.h
+epoc32/include/obexbttransportinfo.h
+epoc32/include/obexclient.h
+epoc32/include/obexconstants.h
+epoc32/include/obexfinalpacketobserver.h
+epoc32/include/obexheaderlist.h
+epoc32/include/obexheaders.h
+epoc32/include/obexirtransportinfo.h
+epoc32/include/obexobjects.h
+epoc32/include/obexpanics.h
+epoc32/include/obexserver.h
+epoc32/include/obextransportinfo.h
+epoc32/include/obextypes.h
+epoc32/include/obsolete/protypes.h
+epoc32/include/ocrcommon.h
+epoc32/include/ocrsrv.h
+epoc32/include/offop.inl
+epoc32/include/oma2agent.h
+epoc32/include/openfont.h
+epoc32/include/orientationbase.h
+epoc32/include/orientationdata.h
+epoc32/include/palette.h
+epoc32/include/pathconfiguration.hrh
+epoc32/include/pathinfo.h
+epoc32/include/pbkdatasaveappui.hrh
+epoc32/include/pbkfields.hrh
+epoc32/include/pbkiconid.hrh
+epoc32/include/pbkiconinfo.h
+epoc32/include/pdrport.h
+epoc32/include/pdrstore.h
+epoc32/include/pkixcertchain.h
+epoc32/include/pkixvalidationresult.h
+epoc32/include/pls.h
+epoc32/include/pluginadapterinterface.h
+epoc32/include/pop3cmds.h
+epoc32/include/pop3set.h
+epoc32/include/popcmtm.h
+epoc32/include/pragmamessage.h
+epoc32/include/prcpucfg.h
+epoc32/include/prninf.h
+epoc32/include/prnprev.h
+epoc32/include/prnsetup.h
+epoc32/include/prnuids.h
+epoc32/include/proengfactory.h
+epoc32/include/profile.hrh
+epoc32/include/profileenginesdkcrkeys.h
+epoc32/include/prtypes.h
+epoc32/include/pticompositiondataif.h
+epoc32/include/ptidefs.h
+epoc32/include/ptidefs.inl
+epoc32/include/ptiengine.h
+epoc32/include/ptikeymappings.h
+epoc32/include/ptilanguage.h
+epoc32/include/ptilanguage.inl
+epoc32/include/ptilanguagedatabase.h
+epoc32/include/ptiobserver.h
+epoc32/include/ptiuids.hrh
+epoc32/include/ptiuserdicentry.h
+epoc32/include/ptiuserdicentry.inl
+epoc32/include/ptiuserdictionary.h
+epoc32/include/ptiuserdictionary.inl
+epoc32/include/random.h
+epoc32/include/rconnmon.h
+epoc32/include/rdrmhelper.h
+epoc32/include/remconabsvolcontroller.h
+epoc32/include/remconabsvolcontrollerobserver.h
+epoc32/include/remconabsvoltarget.h
+epoc32/include/remconabsvoltargetobserver.h
+epoc32/include/remconaddress.h
+epoc32/include/remconcoreapi.h
+epoc32/include/remconcoreapicontroller.h
+epoc32/include/remconcoreapicontrollerobserver.h
+epoc32/include/remconcoreapitarget.h
+epoc32/include/remconcoreapitargetobserver.h
+epoc32/include/remconerrorobserver.h
+epoc32/include/remconinterfaceselector.h
+epoc32/include/remconserverpanic.h
+epoc32/include/remcontrackinfocontroller.h
+epoc32/include/remcontrackinfocontrollerobserver.h
+epoc32/include/remcontrackinfotarget.h
+epoc32/include/remcontrackinfotargetobserver.h
+epoc32/include/roomlevelbase.h
+epoc32/include/roomleveldata.h
+epoc32/include/rpbkviewresourcefile.h
+epoc32/include/rsendas.h
+epoc32/include/rsendasmessage.h
+epoc32/include/rsendocument.h
+epoc32/include/rtp.h
+epoc32/include/rtp.inl
+epoc32/include/rvct2_1/rvct2_1.h
+epoc32/include/rvct2_2/rvct2_2.h
+epoc32/include/s32btree.h
+epoc32/include/s32btree.inl
+epoc32/include/s32buf.h
+epoc32/include/s32buf.inl
+epoc32/include/s32cont.h
+epoc32/include/s32cont.inl
+epoc32/include/s32file.h
+epoc32/include/s32file.inl
+epoc32/include/s32mem.h
+epoc32/include/s32mem.inl
+epoc32/include/s32page.h
+epoc32/include/s32page.inl
+epoc32/include/s32share.h
+epoc32/include/s32share.inl
+epoc32/include/s32std.h
+epoc32/include/s32std.inl
+epoc32/include/s32stor.h
+epoc32/include/s32stor.inl
+epoc32/include/s32strm.h
+epoc32/include/s32strm.inl
+epoc32/include/s32ucmp.h
+epoc32/include/sacls.h
+epoc32/include/schinfo.h
+epoc32/include/schtask.h
+epoc32/include/schtime.h
+epoc32/include/screensaverplugin.h
+epoc32/include/screensaverpluginintdef.h
+epoc32/include/screensaverpluginintdef.hrh
+epoc32/include/screensaverpluginintdef.inl
+epoc32/include/sdpattributefield.h
+epoc32/include/sdpbandwidthfield.h
+epoc32/include/sdpcodecconstants.h
+epoc32/include/sdpcodecerr.h
+epoc32/include/sdpcodecstringconstants.h
+epoc32/include/sdpcodecstringpool.h
+epoc32/include/sdpconnectionfield.h
+epoc32/include/sdpdocument.h
+epoc32/include/sdpfmtattributefield.h
+epoc32/include/sdpkeyfield.h
+epoc32/include/sdpmediafield.h
+epoc32/include/sdporiginfield.h
+epoc32/include/sdprepeatfield.h
+epoc32/include/sdprtpmapvalue.h
+epoc32/include/sdptimefield.h
+epoc32/include/sdptypedtime.h
+epoc32/include/securesocket.h
+epoc32/include/securesocketinterface.h
+epoc32/include/securitydefs.h
+epoc32/include/securitydefs.inl
+epoc32/include/senbaseattribute.h
+epoc32/include/senbaseelement.h
+epoc32/include/senbasefragment.h
+epoc32/include/sencredential.h
+epoc32/include/sencredential2.h
+epoc32/include/sendas2.h
+epoc32/include/sendasserver.rh
+epoc32/include/sendateutils.h
+epoc32/include/sendomfragment.h
+epoc32/include/sendomfragmentbase.h
+epoc32/include/sendui.h
+epoc32/include/senduiconsts.h
+epoc32/include/senduimtmuids.h
+epoc32/include/senelement.h
+epoc32/include/senfacet.h
+epoc32/include/senfragment.h
+epoc32/include/senfragmentbase.h
+epoc32/include/senhostletconnection.h
+epoc32/include/senhttptransportproperties.h
+epoc32/include/senidentityprovider.h
+epoc32/include/senidentityprovideridarray8.h
+epoc32/include/sennamespace.h
+epoc32/include/senparser.h
+epoc32/include/senserviceconnection.h
+epoc32/include/senservicemanager.h
+epoc32/include/senservicepattern.h
+epoc32/include/sensoapconstants.h
+epoc32/include/sensoapenvelope.h
+epoc32/include/sensoapenvelope2.h
+epoc32/include/sensoapfault.h
+epoc32/include/sensoapfault2.h
+epoc32/include/sensoapmessage.h
+epoc32/include/sensoapmessage2.h
+epoc32/include/sensrvaccelerometersensor.h
+epoc32/include/sensrvchannel.h
+epoc32/include/sensrvchannelcondition.h
+epoc32/include/sensrvchannelconditionlistener.h
+epoc32/include/sensrvchannelconditionset.h
+epoc32/include/sensrvchannelfinder.h
+epoc32/include/sensrvchannelinfo.h
+epoc32/include/sensrvchannellistener.h
+epoc32/include/sensrvdatalistener.h
+epoc32/include/sensrvgeneralproperties.h
+epoc32/include/sensrvilluminationsensor.h
+epoc32/include/sensrvmagneticnorthsensor.h
+epoc32/include/sensrvmagnetometersensor.h
+epoc32/include/sensrvorientationsensor.h
+epoc32/include/sensrvproperty.h
+epoc32/include/sensrvpropertylistener.h
+epoc32/include/sensrvproximitysensor.h
+epoc32/include/sensrvtappingsensor.h
+epoc32/include/sensrvtypes.h
+epoc32/include/sentransportproperties.h
+epoc32/include/senwssecurityheader.h
+epoc32/include/senwssecurityheader2.h
+epoc32/include/senxmlconstants.h
+epoc32/include/senxmlelement.h
+epoc32/include/senxmlproperties.h
+epoc32/include/senxmlreader.h
+epoc32/include/senxmlservicedescription.h
+epoc32/include/senxmlutils.h
+epoc32/include/signed.h
+epoc32/include/sip.h
+epoc32/include/sipacceptcontactheader.h
+epoc32/include/sipacceptencodingheader.h
+epoc32/include/sipacceptheader.h
+epoc32/include/sipacceptlanguageheader.h
+epoc32/include/sipaddress.h
+epoc32/include/sipaddressheaderbase.h
+epoc32/include/sipalloweventsheader.h
+epoc32/include/sipallowheader.h
+epoc32/include/sipauthenticateheaderbase.h
+epoc32/include/sipauthheaderbase.h
+epoc32/include/sipcallidheader.h
+epoc32/include/sipclienttransaction.h
+epoc32/include/sipcodecerr.h
+epoc32/include/sipconcreteprofileobserver.h
+epoc32/include/sipconnection.h
+epoc32/include/sipconnectionobserver.h
+epoc32/include/sipcontactheader.h
+epoc32/include/sipcontentdispositionheader.h
+epoc32/include/sipcontentencodingheader.h
+epoc32/include/sipcontenttypeheader.h
+epoc32/include/sipcseqheader.h
+epoc32/include/sipdefs.h
+epoc32/include/sipdialog.h
+epoc32/include/sipdialogassocbase.h
+epoc32/include/siperr.h
+epoc32/include/sipeventheader.h
+epoc32/include/sipexpiresheader.h
+epoc32/include/sipextensionheader.h
+epoc32/include/sipfromheader.h
+epoc32/include/sipfromtoheaderbase.h
+epoc32/include/sipheaderbase.h
+epoc32/include/siphttpdigest.h
+epoc32/include/siphttpdigestchallengeobserver.h
+epoc32/include/siphttpdigestchallengeobserver2.h
+epoc32/include/sipinvitedialogassoc.h
+epoc32/include/sipmanagedprofile.h
+epoc32/include/sipmanagedprofileregistry.h
+epoc32/include/sipmessageelements.h
+epoc32/include/sipnotifydialogassoc.h
+epoc32/include/sipobserver.h
+epoc32/include/sipparameterheaderbase.h
+epoc32/include/sippassociateduriheader.h
+epoc32/include/sipprofile.h
+epoc32/include/sipprofileregistry.h
+epoc32/include/sipprofileregistrybase.h
+epoc32/include/sipprofileregistryobserver.h
+epoc32/include/sipprofiletypeinfo.h
+epoc32/include/sipproxyauthenticateheader.h
+epoc32/include/sipproxyrequireheader.h
+epoc32/include/siprackheader.h
+epoc32/include/sipreferdialogassoc.h
+epoc32/include/siprefertoheader.h
+epoc32/include/siprefresh.h
+epoc32/include/sipregistrationbinding.h
+epoc32/include/sipregistrationcontext.h
+epoc32/include/sipreplytoheader.h
+epoc32/include/siprequestelements.h
+epoc32/include/siprequireheader.h
+epoc32/include/sipresolvedclient.h
+epoc32/include/sipresolvedclient.inl
+epoc32/include/sipresponseelements.h
+epoc32/include/sipretryafterheader.h
+epoc32/include/siprouteheader.h
+epoc32/include/siprouteheaderbase.h
+epoc32/include/siprseqheader.h
+epoc32/include/sipsdkcrkeys.h
+epoc32/include/sipsecurityclientheader.h
+epoc32/include/sipsecurityheaderbase.h
+epoc32/include/sipservertransaction.h
+epoc32/include/sipstrconsts.h
+epoc32/include/sipstrings.h
+epoc32/include/sipsubscribedialogassoc.h
+epoc32/include/sipsubscriptionstateheader.h
+epoc32/include/sipsupportedheader.h
+epoc32/include/siptimestampheader.h
+epoc32/include/siptoheader.h
+epoc32/include/siptokenheaderbase.h
+epoc32/include/siptransactionbase.h
+epoc32/include/sipunsignedintheaderbase.h
+epoc32/include/sipunsupportedheader.h
+epoc32/include/sipwwwauthenticateheader.h
+epoc32/include/smsclnt.h
+epoc32/include/smsclnt.inl
+epoc32/include/smscmds.h
+epoc32/include/smss.hrh
+epoc32/include/smtcmtm.h
+epoc32/include/smtpcmds.h
+epoc32/include/smtpset.h
+epoc32/include/smut.h
+epoc32/include/smuthdr.h
+epoc32/include/smutset.h
+epoc32/include/smutset.inl
+epoc32/include/smutsimparam.h
+epoc32/include/sourcedopplerbase.h
+epoc32/include/sourcelocationbase.h
+epoc32/include/sourceorientationbase.h
+epoc32/include/spdiacontrol.h
+epoc32/include/spriteanimation.h
+epoc32/include/sqldb.h
+epoc32/include/ssl.h
+epoc32/include/ssl_compatibility.h
+epoc32/include/sslerr.h
+epoc32/include/startupitem.hrh
+epoc32/include/startupitem.rh
+epoc32/include/stdapis/_ansi.h
+epoc32/include/stdapis/_ctype.h
+epoc32/include/stdapis/arpa/inet.h
+epoc32/include/stdapis/arpa/nameser.h
+epoc32/include/stdapis/arpa/nameser_compat.h
+epoc32/include/stdapis/assert.h
+epoc32/include/stdapis/crypt.h
+epoc32/include/stdapis/ctype.h
+epoc32/include/stdapis/dirent.h
+epoc32/include/stdapis/dlfcn.h
+epoc32/include/stdapis/err.h
+epoc32/include/stdapis/errno.h
+epoc32/include/stdapis/fcntl.h
+epoc32/include/stdapis/fenv.h
+epoc32/include/stdapis/float.h
+epoc32/include/stdapis/getopt.h
+epoc32/include/stdapis/glib-2.0/glib-object.h
+epoc32/include/stdapis/glib-2.0/glib.h
+epoc32/include/stdapis/glib-2.0/glib/galloca.h
+epoc32/include/stdapis/glib-2.0/glib/garray.h
+epoc32/include/stdapis/glib-2.0/glib/gasyncqueue.h
+epoc32/include/stdapis/glib-2.0/glib/gatomic.h
+epoc32/include/stdapis/glib-2.0/glib/gbacktrace.h
+epoc32/include/stdapis/glib-2.0/glib/gcache.h
+epoc32/include/stdapis/glib-2.0/glib/gcompletion.h
+epoc32/include/stdapis/glib-2.0/glib/gconvert.h
+epoc32/include/stdapis/glib-2.0/glib/gdataset.h
+epoc32/include/stdapis/glib-2.0/glib/gdate.h
+epoc32/include/stdapis/glib-2.0/glib/gdir.h
+epoc32/include/stdapis/glib-2.0/glib/gerror.h
+epoc32/include/stdapis/glib-2.0/glib/gfileutils.h
+epoc32/include/stdapis/glib-2.0/glib/ghash.h
+epoc32/include/stdapis/glib-2.0/glib/ghook.h
+epoc32/include/stdapis/glib-2.0/glib/gi18n-lib.h
+epoc32/include/stdapis/glib-2.0/glib/gi18n.h
+epoc32/include/stdapis/glib-2.0/glib/giochannel.h
+epoc32/include/stdapis/glib-2.0/glib/gkeyfile.h
+epoc32/include/stdapis/glib-2.0/glib/glist.h
+epoc32/include/stdapis/glib-2.0/glib/gmacros.h
+epoc32/include/stdapis/glib-2.0/glib/gmain.h
+epoc32/include/stdapis/glib-2.0/glib/gmappedfile.h
+epoc32/include/stdapis/glib-2.0/glib/gmarkup.h
+epoc32/include/stdapis/glib-2.0/glib/gmem.h
+epoc32/include/stdapis/glib-2.0/glib/gmessages.h
+epoc32/include/stdapis/glib-2.0/glib/gnode.h
+epoc32/include/stdapis/glib-2.0/glib/goption.h
+epoc32/include/stdapis/glib-2.0/glib/gpattern.h
+epoc32/include/stdapis/glib-2.0/glib/gprimes.h
+epoc32/include/stdapis/glib-2.0/glib/gprintf.h
+epoc32/include/stdapis/glib-2.0/glib/gqsort.h
+epoc32/include/stdapis/glib-2.0/glib/gquark.h
+epoc32/include/stdapis/glib-2.0/glib/gqueue.h
+epoc32/include/stdapis/glib-2.0/glib/grand.h
+epoc32/include/stdapis/glib-2.0/glib/grel.h
+epoc32/include/stdapis/glib-2.0/glib/gscanner.h
+epoc32/include/stdapis/glib-2.0/glib/gshell.h
+epoc32/include/stdapis/glib-2.0/glib/gslice.h
+epoc32/include/stdapis/glib-2.0/glib/gslist.h
+epoc32/include/stdapis/glib-2.0/glib/gspawn.h
+epoc32/include/stdapis/glib-2.0/glib/gstdio.h
+epoc32/include/stdapis/glib-2.0/glib/gstrfuncs.h
+epoc32/include/stdapis/glib-2.0/glib/gstring.h
+epoc32/include/stdapis/glib-2.0/glib/gthread.h
+epoc32/include/stdapis/glib-2.0/glib/gthreadpool.h
+epoc32/include/stdapis/glib-2.0/glib/gtimer.h
+epoc32/include/stdapis/glib-2.0/glib/gtree.h
+epoc32/include/stdapis/glib-2.0/glib/gtypes.h
+epoc32/include/stdapis/glib-2.0/glib/gunicode.h
+epoc32/include/stdapis/glib-2.0/glib/gutils.h
+epoc32/include/stdapis/glib-2.0/glib/gwin32.h
+epoc32/include/stdapis/glib-2.0/glib_global.h
+epoc32/include/stdapis/glib-2.0/glibconfig.h
+epoc32/include/stdapis/glib-2.0/glowmem.h
+epoc32/include/stdapis/glib-2.0/gmodule.h
+epoc32/include/stdapis/glib-2.0/gobject/gboxed.h
+epoc32/include/stdapis/glib-2.0/gobject/gclosure.h
+epoc32/include/stdapis/glib-2.0/gobject/genums.h
+epoc32/include/stdapis/glib-2.0/gobject/gmarshal.h
+epoc32/include/stdapis/glib-2.0/gobject/gobject.h
+epoc32/include/stdapis/glib-2.0/gobject/gobjectnotifyqueue.c
+epoc32/include/stdapis/glib-2.0/gobject/gparam.h
+epoc32/include/stdapis/glib-2.0/gobject/gparamspecs.h
+epoc32/include/stdapis/glib-2.0/gobject/gsignal.h
+epoc32/include/stdapis/glib-2.0/gobject/gsourceclosure.h
+epoc32/include/stdapis/glib-2.0/gobject/gtype.h
+epoc32/include/stdapis/glib-2.0/gobject/gtypemodule.h
+epoc32/include/stdapis/glib-2.0/gobject/gtypeplugin.h
+epoc32/include/stdapis/glib-2.0/gobject/gvalue.h
+epoc32/include/stdapis/glib-2.0/gobject/gvaluearray.h
+epoc32/include/stdapis/glib-2.0/gobject/gvaluecollector.h
+epoc32/include/stdapis/glib-2.0/gobject/gvaluetypes.h
+epoc32/include/stdapis/glib-2.0/gobject_global.h
+epoc32/include/stdapis/glob.h
+epoc32/include/stdapis/grp.h
+epoc32/include/stdapis/iconv.h
+epoc32/include/stdapis/inttypes.h
+epoc32/include/stdapis/langinfo.h
+epoc32/include/stdapis/libm_aliases.h
+epoc32/include/stdapis/limits.h
+epoc32/include/stdapis/locale.h
+epoc32/include/stdapis/machine/_inttypes.h
+epoc32/include/stdapis/machine/_limits.h
+epoc32/include/stdapis/machine/_stdint.h
+epoc32/include/stdapis/machine/_types.h
+epoc32/include/stdapis/machine/endian.h
+epoc32/include/stdapis/machine/param.h
+epoc32/include/stdapis/machine/setjmp.h
+epoc32/include/stdapis/machine/signal.h
+epoc32/include/stdapis/math.h
+epoc32/include/stdapis/md5.h
+epoc32/include/stdapis/memory.h
+epoc32/include/stdapis/monetary.h
+epoc32/include/stdapis/net/if.h
+epoc32/include/stdapis/netconfig.h
+epoc32/include/stdapis/netdb.h
+epoc32/include/stdapis/netinet/in.h
+epoc32/include/stdapis/netinet6/in6.h
+epoc32/include/stdapis/netinet6/in6_var.h
+epoc32/include/stdapis/nsswitch.h
+epoc32/include/stdapis/openssl/aes.h
+epoc32/include/stdapis/openssl/asn1.h
+epoc32/include/stdapis/openssl/asn1_mac.h
+epoc32/include/stdapis/openssl/asn1t.h
+epoc32/include/stdapis/openssl/bio.h
+epoc32/include/stdapis/openssl/bn.h
+epoc32/include/stdapis/openssl/buffer.h
+epoc32/include/stdapis/openssl/comp.h
+epoc32/include/stdapis/openssl/conf.h
+epoc32/include/stdapis/openssl/conf_api.h
+epoc32/include/stdapis/openssl/crypto.h
+epoc32/include/stdapis/openssl/des.h
+epoc32/include/stdapis/openssl/des_old.h
+epoc32/include/stdapis/openssl/dh.h
+epoc32/include/stdapis/openssl/dsa.h
+epoc32/include/stdapis/openssl/dso.h
+epoc32/include/stdapis/openssl/dtls1.h
+epoc32/include/stdapis/openssl/e_os2.h
+epoc32/include/stdapis/openssl/engine.h
+epoc32/include/stdapis/openssl/err.h
+epoc32/include/stdapis/openssl/evp.h
+epoc32/include/stdapis/openssl/hmac.h
+epoc32/include/stdapis/openssl/kssl.h
+epoc32/include/stdapis/openssl/lhash.h
+epoc32/include/stdapis/openssl/md2.h
+epoc32/include/stdapis/openssl/md5.h
+epoc32/include/stdapis/openssl/obj_mac.h
+epoc32/include/stdapis/openssl/objects.h
+epoc32/include/stdapis/openssl/ocsp.h
+epoc32/include/stdapis/openssl/opensslconf.h
+epoc32/include/stdapis/openssl/opensslv.h
+epoc32/include/stdapis/openssl/ossl_typ.h
+epoc32/include/stdapis/openssl/pem.h
+epoc32/include/stdapis/openssl/pem2.h
+epoc32/include/stdapis/openssl/pkcs12.h
+epoc32/include/stdapis/openssl/pkcs7.h
+epoc32/include/stdapis/openssl/pq_compat.h
+epoc32/include/stdapis/openssl/pqueue.h
+epoc32/include/stdapis/openssl/rand.h
+epoc32/include/stdapis/openssl/rc2.h
+epoc32/include/stdapis/openssl/rc4.h
+epoc32/include/stdapis/openssl/rsa.h
+epoc32/include/stdapis/openssl/safestack.h
+epoc32/include/stdapis/openssl/sha.h
+epoc32/include/stdapis/openssl/ssl.h
+epoc32/include/stdapis/openssl/ssl2.h
+epoc32/include/stdapis/openssl/ssl23.h
+epoc32/include/stdapis/openssl/ssl3.h
+epoc32/include/stdapis/openssl/stack.h
+epoc32/include/stdapis/openssl/store.h
+epoc32/include/stdapis/openssl/symhacks.h
+epoc32/include/stdapis/openssl/tls1.h
+epoc32/include/stdapis/openssl/tmdiff.h
+epoc32/include/stdapis/openssl/txt_db.h
+epoc32/include/stdapis/openssl/ui.h
+epoc32/include/stdapis/openssl/ui_compat.h
+epoc32/include/stdapis/openssl/x509.h
+epoc32/include/stdapis/openssl/x509_vfy.h
+epoc32/include/stdapis/openssl/x509v3.h
+epoc32/include/stdapis/paths.h
+epoc32/include/stdapis/pthread.h
+epoc32/include/stdapis/pthreadalias.h
+epoc32/include/stdapis/pthreadtypes.h
+epoc32/include/stdapis/pwd.h
+epoc32/include/stdapis/regex.h
+epoc32/include/stdapis/resolv.h
+epoc32/include/stdapis/sched.h
+epoc32/include/stdapis/semaphore.h
+epoc32/include/stdapis/setjmp.h
+epoc32/include/stdapis/signal.h
+epoc32/include/stdapis/signgam.h
+epoc32/include/stdapis/spawn.h
+epoc32/include/stdapis/staticlibinit_gcce.h
+epoc32/include/stdapis/stdarg.h
+epoc32/include/stdapis/stdarg_e.h
+epoc32/include/stdapis/stdbool.h
+epoc32/include/stdapis/stddef.h
+epoc32/include/stdapis/stdint.h
+epoc32/include/stdapis/stdio.h
+epoc32/include/stdapis/stdlib.h
+epoc32/include/stdapis/stlport/algorithm
+epoc32/include/stdapis/stlport/bitset
+epoc32/include/stdapis/stlport/cassert
+epoc32/include/stdapis/stlport/cctype
+epoc32/include/stdapis/stlport/cerrno
+epoc32/include/stdapis/stlport/cfloat
+epoc32/include/stdapis/stlport/climits
+epoc32/include/stdapis/stlport/clocale
+epoc32/include/stdapis/stlport/cmath
+epoc32/include/stdapis/stlport/complex
+epoc32/include/stdapis/stlport/config/_epilog.h
+epoc32/include/stdapis/stlport/config/_msvc_warnings_off.h
+epoc32/include/stdapis/stlport/config/_prolog.h
+epoc32/include/stdapis/stlport/config/stl_as400.h
+epoc32/include/stdapis/stlport/config/stl_confix.h
+epoc32/include/stdapis/stlport/config/stl_epoc.h
+epoc32/include/stdapis/stlport/config/stl_gcce.h
+epoc32/include/stdapis/stlport/config/stl_msvc.h
+epoc32/include/stdapis/stlport/config/stl_mwerks.h
+epoc32/include/stdapis/stlport/config/stl_rvct.h
+epoc32/include/stdapis/stlport/config/stl_select_lib.h
+epoc32/include/stdapis/stlport/config/stl_watcom.h
+epoc32/include/stdapis/stlport/config/stl_winscw.h
+epoc32/include/stdapis/stlport/config/stlcomp.h
+epoc32/include/stdapis/stlport/csetjmp
+epoc32/include/stdapis/stlport/csignal
+epoc32/include/stdapis/stlport/cstd/cctype
+epoc32/include/stdapis/stlport/cstd/cerrno
+epoc32/include/stdapis/stlport/cstd/cfloat
+epoc32/include/stdapis/stlport/cstd/climits
+epoc32/include/stdapis/stlport/cstd/clocale
+epoc32/include/stdapis/stlport/cstd/cmath
+epoc32/include/stdapis/stlport/cstd/csetjmp
+epoc32/include/stdapis/stlport/cstd/csignal
+epoc32/include/stdapis/stlport/cstd/cstdarg
+epoc32/include/stdapis/stlport/cstd/cstddef
+epoc32/include/stdapis/stlport/cstd/cstdio
+epoc32/include/stdapis/stlport/cstd/cstdlib
+epoc32/include/stdapis/stlport/cstd/cstring
+epoc32/include/stdapis/stlport/cstd/ctime
+epoc32/include/stdapis/stlport/cstd/cwchar
+epoc32/include/stdapis/stlport/cstd/cwctype
+epoc32/include/stdapis/stlport/cstd/locale.h
+epoc32/include/stdapis/stlport/cstd/math.h
+epoc32/include/stdapis/stlport/cstd/setjmp.h
+epoc32/include/stdapis/stlport/cstd/stdarg.h
+epoc32/include/stdapis/stlport/cstd/stddef.h
+epoc32/include/stdapis/stlport/cstd/stdio.h
+epoc32/include/stdapis/stlport/cstd/stdlib.h
+epoc32/include/stdapis/stlport/cstd/string.h
+epoc32/include/stdapis/stlport/cstd/time.h
+epoc32/include/stdapis/stlport/cstd/wchar.h
+epoc32/include/stdapis/stlport/cstd/wctype.h
+epoc32/include/stdapis/stlport/cstdarg
+epoc32/include/stdapis/stlport/cstddef
+epoc32/include/stdapis/stlport/cstdio
+epoc32/include/stdapis/stlport/cstdlib
+epoc32/include/stdapis/stlport/cstring
+epoc32/include/stdapis/stlport/ctime
+epoc32/include/stdapis/stlport/ctype.h
+epoc32/include/stdapis/stlport/cwchar
+epoc32/include/stdapis/stlport/cwctype
+epoc32/include/stdapis/stlport/deque
+epoc32/include/stdapis/stlport/exception
+epoc32/include/stdapis/stlport/exception.h
+epoc32/include/stdapis/stlport/fstream
+epoc32/include/stdapis/stlport/fstream.h
+epoc32/include/stdapis/stlport/functional
+epoc32/include/stdapis/stlport/hash_map
+epoc32/include/stdapis/stlport/hash_set
+epoc32/include/stdapis/stlport/iomanip
+epoc32/include/stdapis/stlport/iomanip.h
+epoc32/include/stdapis/stlport/ios
+epoc32/include/stdapis/stlport/ios.h
+epoc32/include/stdapis/stlport/iosfwd
+epoc32/include/stdapis/stlport/iostream
+epoc32/include/stdapis/stlport/iostream.h
+epoc32/include/stdapis/stlport/istream
+epoc32/include/stdapis/stlport/istream.h
+epoc32/include/stdapis/stlport/iterator
+epoc32/include/stdapis/stlport/limits
+epoc32/include/stdapis/stlport/list
+epoc32/include/stdapis/stlport/locale
+epoc32/include/stdapis/stlport/locale.h
+epoc32/include/stdapis/stlport/map
+epoc32/include/stdapis/stlport/math.h
+epoc32/include/stdapis/stlport/mem.h
+epoc32/include/stdapis/stlport/memory
+epoc32/include/stdapis/stlport/new
+epoc32/include/stdapis/stlport/new.h
+epoc32/include/stdapis/stlport/numeric
+epoc32/include/stdapis/stlport/ostream
+epoc32/include/stdapis/stlport/ostream.h
+epoc32/include/stdapis/stlport/pthread.h
+epoc32/include/stdapis/stlport/pthread_alloc
+epoc32/include/stdapis/stlport/queue
+epoc32/include/stdapis/stlport/rope
+epoc32/include/stdapis/stlport/runtime/exception.h
+epoc32/include/stdapis/stlport/runtime/new
+epoc32/include/stdapis/stlport/runtime/new.h
+epoc32/include/stdapis/stlport/runtime/numeric
+epoc32/include/stdapis/stlport/runtime/typeinfo
+epoc32/include/stdapis/stlport/runtime/typeinfo.h
+epoc32/include/stdapis/stlport/set
+epoc32/include/stdapis/stlport/setjmp.h
+epoc32/include/stdapis/stlport/slist
+epoc32/include/stdapis/stlport/sstream
+epoc32/include/stdapis/stlport/stack
+epoc32/include/stdapis/stlport/stdarg.h
+epoc32/include/stdapis/stlport/stddef.h
+epoc32/include/stdapis/stlport/stdexcept
+epoc32/include/stdapis/stlport/stdio.h
+epoc32/include/stdapis/stlport/stdio_streambuf
+epoc32/include/stdapis/stlport/stdiostream.h
+epoc32/include/stdapis/stlport/stdlib.h
+epoc32/include/stdapis/stlport/stl/_abbrevs.h
+epoc32/include/stdapis/stlport/stl/_algo.c
+epoc32/include/stdapis/stlport/stl/_algo.h
+epoc32/include/stdapis/stlport/stl/_algobase.c
+epoc32/include/stdapis/stlport/stl/_algobase.h
+epoc32/include/stdapis/stlport/stl/_alloc.c
+epoc32/include/stdapis/stlport/stl/_alloc.h
+epoc32/include/stdapis/stlport/stl/_auto_ptr.h
+epoc32/include/stdapis/stlport/stl/_bitset.c
+epoc32/include/stdapis/stlport/stl/_bitset.h
+epoc32/include/stdapis/stlport/stl/_bvector.h
+epoc32/include/stdapis/stlport/stl/_check_config.h
+epoc32/include/stdapis/stlport/stl/_cmath.h
+epoc32/include/stdapis/stlport/stl/_codecvt.h
+epoc32/include/stdapis/stlport/stl/_collate.h
+epoc32/include/stdapis/stlport/stl/_complex.c
+epoc32/include/stdapis/stlport/stl/_complex.h
+epoc32/include/stdapis/stlport/stl/_config.h
+epoc32/include/stdapis/stlport/stl/_config_compat.h
+epoc32/include/stdapis/stlport/stl/_config_compat_post.h
+epoc32/include/stdapis/stlport/stl/_construct.h
+epoc32/include/stdapis/stlport/stl/_ctraits_fns.h
+epoc32/include/stdapis/stlport/stl/_ctype.c
+epoc32/include/stdapis/stlport/stl/_ctype.h
+epoc32/include/stdapis/stlport/stl/_cwchar.h
+epoc32/include/stdapis/stlport/stl/_deque.c
+epoc32/include/stdapis/stlport/stl/_deque.h
+epoc32/include/stdapis/stlport/stl/_epilog.h
+epoc32/include/stdapis/stlport/stl/_exception.h
+epoc32/include/stdapis/stlport/stl/_fstream.c
+epoc32/include/stdapis/stlport/stl/_fstream.h
+epoc32/include/stdapis/stlport/stl/_function.h
+epoc32/include/stdapis/stlport/stl/_function_adaptors.h
+epoc32/include/stdapis/stlport/stl/_function_base.h
+epoc32/include/stdapis/stlport/stl/_hash_fun.h
+epoc32/include/stdapis/stlport/stl/_hash_map.h
+epoc32/include/stdapis/stlport/stl/_hash_set.h
+epoc32/include/stdapis/stlport/stl/_hashtable.c
+epoc32/include/stdapis/stlport/stl/_hashtable.h
+epoc32/include/stdapis/stlport/stl/_heap.c
+epoc32/include/stdapis/stlport/stl/_heap.h
+epoc32/include/stdapis/stlport/stl/_ios.c
+epoc32/include/stdapis/stlport/stl/_ios.h
+epoc32/include/stdapis/stlport/stl/_ios_base.h
+epoc32/include/stdapis/stlport/stl/_iosfwd.h
+epoc32/include/stdapis/stlport/stl/_istream.c
+epoc32/include/stdapis/stlport/stl/_istream.h
+epoc32/include/stdapis/stlport/stl/_istreambuf_iterator.h
+epoc32/include/stdapis/stlport/stl/_iterator.h
+epoc32/include/stdapis/stlport/stl/_iterator_base.h
+epoc32/include/stdapis/stlport/stl/_iterator_old.h
+epoc32/include/stdapis/stlport/stl/_limits.c
+epoc32/include/stdapis/stlport/stl/_limits.h
+epoc32/include/stdapis/stlport/stl/_list.c
+epoc32/include/stdapis/stlport/stl/_list.h
+epoc32/include/stdapis/stlport/stl/_locale.h
+epoc32/include/stdapis/stlport/stl/_map.h
+epoc32/include/stdapis/stlport/stl/_messages_facets.h
+epoc32/include/stdapis/stlport/stl/_monetary.c
+epoc32/include/stdapis/stlport/stl/_monetary.h
+epoc32/include/stdapis/stlport/stl/_new.h
+epoc32/include/stdapis/stlport/stl/_null_stream.h
+epoc32/include/stdapis/stlport/stl/_num_get.c
+epoc32/include/stdapis/stlport/stl/_num_get.h
+epoc32/include/stdapis/stlport/stl/_num_put.c
+epoc32/include/stdapis/stlport/stl/_num_put.h
+epoc32/include/stdapis/stlport/stl/_numeric.c
+epoc32/include/stdapis/stlport/stl/_numeric.h
+epoc32/include/stdapis/stlport/stl/_numpunct.c
+epoc32/include/stdapis/stlport/stl/_numpunct.h
+epoc32/include/stdapis/stlport/stl/_ostream.c
+epoc32/include/stdapis/stlport/stl/_ostream.h
+epoc32/include/stdapis/stlport/stl/_ostreambuf_iterator.h
+epoc32/include/stdapis/stlport/stl/_pair.h
+epoc32/include/stdapis/stlport/stl/_prolog.h
+epoc32/include/stdapis/stlport/stl/_pthread_alloc.c
+epoc32/include/stdapis/stlport/stl/_pthread_alloc.h
+epoc32/include/stdapis/stlport/stl/_ptrs_specialize.h
+epoc32/include/stdapis/stlport/stl/_queue.h
+epoc32/include/stdapis/stlport/stl/_range_errors.h
+epoc32/include/stdapis/stlport/stl/_raw_storage_iter.h
+epoc32/include/stdapis/stlport/stl/_relops.h
+epoc32/include/stdapis/stlport/stl/_relops_cont.h
+epoc32/include/stdapis/stlport/stl/_relops_hash_cont.h
+epoc32/include/stdapis/stlport/stl/_relops_template.h
+epoc32/include/stdapis/stlport/stl/_rope.c
+epoc32/include/stdapis/stlport/stl/_rope.h
+epoc32/include/stdapis/stlport/stl/_set.h
+epoc32/include/stdapis/stlport/stl/_site_config.h
+epoc32/include/stdapis/stlport/stl/_slist.c
+epoc32/include/stdapis/stlport/stl/_slist.h
+epoc32/include/stdapis/stlport/stl/_slist_base.c
+epoc32/include/stdapis/stlport/stl/_slist_base.h
+epoc32/include/stdapis/stlport/stl/_sstream.c
+epoc32/include/stdapis/stlport/stl/_sstream.h
+epoc32/include/stdapis/stlport/stl/_stack.h
+epoc32/include/stdapis/stlport/stl/_stdio_file.h
+epoc32/include/stdapis/stlport/stl/_stream_iterator.h
+epoc32/include/stdapis/stlport/stl/_streambuf.c
+epoc32/include/stdapis/stlport/stl/_streambuf.h
+epoc32/include/stdapis/stlport/stl/_streambuf_iterator.h
+epoc32/include/stdapis/stlport/stl/_string.c
+epoc32/include/stdapis/stlport/stl/_string.h
+epoc32/include/stdapis/stlport/stl/_string_fwd.c
+epoc32/include/stdapis/stlport/stl/_string_fwd.h
+epoc32/include/stdapis/stlport/stl/_string_hash.h
+epoc32/include/stdapis/stlport/stl/_string_io.c
+epoc32/include/stdapis/stlport/stl/_string_io.h
+epoc32/include/stdapis/stlport/stl/_strstream.h
+epoc32/include/stdapis/stlport/stl/_tempbuf.c
+epoc32/include/stdapis/stlport/stl/_tempbuf.h
+epoc32/include/stdapis/stlport/stl/_threads.c
+epoc32/include/stdapis/stlport/stl/_threads.h
+epoc32/include/stdapis/stlport/stl/_time_facets.c
+epoc32/include/stdapis/stlport/stl/_time_facets.h
+epoc32/include/stdapis/stlport/stl/_tree.c
+epoc32/include/stdapis/stlport/stl/_tree.h
+epoc32/include/stdapis/stlport/stl/_uninitialized.h
+epoc32/include/stdapis/stlport/stl/_valarray.c
+epoc32/include/stdapis/stlport/stl/_valarray.h
+epoc32/include/stdapis/stlport/stl/_vector.c
+epoc32/include/stdapis/stlport/stl/_vector.h
+epoc32/include/stdapis/stlport/stl/c_locale.h
+epoc32/include/stdapis/stlport/stl/char_traits.h
+epoc32/include/stdapis/stlport/stl/concept_checks.h
+epoc32/include/stdapis/stlport/stl/debug/_debug.c
+epoc32/include/stdapis/stlport/stl/debug/_debug.h
+epoc32/include/stdapis/stlport/stl/debug/_deque.h
+epoc32/include/stdapis/stlport/stl/debug/_hashtable.h
+epoc32/include/stdapis/stlport/stl/debug/_iterator.h
+epoc32/include/stdapis/stlport/stl/debug/_list.h
+epoc32/include/stdapis/stlport/stl/debug/_relops_cont.h
+epoc32/include/stdapis/stlport/stl/debug/_relops_hash_cont.h
+epoc32/include/stdapis/stlport/stl/debug/_slist.h
+epoc32/include/stdapis/stlport/stl/debug/_string.h
+epoc32/include/stdapis/stlport/stl/debug/_tree.h
+epoc32/include/stdapis/stlport/stl/debug/_vector.h
+epoc32/include/stdapis/stlport/stl/msl_string.h
+epoc32/include/stdapis/stlport/stl/type_traits.h
+epoc32/include/stdapis/stlport/stl/wrappers/_deque.h
+epoc32/include/stdapis/stlport/stl/wrappers/_hash_map.h
+epoc32/include/stdapis/stlport/stl/wrappers/_hash_set.h
+epoc32/include/stdapis/stlport/stl/wrappers/_list.h
+epoc32/include/stdapis/stlport/stl/wrappers/_map.h
+epoc32/include/stdapis/stlport/stl/wrappers/_mmap.h
+epoc32/include/stdapis/stlport/stl/wrappers/_set.h
+epoc32/include/stdapis/stlport/stl/wrappers/_slist.h
+epoc32/include/stdapis/stlport/stl/wrappers/_vector.h
+epoc32/include/stdapis/stlport/stl_user_config.h
+epoc32/include/stdapis/stlport/streambuf
+epoc32/include/stdapis/stlport/streambuf.h
+epoc32/include/stdapis/stlport/string
+epoc32/include/stdapis/stlport/string.h
+epoc32/include/stdapis/stlport/strstream
+epoc32/include/stdapis/stlport/strstream.h
+epoc32/include/stdapis/stlport/time.h
+epoc32/include/stdapis/stlport/typeinfo
+epoc32/include/stdapis/stlport/typeinfo.h
+epoc32/include/stdapis/stlport/using/cstring
+epoc32/include/stdapis/stlport/using/fstream
+epoc32/include/stdapis/stlport/using/h/fstream.h
+epoc32/include/stdapis/stlport/using/h/iomanip.h
+epoc32/include/stdapis/stlport/using/h/iostream.h
+epoc32/include/stdapis/stlport/using/h/ostream.h
+epoc32/include/stdapis/stlport/using/h/streambuf.h
+epoc32/include/stdapis/stlport/using/h/strstream.h
+epoc32/include/stdapis/stlport/using/iomanip
+epoc32/include/stdapis/stlport/using/ios
+epoc32/include/stdapis/stlport/using/iosfwd
+epoc32/include/stdapis/stlport/using/iostream
+epoc32/include/stdapis/stlport/using/istream
+epoc32/include/stdapis/stlport/using/locale
+epoc32/include/stdapis/stlport/using/ostream
+epoc32/include/stdapis/stlport/using/sstream
+epoc32/include/stdapis/stlport/using/streambuf
+epoc32/include/stdapis/stlport/using/strstream
+epoc32/include/stdapis/stlport/utility
+epoc32/include/stdapis/stlport/valarray
+epoc32/include/stdapis/stlport/vector
+epoc32/include/stdapis/stlport/wchar.h
+epoc32/include/stdapis/stlport/wctype.h
+epoc32/include/stdapis/stlport/wrap_std/complex
+epoc32/include/stdapis/stlport/wrap_std/fstream
+epoc32/include/stdapis/stlport/wrap_std/h/fstream.h
+epoc32/include/stdapis/stlport/wrap_std/h/iostream.h
+epoc32/include/stdapis/stlport/wrap_std/h/streambuf.h
+epoc32/include/stdapis/stlport/wrap_std/h/strstream.h
+epoc32/include/stdapis/stlport/wrap_std/iomanip
+epoc32/include/stdapis/stlport/wrap_std/ios
+epoc32/include/stdapis/stlport/wrap_std/iosfwd
+epoc32/include/stdapis/stlport/wrap_std/iostream
+epoc32/include/stdapis/stlport/wrap_std/istream
+epoc32/include/stdapis/stlport/wrap_std/locale
+epoc32/include/stdapis/stlport/wrap_std/ostream
+epoc32/include/stdapis/stlport/wrap_std/sstream
+epoc32/include/stdapis/stlport/wrap_std/streambuf
+epoc32/include/stdapis/stlport/wrap_std/strstream
+epoc32/include/stdapis/string.h
+epoc32/include/stdapis/strings.h
+epoc32/include/stdapis/sys/_iovec.h
+epoc32/include/stdapis/sys/_null.h
+epoc32/include/stdapis/sys/_pthreadtypes.h
+epoc32/include/stdapis/sys/_sigset.h
+epoc32/include/stdapis/sys/_timespec.h
+epoc32/include/stdapis/sys/_timeval.h
+epoc32/include/stdapis/sys/_types.h
+epoc32/include/stdapis/sys/cdefs.h
+epoc32/include/stdapis/sys/dirent.h
+epoc32/include/stdapis/sys/endian.h
+epoc32/include/stdapis/sys/errno.h
+epoc32/include/stdapis/sys/event.h
+epoc32/include/stdapis/sys/fcntl.h
+epoc32/include/stdapis/sys/file.h
+epoc32/include/stdapis/sys/filio.h
+epoc32/include/stdapis/sys/ioccom.h
+epoc32/include/stdapis/sys/ioctl.h
+epoc32/include/stdapis/sys/ipc.h
+epoc32/include/stdapis/sys/limits.h
+epoc32/include/stdapis/sys/md5.h
+epoc32/include/stdapis/sys/mman.h
+epoc32/include/stdapis/sys/msg.h
+epoc32/include/stdapis/sys/param.h
+epoc32/include/stdapis/sys/queue.h
+epoc32/include/stdapis/sys/resource.h
+epoc32/include/stdapis/sys/select.h
+epoc32/include/stdapis/sys/sem.h
+epoc32/include/stdapis/sys/serial.h
+epoc32/include/stdapis/sys/shm.h
+epoc32/include/stdapis/sys/signal.h
+epoc32/include/stdapis/sys/socket.h
+epoc32/include/stdapis/sys/sockio.h
+epoc32/include/stdapis/sys/stat.h
+epoc32/include/stdapis/sys/stdint.h
+epoc32/include/stdapis/sys/sysctl.h
+epoc32/include/stdapis/sys/syslimits.h
+epoc32/include/stdapis/sys/time.h
+epoc32/include/stdapis/sys/times.h
+epoc32/include/stdapis/sys/timespec.h
+epoc32/include/stdapis/sys/ttycom.h
+epoc32/include/stdapis/sys/types.h
+epoc32/include/stdapis/sys/uio.h
+epoc32/include/stdapis/sys/unistd.h
+epoc32/include/stdapis/sys/utsname.h
+epoc32/include/stdapis/sys/wait.h
+epoc32/include/stdapis/sysexits.h
+epoc32/include/stdapis/time.h
+epoc32/include/stdapis/unistd.h
+epoc32/include/stdapis/utime.h
+epoc32/include/stdapis/utmp.h
+epoc32/include/stdapis/wchar.h
+epoc32/include/stdapis/wctype.h
+epoc32/include/stdapis/zconf.h
+epoc32/include/stdapis/zlib.h
+epoc32/include/stereowideningbase.h
+epoc32/include/stereowideningdata.h
+epoc32/include/stereowideningutility.h
+epoc32/include/stereowideningutilitydata.h
+epoc32/include/stringloader.h
+epoc32/include/stringpool.h
+epoc32/include/stringpool.inl
+epoc32/include/symcpp.h
+epoc32/include/sysutil.h
+epoc32/include/t32wld.h
+epoc32/include/tagma.h
+epoc32/include/telephony.inl
+epoc32/include/telsess.h
+epoc32/include/textresolver.h
+epoc32/include/textresolver.hrh
+epoc32/include/thttpfields.h
+epoc32/include/tinternetdate.h
+epoc32/include/tlmkitemiddbcombiinfo.h
+epoc32/include/touchfeedback.h
+epoc32/include/touchlogicalfeedback.h
+epoc32/include/tpbkcontactitemfield.h
+epoc32/include/tranp.h
+epoc32/include/tsendasclientpanic.h
+epoc32/include/tsendasmessagetypefilter.h
+epoc32/include/tsendingcapabilities.h
+epoc32/include/tsendingcapabilities.inl
+epoc32/include/txtetext.h
+epoc32/include/txtetext.inl
+epoc32/include/txtfmlyr.h
+epoc32/include/txtfmlyr.inl
+epoc32/include/txtfrmat.h
+epoc32/include/txtfrmat.inl
+epoc32/include/txtglobl.h
+epoc32/include/txtglobl.inl
+epoc32/include/txtlaydc.h
+epoc32/include/txtmfmtx.h
+epoc32/include/txtrich.h
+epoc32/include/txtrich.inl
+epoc32/include/txtstyle.h
+epoc32/include/txtstyle.inl
+epoc32/include/tz.h
+epoc32/include/tzconverter.h
+epoc32/include/tzdefines.h
+epoc32/include/tzlocalizationdatatypes.h
+epoc32/include/tzlocalizer.h
+epoc32/include/tzupdate.h
+epoc32/include/uikon.hrh
+epoc32/include/uikon.rh
+epoc32/include/uikon/eiksvfty.h
+epoc32/include/unifiedcertstore.h
+epoc32/include/uri16.h
+epoc32/include/uri8.h
+epoc32/include/uricommon.h
+epoc32/include/uriutils.h
+epoc32/include/uriutilscommon.h
+epoc32/include/utf.h
+epoc32/include/variant/symbian_os.hrh
+epoc32/include/vcal.h
+epoc32/include/vcal.inl
+epoc32/include/vcard.h
+epoc32/include/vcard.inl
+epoc32/include/versioninfo.h
+epoc32/include/versioninfo.inl
+epoc32/include/versit.h
+epoc32/include/versit.inl
+epoc32/include/versittls.h
+epoc32/include/vibractrl.h
+epoc32/include/videoplayer.h
+epoc32/include/videorecorder.h
+epoc32/include/viewcli.h
+epoc32/include/vobserv.h
+epoc32/include/vprop.h
+epoc32/include/vprop.inl
+epoc32/include/vrecur.h
+epoc32/include/vrecur.inl
+epoc32/include/vstaticutils.h
+epoc32/include/vtoken.h
+epoc32/include/vtzrules.h
+epoc32/include/vuid.h
+epoc32/include/vutil.h
+epoc32/include/vwsdef.h
+epoc32/include/w32adll.h
+epoc32/include/w32click.h
+epoc32/include/w32std.h
+epoc32/include/wapattrdf.h
+epoc32/include/wapengstd.h
+epoc32/include/waplog.h
+epoc32/include/wapmessage.h
+epoc32/include/wapmime.h
+epoc32/include/wapmsgerr.h
+epoc32/include/waptestutils.inl
+epoc32/include/wlansdkpskeys.h
+epoc32/include/wngdoor.h
+epoc32/include/wngmodel.h
+epoc32/include/wngmodel.inl
+epoc32/include/wsp/wsptypes.h
+epoc32/include/wspdecoder.h
+epoc32/include/wspencoder.h
+epoc32/include/wtlscert.h
+epoc32/include/wtlscertchain.h
+epoc32/include/wtlsnames.h
+epoc32/include/x500dn.h
+epoc32/include/x509cert.h
+epoc32/include/x509certchain.h
+epoc32/include/x509certext.h
+epoc32/include/x509gn.h
+epoc32/include/x520ava.h
+epoc32/include/xml/attribute.h
+epoc32/include/xml/contenthandler.h
+epoc32/include/xml/contentprocessoruids.h
+epoc32/include/xml/documentparameters.h
+epoc32/include/xml/matchdata.h
+epoc32/include/xml/parser.h
+epoc32/include/xml/parserfeature.h
+epoc32/include/xml/stringdictionarycollection.h
+epoc32/include/xml/taginfo.h
+epoc32/include/xml/wbxmlextensionhandler.h
+epoc32/include/xml/xmlframeworkerrors.h
+epoc32/include/xmlengattr.h
+epoc32/include/xmlengattr.inl
+epoc32/include/xmlengbinarycontainer.h
+epoc32/include/xmlengbinarycontainer.inl
+epoc32/include/xmlengcdatasection.h
+epoc32/include/xmlengcdatasection.inl
+epoc32/include/xmlengcharacterdata.h
+epoc32/include/xmlengcharacterdata.inl
+epoc32/include/xmlengchunkcontainer.h
+epoc32/include/xmlengchunkcontainer.inl
+epoc32/include/xmlengcomment.h
+epoc32/include/xmlengcomment.inl
+epoc32/include/xmlengdatacontainer.h
+epoc32/include/xmlengdatacontainer.inl
+epoc32/include/xmlengdataserializer.h
+epoc32/include/xmlengdocument.h
+epoc32/include/xmlengdocument.inl
+epoc32/include/xmlengdocumentfragment.h
+epoc32/include/xmlengdocumentfragment.inl
+epoc32/include/xmlengdom.h
+epoc32/include/xmlengdomimplementation.h
+epoc32/include/xmlengdomparser.h
+epoc32/include/xmlengelement.h
+epoc32/include/xmlengelement.inl
+epoc32/include/xmlengentityreference.h
+epoc32/include/xmlengentityreference.inl
+epoc32/include/xmlengerrors.h
+epoc32/include/xmlengfilecontainer.h
+epoc32/include/xmlengfilecontainer.inl
+epoc32/include/xmlengnamespace.h
+epoc32/include/xmlengnamespace.inl
+epoc32/include/xmlengnode.h
+epoc32/include/xmlengnode.inl
+epoc32/include/xmlengnodefilter.h
+epoc32/include/xmlengnodelist.h
+epoc32/include/xmlengnodelist.inl
+epoc32/include/xmlengnodelist_impl.h
+epoc32/include/xmlengoutputstream.h
+epoc32/include/xmlengprocessinginstruction.h
+epoc32/include/xmlengprocessinginstruction.inl
+epoc32/include/xmlengserializationoptions.h
+epoc32/include/xmlengtext.h
+epoc32/include/xmlengtext.inl
+epoc32/include/xmlenguserdata.h
+epoc32/include/ziparchive.h
+epoc32/include/zipfile.h
+epoc32/include/zipfilemember.h
+epoc32/include/zipfilememberinputstream.h
+epoc32/include/zipfilememberiterator.h
+epoc32/include/a3f/a3f_trace_ctxt.h
+epoc32/include/arm_vfp.h
+epoc32/include/arp_hdr.h
+epoc32/include/assp/template_assp/template_assp.h
+epoc32/include/assp/template_assp/template_assp_priv.h
+epoc32/include/ataudioeventapi.h
+epoc32/include/bitmtrans/bitmtranspanic.h
+epoc32/include/bldcodeline.hrh
+epoc32/include/bldprivate.hrh
+epoc32/include/bldpublic.hrh
+epoc32/include/bldregional.hrh
+epoc32/include/bldvariant.hrh
+epoc32/include/bsul/bsul.h
+epoc32/include/bsul/ccacheddriveinfo.h
+epoc32/include/btdefcommport.h
+epoc32/include/calinterimapipanic.h
+epoc32/include/cdmasmsaddr.h
+epoc32/include/chttpresponse.h
+epoc32/include/cimattachmentwaiter.h
+epoc32/include/cimmobilitypolicyplugin.inl
+epoc32/include/cimplainbodytext.h
+epoc32/include/cmmsaccounts.h
+epoc32/include/cmmssettings.h
+epoc32/include/cmsvplainbodytext.h
+epoc32/include/coelayoutman.h
+epoc32/include/comms-infras/cftransport.inl
+epoc32/include/comms-infras/ss_roles.inl
+epoc32/include/connect/abclient.h
+epoc32/include/connectprog.h
+epoc32/include/csendaseditutils.inl
+epoc32/include/cshelp/conset.hlp.hrh
+epoc32/include/cshelp/div.hlp.hrh
+epoc32/include/cshelp/find.hlp.hrh
+epoc32/include/csmsclass0base.h
+epoc32/include/csmsgetdetdescinterface.inl
+epoc32/include/data_caging_path_literals.hrh
+epoc32/include/data_caging_paths.hrh
+epoc32/include/data_caging_paths_for_iby.hrh
+epoc32/include/data_caging_paths_strings.hrh
+epoc32/include/defaultcaps.hrh
+epoc32/include/drivers/dma.inl
+epoc32/include/drivers/pbus.inl
+epoc32/include/drivers/pccard.inl
+epoc32/include/e32modes.h
+epoc32/include/ecam/cameraoverlay.h
+epoc32/include/ecam/ecamcommonuids.hrh
+epoc32/include/ecam/ecamdirectviewfinder.h
+epoc32/include/ecam/ecamdirectviewfinderuids.hrh
+epoc32/include/ecamerrors.h
+epoc32/include/ecom/test_bed/componentinfo.inl
+epoc32/include/ecom/test_bed/transition.inl
+epoc32/include/ecom/test_bed/unittest.inl
+epoc32/include/ecom/test_bed/unittestinfo.inl
+epoc32/include/errorres.rsg
+epoc32/include/es_wsms.h
+epoc32/include/es_wsms.inl
+epoc32/include/et_clsvr.h
+epoc32/include/etbuffer.h
+epoc32/include/etelext.h
+epoc32/include/etslotnum.h
+epoc32/include/exifutility.h
+epoc32/include/ext_hdr.h
+epoc32/include/f32plugin.inl
+epoc32/include/features.hrh
+epoc32/include/featureuids.h
+epoc32/include/gcc_mingw/gcc_mingw_3_4_2.h
+epoc32/include/gles/glext.h
+epoc32/include/gles/glextplatform.h
+epoc32/include/gles/glplatform.h
+epoc32/include/gmxmlparser.h
+epoc32/include/gprsprog.h
+epoc32/include/gsmuieoperations.h
+epoc32/include/gsmunonieoperations.h
+epoc32/include/gsmuset.h
+epoc32/include/gsmuset.inl
+epoc32/include/gsmustor.h
+epoc32/include/gsmustor.inl
+epoc32/include/hsdataobserver.h
+epoc32/include/hsexception.h
+epoc32/include/hswidget.h
+epoc32/include/hswidgetpublisher.h
+epoc32/include/http/framework/cheadercodec.h
+epoc32/include/http/framework/cprotocolhandler.h
+epoc32/include/http/framework/cprottransaction.h
+epoc32/include/http/framework/crxdata.h
+epoc32/include/http/framework/ctxdata.h
+epoc32/include/http/framework/mrxdataobserver.h
+epoc32/include/http/framework/rheaderfield.h
+epoc32/include/hwrmhaptics.h
+epoc32/include/hwrmhapticsactuatorobserver.h
+epoc32/include/hwrmhapticsobserver.h
+epoc32/include/hwrmlogicalactuators.h
+epoc32/include/icl/exifimagedisplayext.h
+epoc32/include/icl/icl_propertyuids.h
+epoc32/include/icl/icl_propertyuids.hrh
+epoc32/include/icl/imageconversionextension.h
+epoc32/include/icl/imageconversionextensionintf.h
+epoc32/include/icl/imagedisplay.hrh
+epoc32/include/icl/imagedisplaypaniccodes.h
+epoc32/include/icl/imagedisplayplugin.h
+epoc32/include/icl/imagedisplaypluginext.h
+epoc32/include/iclexif.h
+epoc32/include/iclexifimageframe.h
+epoc32/include/icmp6_hdr.h
+epoc32/include/iconlocations.hrh
+epoc32/include/imagedisplay.h
+epoc32/include/imageframe.h
+epoc32/include/imageframeconst.h
+epoc32/include/imageframeconst.hrh
+epoc32/include/imageframeformats.hrh
+epoc32/include/imcmmain.h
+epoc32/include/imcvrecv.inl
+epoc32/include/imcvsend.inl
+epoc32/include/in_chk.h
+epoc32/include/in_hdr.h
+epoc32/include/in_pkt.h
+epoc32/include/ineturi.h
+epoc32/include/ineturilist.h
+epoc32/include/ineturilistdef.h
+epoc32/include/ip4_hdr.h
+epoc32/include/ip6_hdr.h
+epoc32/include/kernel/arm/vfpsupport.h
+epoc32/include/khronos_types.h
+epoc32/include/lbs.inl
+epoc32/include/lbs/lbsadmin.inl
+epoc32/include/lbs/lbsassistancedatabase.inl
+epoc32/include/lbs/lbsassistancedatabuilderset.inl
+epoc32/include/lbs/lbsassistancedatasourcemodule.inl
+epoc32/include/lbs/lbsipc.hrh
+epoc32/include/lbsfields.h
+epoc32/include/lbspositioncalc.h
+epoc32/include/libc/netinet/net_types.h
+epoc32/include/logdef.h
+epoc32/include/mateventcompleteobserver.h
+epoc32/include/mbmstypes.h
+epoc32/include/mctkeystore.inl
+epoc32/include/mda/common/gsmaudio.h
+epoc32/include/mda/common/gsmaudio.hrh
+epoc32/include/mdf/mdfprocessingunit.inl
+epoc32/include/mdf/mdfpuloader.inl
+epoc32/include/memmodel/emul/platform.h
+epoc32/include/memmodel/epoc/mmubase/kblockmap.h
+epoc32/include/mm/conversioncoefficient.h
+epoc32/include/mmf/common/midistandardcustomcommands.h
+epoc32/include/mmf/common/mmfmidi.h
+epoc32/include/mmf/common/speechrecognitioncustomcommandimplementor.h
+epoc32/include/mmf/common/speechrecognitioncustomcommandparser.h
+epoc32/include/mmf/common/speechrecognitioncustomcommands.h
+epoc32/include/mmf/common/speechrecognitiondataclient.h
+epoc32/include/mmf/common/speechrecognitiondatacommon.h
+epoc32/include/mmf/common/speechrecognitiondatadevasr.h
+epoc32/include/mmf/common/speechrecognitiondatatest.h
+epoc32/include/mmf/devasr/devasr.h
+epoc32/include/mmf/devasr/devasrcommon.h
+epoc32/include/mmf/devasr/devasruids.hrh
+epoc32/include/mmf/devvideo/avc.h
+epoc32/include/mmf/devvideo/devvideobase.h
+epoc32/include/mmf/devvideo/devvideobase.inl
+epoc32/include/mmf/devvideo/devvideoconstants.h
+epoc32/include/mmf/devvideo/devvideoplay.h
+epoc32/include/mmf/devvideo/devvideoplay.inl
+epoc32/include/mmf/devvideo/devvideoplugininterfaceuids.hrh
+epoc32/include/mmf/devvideo/devvideorecord.h
+epoc32/include/mmf/devvideo/devvideorecord.inl
+epoc32/include/mmf/devvideo/h263.h
+epoc32/include/mmf/devvideo/mpeg4visual.h
+epoc32/include/mmf/devvideo/on2vp6.h
+epoc32/include/mmf/devvideo/sorensonspark.h
+epoc32/include/mmf/devvideo/vc1.h
+epoc32/include/mmf/devvideo/videoplayhwdevice.h
+epoc32/include/mmf/devvideo/videorecordhwdevice.h
+epoc32/include/mmf/server/devsoundstandardcustominterfaces.h
+epoc32/include/mmf/server/mmfaudioinput.h
+epoc32/include/mmf/server/mmfaudiooutput.h
+epoc32/include/mmf/server/mmfclip.h
+epoc32/include/mmf/server/mmfcodec.h
+epoc32/include/mmf/server/mmfdatapath.h
+epoc32/include/mmf/server/mmfdatapathproxy.h
+epoc32/include/mmf/server/mmfdes.h
+epoc32/include/mmf/server/mmfdevsoundcustominterfacesupport.h
+epoc32/include/mmf/server/mmffile.h
+epoc32/include/mmf/server/mmfformat.h
+epoc32/include/mmf/server/mmfformat.inl
+epoc32/include/mmf/server/mmfhwdevice.inl
+epoc32/include/mmf/server/mmfsubthreadbase.h
+epoc32/include/mmf/server/mmfswcodecwrapper.h
+epoc32/include/mmf/server/mmfurl.h
+epoc32/include/mmf/server/mmfvideoframebuffer.h
+epoc32/include/mmf/server/sounddevice.h
+epoc32/include/mmf/server/sounddevice.inl
+epoc32/include/mmfformatimplementationuids.hrh
+epoc32/include/mmmssettingsobserver.h
+epoc32/include/mmssettingsproxybase.inl
+epoc32/include/msventryscheduledata.h
+epoc32/include/msvoffpeaktime.h
+epoc32/include/msvscheduledentry.h
+epoc32/include/msvscheduledentry.inl
+epoc32/include/msvschedulepackage.h
+epoc32/include/msvschedulesend.h
+epoc32/include/msvschedulesend.inl
+epoc32/include/msvschedulesettings.h
+epoc32/include/msvsenderroraction.h
+epoc32/include/msvsysagentaction.h
+epoc32/include/mw/akntouchpane.h
+epoc32/include/mw/akntouchpane.hrh
+epoc32/include/mw/browseruiinternalcrkeys.h
+epoc32/include/mw/cmsettingsui.h
+epoc32/include/mw/lbt.h
+epoc32/include/mw/lbtcommon.h
+epoc32/include/mw/lbterrors.h
+epoc32/include/mw/lbtgeoareabase.h
+epoc32/include/mw/lbtgeocell.h
+epoc32/include/mw/lbtgeocircle.h
+epoc32/include/mw/lbtgeorect.h
+epoc32/include/mw/lbtlisttriggeroptions.h
+epoc32/include/mw/lbtserver.h
+epoc32/include/mw/lbtsessiontrigger.h
+epoc32/include/mw/lbtstartuptrigger.h
+epoc32/include/mw/lbttriggerchangeevent.h
+epoc32/include/mw/lbttriggerchangeeventnotifier.h
+epoc32/include/mw/lbttriggerchangeeventobserver.h
+epoc32/include/mw/lbttriggerconditionarea.h
+epoc32/include/mw/lbttriggerconditionbase.h
+epoc32/include/mw/lbttriggerdynamicinfo.h
+epoc32/include/mw/lbttriggerentry.h
+epoc32/include/mw/lbttriggerfilterbase.h
+epoc32/include/mw/lbttriggerfilterbyarea.h
+epoc32/include/mw/lbttriggerfilterbyattribute.h
+epoc32/include/mw/lbttriggerfiltercomposite.h
+epoc32/include/mw/lbttriggerfiringeventnotifier.h
+epoc32/include/mw/lbttriggerfiringeventobserver.h
+epoc32/include/mw/lbttriggerinfo.h
+epoc32/include/mw/lbttriggeringsystemsettings.h
+epoc32/include/mw/lbttriggeringsystemsettingschangeeventnotifier.h
+epoc32/include/mw/lbttriggeringsystemsettingschangeeventobserver.h
+epoc32/include/mw/memorymanager.h
+epoc32/include/mw/pticore.h
+epoc32/include/mw/rsfwmountentry.h
+epoc32/include/mw/rsfwmountentryitem.h
+epoc32/include/mw/rsfwmountman.h
+epoc32/include/mw/seconsdkcrkeys.h
+epoc32/include/mw/sencryptoutils.h
+epoc32/include/mw/senpointermap.h
+epoc32/include/networkemulator/cnetworkemulatorsetupcommdb.h
+epoc32/include/networkemulator/cprotocoltypes.h
+epoc32/include/networkemulator/cuccsdevicecontrol.h
+epoc32/include/networkemulator/cuccsdeviceprotocol.h
+epoc32/include/networkemulator/mucctransport.h
+epoc32/include/networkemulator/networkemulatorcontrol.h
+epoc32/include/networkemulator/uccs_errorcodes.h
+epoc32/include/networking/dnd_err.h
+epoc32/include/networking/packetlogger.h
+epoc32/include/networking/vj.inl
+epoc32/include/networking/vjcomp.inl
+epoc32/include/non_foundation_paths.hrh
+epoc32/include/obexusbtransportinfo.h
+epoc32/include/panerr.h
+epoc32/include/panprog.h
+epoc32/include/pdrrecrd.h
+epoc32/include/phbksync.h
+epoc32/include/platform_paths.hrh
+epoc32/include/platformstaticfeatures.hrh
+epoc32/include/playerinformationtarget.h
+epoc32/include/playerinformationtargetobserver.h
+epoc32/include/plpsess.inl
+epoc32/include/privateruntimeids.hrh
+epoc32/include/privatestaticfeatures.hrh
+epoc32/include/productvariant.hrh
+epoc32/include/publicruntimeids.hrh
+epoc32/include/publicstaticfeatures.hrh
+epoc32/include/push/cwappushmsgutils.inl
+epoc32/include/regpsdll.inl
+epoc32/include/remconbatterytarget.h
+epoc32/include/remconbatterytargetobserver.h
+epoc32/include/remcongroupnavigationtarget.h
+epoc32/include/remcongroupnavigationtargetobserver.h
+epoc32/include/remconmediainformationtarget.h
+epoc32/include/remconmediainformationtargetobserver.h
+epoc32/include/remconstatusapicontroller.h
+epoc32/include/remconstatusapicontrollerobserver.h
+epoc32/include/s32crypt.inl
+epoc32/include/sbque.h
+epoc32/include/schedulebaseservermtm.h
+epoc32/include/schsend.hrh
+epoc32/include/schsend.rh
+epoc32/include/sensordatacompensationtypes.h
+epoc32/include/sensordatacompensator.h
+epoc32/include/shapeinfo.h
+epoc32/include/sip_subconevents.h
+epoc32/include/sip_subconevents.inl
+epoc32/include/sip_subconparams.h
+epoc32/include/sip_subconparams.inl
+epoc32/include/sipaccessnetworkinfo.inl
+epoc32/include/sipauthorizationheader.h
+epoc32/include/sipauthorizationheaderbase.h
+epoc32/include/sipbearermonitor.inl
+epoc32/include/sipclientresolverconfigcrkeys.h
+epoc32/include/sipconnpref.h
+epoc32/include/sipconnpref.inl
+epoc32/include/siphlerr.h
+epoc32/include/sipnattraversalcontroller.inl
+epoc32/include/sipnattraversalcontrollerinitparams.inl
+epoc32/include/sipprofileagent.inl
+epoc32/include/sipprofileagentinitparams.inl
+epoc32/include/sipprofilealrcontroller.h
+epoc32/include/sipprofilealrobserver.h
+epoc32/include/sipprofileservercrkeys.h
+epoc32/include/sipproxyauthorizationheader.h
+epoc32/include/sipresolvedclient2.h
+epoc32/include/sipresolvedclient2.inl
+epoc32/include/sipsystemstatemonitor.inl
+epoc32/include/smilattributes.h
+epoc32/include/smilelements.h
+epoc32/include/smilgenericelements.h
+epoc32/include/smsuact.h
+epoc32/include/smsuaddr.h
+epoc32/include/smsulog.h
+epoc32/include/smsulog.inl
+epoc32/include/smsuset.h
+epoc32/include/smsuset.inl
+epoc32/include/smsustrm.h
+epoc32/include/speechrecognitionuids.hrh
+epoc32/include/speechrecognitionutility.h
+epoc32/include/speechrecognitionutilityobserver.h
+epoc32/include/ss_std.inl
+epoc32/include/stdapis/boost/any.hpp
+epoc32/include/stdapis/boost/archive/archive_exception.hpp
+epoc32/include/stdapis/boost/archive/basic_archive.hpp
+epoc32/include/stdapis/boost/archive/basic_text_iarchive.hpp
+epoc32/include/stdapis/boost/archive/basic_text_iprimitive.hpp
+epoc32/include/stdapis/boost/archive/basic_text_oarchive.hpp
+epoc32/include/stdapis/boost/archive/basic_text_oprimitive.hpp
+epoc32/include/stdapis/boost/archive/detail/archive_pointer_iserializer.hpp
+epoc32/include/stdapis/boost/archive/detail/archive_pointer_oserializer.hpp
+epoc32/include/stdapis/boost/archive/detail/auto_link_archive.hpp
+epoc32/include/stdapis/boost/archive/detail/basic_iarchive.hpp
+epoc32/include/stdapis/boost/archive/detail/basic_iserializer.hpp
+epoc32/include/stdapis/boost/archive/detail/basic_oarchive.hpp
+epoc32/include/stdapis/boost/archive/detail/basic_oserializer.hpp
+epoc32/include/stdapis/boost/archive/detail/basic_pointer_iserializer.hpp
+epoc32/include/stdapis/boost/archive/detail/basic_pointer_oserializer.hpp
+epoc32/include/stdapis/boost/archive/detail/basic_serializer.hpp
+epoc32/include/stdapis/boost/archive/detail/common_iarchive.hpp
+epoc32/include/stdapis/boost/archive/detail/common_oarchive.hpp
+epoc32/include/stdapis/boost/archive/detail/decl.hpp
+epoc32/include/stdapis/boost/archive/detail/interface_iarchive.hpp
+epoc32/include/stdapis/boost/archive/detail/interface_oarchive.hpp
+epoc32/include/stdapis/boost/archive/detail/iserializer.hpp
+epoc32/include/stdapis/boost/archive/detail/known_archive_types.hpp
+epoc32/include/stdapis/boost/archive/detail/oserializer.hpp
+epoc32/include/stdapis/boost/archive/text_iarchive.hpp
+epoc32/include/stdapis/boost/archive/text_oarchive.hpp
+epoc32/include/stdapis/boost/archive/xml_iarchive.hpp
+epoc32/include/stdapis/boost/archive/xml_oarchive.hpp
+epoc32/include/stdapis/boost/assign/list_inserter.hpp
+epoc32/include/stdapis/boost/assign/std/map.hpp
+epoc32/include/stdapis/boost/bind/bind_cc.hpp
+epoc32/include/stdapis/boost/bind/bind_mf_cc.hpp
+epoc32/include/stdapis/boost/bind/bind_template.hpp
+epoc32/include/stdapis/boost/bind/mem_fn_cc.hpp
+epoc32/include/stdapis/boost/bind/mem_fn_template.hpp
+epoc32/include/stdapis/boost/bind/storage.hpp
+epoc32/include/stdapis/boost/blank.hpp
+epoc32/include/stdapis/boost/blank_fwd.hpp
+epoc32/include/stdapis/boost/checked_delete.hpp
+epoc32/include/stdapis/boost/concept_archetype.hpp
+epoc32/include/stdapis/boost/concept_check.hpp
+epoc32/include/stdapis/boost/config/abi_prefix.hpp
+epoc32/include/stdapis/boost/config/abi_suffix.hpp
+epoc32/include/stdapis/boost/config/auto_link.hpp
+epoc32/include/stdapis/boost/config/compiler/metrowerks.hpp
+epoc32/include/stdapis/boost/config/platform/win32.hpp
+epoc32/include/stdapis/boost/config/select_compiler_config.hpp
+epoc32/include/stdapis/boost/config/select_platform_config.hpp
+epoc32/include/stdapis/boost/config/select_stdlib_config.hpp
+epoc32/include/stdapis/boost/config/stdlib/stlport.hpp
+epoc32/include/stdapis/boost/config/suffix.hpp
+epoc32/include/stdapis/boost/config/user.hpp
+epoc32/include/stdapis/boost/cstdint.hpp
+epoc32/include/stdapis/boost/cstdlib.hpp
+epoc32/include/stdapis/boost/current_function.hpp
+epoc32/include/stdapis/boost/detail/allocator_utilities.hpp
+epoc32/include/stdapis/boost/detail/atomic_count.hpp
+epoc32/include/stdapis/boost/detail/atomic_count_win32.hpp
+epoc32/include/stdapis/boost/detail/bad_weak_ptr.hpp
+epoc32/include/stdapis/boost/detail/binary_search.hpp
+epoc32/include/stdapis/boost/detail/call_traits.hpp
+epoc32/include/stdapis/boost/detail/compressed_pair.hpp
+epoc32/include/stdapis/boost/detail/indirect_traits.hpp
+epoc32/include/stdapis/boost/detail/interlocked.hpp
+epoc32/include/stdapis/boost/detail/is_incrementable.hpp
+epoc32/include/stdapis/boost/detail/lightweight_mutex.hpp
+epoc32/include/stdapis/boost/detail/lightweight_test.hpp
+epoc32/include/stdapis/boost/detail/lwm_nop.hpp
+epoc32/include/stdapis/boost/detail/lwm_pthreads.hpp
+epoc32/include/stdapis/boost/detail/lwm_win32_cs.hpp
+epoc32/include/stdapis/boost/detail/no_exceptions_support.hpp
+epoc32/include/stdapis/boost/detail/numeric_traits.hpp
+epoc32/include/stdapis/boost/detail/quick_allocator.hpp
+epoc32/include/stdapis/boost/detail/reference_content.hpp
+epoc32/include/stdapis/boost/detail/select_type.hpp
+epoc32/include/stdapis/boost/detail/shared_array_nmt.hpp
+epoc32/include/stdapis/boost/detail/shared_count.hpp
+epoc32/include/stdapis/boost/detail/sp_counted_base.hpp
+epoc32/include/stdapis/boost/detail/sp_counted_base_cw_ppc.hpp
+epoc32/include/stdapis/boost/detail/sp_counted_base_cw_x86.hpp
+epoc32/include/stdapis/boost/detail/sp_counted_base_gcc_ia64.hpp
+epoc32/include/stdapis/boost/detail/sp_counted_base_gcc_ppc.hpp
+epoc32/include/stdapis/boost/detail/sp_counted_base_gcc_x86.hpp
+epoc32/include/stdapis/boost/detail/sp_counted_base_nt.hpp
+epoc32/include/stdapis/boost/detail/sp_counted_base_pt.hpp
+epoc32/include/stdapis/boost/detail/sp_counted_base_w32.hpp
+epoc32/include/stdapis/boost/detail/sp_counted_impl.hpp
+epoc32/include/stdapis/boost/detail/templated_streams.hpp
+epoc32/include/stdapis/boost/dynamic_bitset/dynamic_bitset.hpp
+epoc32/include/stdapis/boost/dynamic_bitset_fwd.hpp
+epoc32/include/stdapis/boost/dynamic_property_map.hpp
+epoc32/include/stdapis/boost/enable_shared_from_this.hpp
+epoc32/include/stdapis/boost/function.hpp
+epoc32/include/stdapis/boost/function/detail/function_iterate.hpp
+epoc32/include/stdapis/boost/function/detail/maybe_include.hpp
+epoc32/include/stdapis/boost/function/detail/prologue.hpp
+epoc32/include/stdapis/boost/function/function2.hpp
+epoc32/include/stdapis/boost/function/function3.hpp
+epoc32/include/stdapis/boost/function/function_base.hpp
+epoc32/include/stdapis/boost/function/function_template.hpp
+epoc32/include/stdapis/boost/function_equal.hpp
+epoc32/include/stdapis/boost/functional.hpp
+epoc32/include/stdapis/boost/functional/detail/container_fwd.hpp
+epoc32/include/stdapis/boost/functional/detail/float_functions.hpp
+epoc32/include/stdapis/boost/functional/detail/hash_float.hpp
+epoc32/include/stdapis/boost/functional/hash/hash.hpp
+epoc32/include/stdapis/boost/functional/hash_fwd.hpp
+epoc32/include/stdapis/boost/get_pointer.hpp
+epoc32/include/stdapis/boost/graph/adj_list_serialize.hpp
+epoc32/include/stdapis/boost/graph/adjacency_iterator.hpp
+epoc32/include/stdapis/boost/graph/adjacency_list_io.hpp
+epoc32/include/stdapis/boost/graph/adjacency_matrix.hpp
+epoc32/include/stdapis/boost/graph/astar_search.hpp
+epoc32/include/stdapis/boost/graph/bandwidth.hpp
+epoc32/include/stdapis/boost/graph/bc_clustering.hpp
+epoc32/include/stdapis/boost/graph/bellman_ford_shortest_paths.hpp
+epoc32/include/stdapis/boost/graph/betweenness_centrality.hpp
+epoc32/include/stdapis/boost/graph/biconnected_components.hpp
+epoc32/include/stdapis/boost/graph/breadth_first_search.hpp
+epoc32/include/stdapis/boost/graph/circle_layout.hpp
+epoc32/include/stdapis/boost/graph/compressed_sparse_row_graph.hpp
+epoc32/include/stdapis/boost/graph/connected_components.hpp
+epoc32/include/stdapis/boost/graph/copy.hpp
+epoc32/include/stdapis/boost/graph/create_condensation_graph.hpp
+epoc32/include/stdapis/boost/graph/cuthill_mckee_ordering.hpp
+epoc32/include/stdapis/boost/graph/dag_shortest_paths.hpp
+epoc32/include/stdapis/boost/graph/depth_first_search.hpp
+epoc32/include/stdapis/boost/graph/detail/adj_list_edge_iterator.hpp
+epoc32/include/stdapis/boost/graph/detail/adjacency_list.hpp
+epoc32/include/stdapis/boost/graph/detail/array_binary_tree.hpp
+epoc32/include/stdapis/boost/graph/detail/bitset_adaptor.hpp
+epoc32/include/stdapis/boost/graph/detail/edge.hpp
+epoc32/include/stdapis/boost/graph/detail/incidence_iterator.hpp
+epoc32/include/stdapis/boost/graph/detail/indexed_properties.hpp
+epoc32/include/stdapis/boost/graph/detail/list_base.hpp
+epoc32/include/stdapis/boost/graph/detail/set_adaptor.hpp
+epoc32/include/stdapis/boost/graph/detail/sparse_ordering.hpp
+epoc32/include/stdapis/boost/graph/dijkstra_shortest_paths.hpp
+epoc32/include/stdapis/boost/graph/dominator_tree.hpp
+epoc32/include/stdapis/boost/graph/edge_connectivity.hpp
+epoc32/include/stdapis/boost/graph/edge_list.hpp
+epoc32/include/stdapis/boost/graph/edmunds_karp_max_flow.hpp
+epoc32/include/stdapis/boost/graph/erdos_renyi_generator.hpp
+epoc32/include/stdapis/boost/graph/filtered_graph.hpp
+epoc32/include/stdapis/boost/graph/floyd_warshall_shortest.hpp
+epoc32/include/stdapis/boost/graph/fruchterman_reingold.hpp
+epoc32/include/stdapis/boost/graph/graph_archetypes.hpp
+epoc32/include/stdapis/boost/graph/graph_concepts.hpp
+epoc32/include/stdapis/boost/graph/graph_selectors.hpp
+epoc32/include/stdapis/boost/graph/graph_test.hpp
+epoc32/include/stdapis/boost/graph/graph_traits.hpp
+epoc32/include/stdapis/boost/graph/graph_utility.hpp
+epoc32/include/stdapis/boost/graph/graphviz.hpp
+epoc32/include/stdapis/boost/graph/gursoy_atun_layout.hpp
+epoc32/include/stdapis/boost/graph/incremental_components.hpp
+epoc32/include/stdapis/boost/graph/isomorphism.hpp
+epoc32/include/stdapis/boost/graph/iteration_macros.hpp
+epoc32/include/stdapis/boost/graph/iteration_macros_undef.hpp
+epoc32/include/stdapis/boost/graph/johnson_all_pairs_shortest.hpp
+epoc32/include/stdapis/boost/graph/kamada_kawai_spring_layout.hpp
+epoc32/include/stdapis/boost/graph/king_ordering.hpp
+epoc32/include/stdapis/boost/graph/kruskal_min_spanning_tree.hpp
+epoc32/include/stdapis/boost/graph/leda_graph.hpp
+epoc32/include/stdapis/boost/graph/max_cardinality_matching.hpp
+epoc32/include/stdapis/boost/graph/minimum_degree_ordering.hpp
+epoc32/include/stdapis/boost/graph/named_function_params.hpp
+epoc32/include/stdapis/boost/graph/neighbor_bfs.hpp
+epoc32/include/stdapis/boost/graph/page_rank.hpp
+epoc32/include/stdapis/boost/graph/plod_generator.hpp
+epoc32/include/stdapis/boost/graph/prim_minimum_spanning_tree.hpp
+epoc32/include/stdapis/boost/graph/profile.hpp
+epoc32/include/stdapis/boost/graph/properties.hpp
+epoc32/include/stdapis/boost/graph/property_iter_range.hpp
+epoc32/include/stdapis/boost/graph/push_relabel_max_flow.hpp
+epoc32/include/stdapis/boost/graph/random_layout.hpp
+epoc32/include/stdapis/boost/graph/read_dimacs.hpp
+epoc32/include/stdapis/boost/graph/relax.hpp
+epoc32/include/stdapis/boost/graph/reverse_graph.hpp
+epoc32/include/stdapis/boost/graph/sequential_vertex_coloring.hpp
+epoc32/include/stdapis/boost/graph/simple_point.hpp
+epoc32/include/stdapis/boost/graph/sloan_ordering.hpp
+epoc32/include/stdapis/boost/graph/small_world_generator.hpp
+epoc32/include/stdapis/boost/graph/smallest_last_ordering.hpp
+epoc32/include/stdapis/boost/graph/strong_components.hpp
+epoc32/include/stdapis/boost/graph/subgraph.hpp
+epoc32/include/stdapis/boost/graph/topological_sort.hpp
+epoc32/include/stdapis/boost/graph/transitive_closure.hpp
+epoc32/include/stdapis/boost/graph/transpose_graph.hpp
+epoc32/include/stdapis/boost/graph/tree_traits.hpp
+epoc32/include/stdapis/boost/graph/two_bit_color_map.hpp
+epoc32/include/stdapis/boost/graph/undirected_dfs.hpp
+epoc32/include/stdapis/boost/graph/vector_as_graph.hpp
+epoc32/include/stdapis/boost/graph/visitors.hpp
+epoc32/include/stdapis/boost/implicit_cast.hpp
+epoc32/include/stdapis/boost/indirect_reference.hpp
+epoc32/include/stdapis/boost/integer.hpp
+epoc32/include/stdapis/boost/integer_fwd.hpp
+epoc32/include/stdapis/boost/integer_traits.hpp
+epoc32/include/stdapis/boost/intrusive_ptr.hpp
+epoc32/include/stdapis/boost/io/ios_state.hpp
+epoc32/include/stdapis/boost/io_fwd.hpp
+epoc32/include/stdapis/boost/iterator/counting_iterator.hpp
+epoc32/include/stdapis/boost/iterator/detail/config_def.hpp
+epoc32/include/stdapis/boost/iterator/detail/config_undef.hpp
+epoc32/include/stdapis/boost/iterator/detail/facade_iterator_category.hpp
+epoc32/include/stdapis/boost/iterator/filter_iterator.hpp
+epoc32/include/stdapis/boost/iterator/indirect_iterator.hpp
+epoc32/include/stdapis/boost/iterator/interoperable.hpp
+epoc32/include/stdapis/boost/iterator/iterator_adaptor.hpp
+epoc32/include/stdapis/boost/iterator/iterator_categories.hpp
+epoc32/include/stdapis/boost/iterator/iterator_concepts.hpp
+epoc32/include/stdapis/boost/iterator/iterator_facade.hpp
+epoc32/include/stdapis/boost/iterator/iterator_traits.hpp
+epoc32/include/stdapis/boost/iterator/transform_iterator.hpp
+epoc32/include/stdapis/boost/iterator_adaptors.hpp
+epoc32/include/stdapis/boost/lambda/core.hpp
+epoc32/include/stdapis/boost/lambda/detail/actions.hpp
+epoc32/include/stdapis/boost/lambda/detail/arity_code.hpp
+epoc32/include/stdapis/boost/lambda/detail/function_adaptors.hpp
+epoc32/include/stdapis/boost/lambda/detail/is_instance_of.hpp
+epoc32/include/stdapis/boost/lambda/detail/lambda_config.hpp
+epoc32/include/stdapis/boost/lambda/detail/lambda_functor_base.hpp
+epoc32/include/stdapis/boost/lambda/detail/lambda_functors.hpp
+epoc32/include/stdapis/boost/lambda/detail/lambda_traits.hpp
+epoc32/include/stdapis/boost/lambda/detail/member_ptr.hpp
+epoc32/include/stdapis/boost/lambda/detail/operator_actions.hpp
+epoc32/include/stdapis/boost/lambda/detail/operator_lambda_func_base.hpp
+epoc32/include/stdapis/boost/lambda/detail/operator_return_type_traits.hpp
+epoc32/include/stdapis/boost/lambda/detail/ret.hpp
+epoc32/include/stdapis/boost/lambda/detail/return_type_traits.hpp
+epoc32/include/stdapis/boost/lambda/detail/select_functions.hpp
+epoc32/include/stdapis/boost/lexical_cast.hpp
+epoc32/include/stdapis/boost/math/common_factor.hpp
+epoc32/include/stdapis/boost/math/common_factor_ct.hpp
+epoc32/include/stdapis/boost/math/common_factor_rt.hpp
+epoc32/include/stdapis/boost/math/complex.hpp
+epoc32/include/stdapis/boost/math/complex/acos.hpp
+epoc32/include/stdapis/boost/math/complex/asin.hpp
+epoc32/include/stdapis/boost/math/complex/atan.hpp
+epoc32/include/stdapis/boost/math/complex/details.hpp
+epoc32/include/stdapis/boost/math/complex/fabs.hpp
+epoc32/include/stdapis/boost/math/octonion.hpp
+epoc32/include/stdapis/boost/math/quaternion.hpp
+epoc32/include/stdapis/boost/math/special_functions/acosh.hpp
+epoc32/include/stdapis/boost/math/special_functions/asinh.hpp
+epoc32/include/stdapis/boost/math/special_functions/atanh.hpp
+epoc32/include/stdapis/boost/math/special_functions/detail/series.hpp
+epoc32/include/stdapis/boost/math/special_functions/expm1.hpp
+epoc32/include/stdapis/boost/math/special_functions/hypot.hpp
+epoc32/include/stdapis/boost/math/special_functions/log1p.hpp
+epoc32/include/stdapis/boost/math/special_functions/sinc.hpp
+epoc32/include/stdapis/boost/math/special_functions/sinhc.hpp
+epoc32/include/stdapis/boost/math_fwd.hpp
+epoc32/include/stdapis/boost/mem_fn.hpp
+epoc32/include/stdapis/boost/mpl/advance.hpp
+epoc32/include/stdapis/boost/mpl/advance_fwd.hpp
+epoc32/include/stdapis/boost/mpl/always.hpp
+epoc32/include/stdapis/boost/mpl/arg_fwd.hpp
+epoc32/include/stdapis/boost/mpl/at_fwd.hpp
+epoc32/include/stdapis/boost/mpl/aux_/adl_barrier.hpp
+epoc32/include/stdapis/boost/mpl/aux_/arg_typedef.hpp
+epoc32/include/stdapis/boost/mpl/aux_/arithmetic_op.hpp
+epoc32/include/stdapis/boost/mpl/aux_/arity_spec.hpp
+epoc32/include/stdapis/boost/mpl/aux_/common_name_wknd.hpp
+epoc32/include/stdapis/boost/mpl/aux_/comparison_op.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/adl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/arrays.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/compiler.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/ctps.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/dtp.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/eti.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/forwarding.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/gcc.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/integral.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/intel.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/msvc.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/msvc_typename.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/nttp.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/overload_resolution.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/static_constant.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/ttp.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/typeof.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/use_preprocessed.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/workaround.hpp
+epoc32/include/stdapis/boost/mpl/aux_/contains_impl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/find_if_pred.hpp
+epoc32/include/stdapis/boost/mpl/aux_/front_impl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/has_apply.hpp
+epoc32/include/stdapis/boost/mpl/aux_/has_begin.hpp
+epoc32/include/stdapis/boost/mpl/aux_/has_size.hpp
+epoc32/include/stdapis/boost/mpl/aux_/has_type.hpp
+epoc32/include/stdapis/boost/mpl/aux_/inserter_algorithm.hpp
+epoc32/include/stdapis/boost/mpl/aux_/integral_wrapper.hpp
+epoc32/include/stdapis/boost/mpl/aux_/is_msvc_eti_arg.hpp
+epoc32/include/stdapis/boost/mpl/aux_/iter_apply.hpp
+epoc32/include/stdapis/boost/mpl/aux_/lambda_arity_param.hpp
+epoc32/include/stdapis/boost/mpl/aux_/lambda_spec.hpp
+epoc32/include/stdapis/boost/mpl/aux_/lambda_support.hpp
+epoc32/include/stdapis/boost/mpl/aux_/largest_int.hpp
+epoc32/include/stdapis/boost/mpl/aux_/msvc_eti_base.hpp
+epoc32/include/stdapis/boost/mpl/aux_/msvc_never_true.hpp
+epoc32/include/stdapis/boost/mpl/aux_/msvc_type.hpp
+epoc32/include/stdapis/boost/mpl/aux_/na.hpp
+epoc32/include/stdapis/boost/mpl/aux_/na_assert.hpp
+epoc32/include/stdapis/boost/mpl/aux_/na_fwd.hpp
+epoc32/include/stdapis/boost/mpl/aux_/na_spec.hpp
+epoc32/include/stdapis/boost/mpl/aux_/nested_type_wknd.hpp
+epoc32/include/stdapis/boost/mpl/aux_/nttp_decl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/numeric_cast_utils.hpp
+epoc32/include/stdapis/boost/mpl/aux_/numeric_op.hpp
+epoc32/include/stdapis/boost/mpl/aux_/o1_size_impl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/overload_names.hpp
+epoc32/include/stdapis/boost/mpl/aux_/pop_front_impl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/advance_backward.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/advance_forward.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/apply_fwd.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/arg.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/fold_impl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/full_lambda.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessor/def_params_tail.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessor/default_params.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessor/filter_params.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessor/params.hpp
+epoc32/include/stdapis/boost/mpl/aux_/ptr_to_ref.hpp
+epoc32/include/stdapis/boost/mpl/aux_/push_back_impl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/push_front_impl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/reverse_fold_impl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/reverse_iter_fold_impl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/static_cast.hpp
+epoc32/include/stdapis/boost/mpl/aux_/template_arity.hpp
+epoc32/include/stdapis/boost/mpl/aux_/template_arity_fwd.hpp
+epoc32/include/stdapis/boost/mpl/aux_/traits_lambda_spec.hpp
+epoc32/include/stdapis/boost/mpl/aux_/type_wrapper.hpp
+epoc32/include/stdapis/boost/mpl/aux_/unwrap.hpp
+epoc32/include/stdapis/boost/mpl/aux_/value_wknd.hpp
+epoc32/include/stdapis/boost/mpl/aux_/yes_no.hpp
+epoc32/include/stdapis/boost/mpl/back_fwd.hpp
+epoc32/include/stdapis/boost/mpl/back_inserter.hpp
+epoc32/include/stdapis/boost/mpl/begin_end_fwd.hpp
+epoc32/include/stdapis/boost/mpl/bind.hpp
+epoc32/include/stdapis/boost/mpl/bind_fwd.hpp
+epoc32/include/stdapis/boost/mpl/bool_fwd.hpp
+epoc32/include/stdapis/boost/mpl/clear_fwd.hpp
+epoc32/include/stdapis/boost/mpl/contains.hpp
+epoc32/include/stdapis/boost/mpl/contains_fwd.hpp
+epoc32/include/stdapis/boost/mpl/deref.hpp
+epoc32/include/stdapis/boost/mpl/distance.hpp
+epoc32/include/stdapis/boost/mpl/distance_fwd.hpp
+epoc32/include/stdapis/boost/mpl/empty_fwd.hpp
+epoc32/include/stdapis/boost/mpl/equal_to.hpp
+epoc32/include/stdapis/boost/mpl/erase_fwd.hpp
+epoc32/include/stdapis/boost/mpl/erase_key_fwd.hpp
+epoc32/include/stdapis/boost/mpl/eval_if.hpp
+epoc32/include/stdapis/boost/mpl/find.hpp
+epoc32/include/stdapis/boost/mpl/find_if.hpp
+epoc32/include/stdapis/boost/mpl/fold.hpp
+epoc32/include/stdapis/boost/mpl/front_fwd.hpp
+epoc32/include/stdapis/boost/mpl/front_inserter.hpp
+epoc32/include/stdapis/boost/mpl/has_key.hpp
+epoc32/include/stdapis/boost/mpl/has_key_fwd.hpp
+epoc32/include/stdapis/boost/mpl/has_xxx.hpp
+epoc32/include/stdapis/boost/mpl/insert_fwd.hpp
+epoc32/include/stdapis/boost/mpl/inserter.hpp
+epoc32/include/stdapis/boost/mpl/int.hpp
+epoc32/include/stdapis/boost/mpl/int_fwd.hpp
+epoc32/include/stdapis/boost/mpl/integral_c.hpp
+epoc32/include/stdapis/boost/mpl/integral_c_fwd.hpp
+epoc32/include/stdapis/boost/mpl/integral_c_tag.hpp
+epoc32/include/stdapis/boost/mpl/is_sequence.hpp
+epoc32/include/stdapis/boost/mpl/iter_fold.hpp
+epoc32/include/stdapis/boost/mpl/iter_fold_if.hpp
+epoc32/include/stdapis/boost/mpl/iterator_category.hpp
+epoc32/include/stdapis/boost/mpl/iterator_tags.hpp
+epoc32/include/stdapis/boost/mpl/key_type_fwd.hpp
+epoc32/include/stdapis/boost/mpl/lambda.hpp
+epoc32/include/stdapis/boost/mpl/lambda_fwd.hpp
+epoc32/include/stdapis/boost/mpl/limits/arity.hpp
+epoc32/include/stdapis/boost/mpl/list/list0.hpp
+epoc32/include/stdapis/boost/mpl/list/list10.hpp
+epoc32/include/stdapis/boost/mpl/list/list20.hpp
+epoc32/include/stdapis/boost/mpl/long.hpp
+epoc32/include/stdapis/boost/mpl/long_fwd.hpp
+epoc32/include/stdapis/boost/mpl/max_element.hpp
+epoc32/include/stdapis/boost/mpl/min_max.hpp
+epoc32/include/stdapis/boost/mpl/minus.hpp
+epoc32/include/stdapis/boost/mpl/multiplies.hpp
+epoc32/include/stdapis/boost/mpl/negate.hpp
+epoc32/include/stdapis/boost/mpl/next.hpp
+epoc32/include/stdapis/boost/mpl/numeric_cast.hpp
+epoc32/include/stdapis/boost/mpl/o1_size_fwd.hpp
+epoc32/include/stdapis/boost/mpl/pair.hpp
+epoc32/include/stdapis/boost/mpl/pair_view.hpp
+epoc32/include/stdapis/boost/mpl/placeholders.hpp
+epoc32/include/stdapis/boost/mpl/plus.hpp
+epoc32/include/stdapis/boost/mpl/pop_back_fwd.hpp
+epoc32/include/stdapis/boost/mpl/pop_front_fwd.hpp
+epoc32/include/stdapis/boost/mpl/prior.hpp
+epoc32/include/stdapis/boost/mpl/protect.hpp
+epoc32/include/stdapis/boost/mpl/push_back_fwd.hpp
+epoc32/include/stdapis/boost/mpl/push_front_fwd.hpp
+epoc32/include/stdapis/boost/mpl/quote.hpp
+epoc32/include/stdapis/boost/mpl/reverse_fold.hpp
+epoc32/include/stdapis/boost/mpl/reverse_iter_fold.hpp
+epoc32/include/stdapis/boost/mpl/same_as.hpp
+epoc32/include/stdapis/boost/mpl/sequence_tag.hpp
+epoc32/include/stdapis/boost/mpl/sequence_tag_fwd.hpp
+epoc32/include/stdapis/boost/mpl/set/aux_/at_impl.hpp
+epoc32/include/stdapis/boost/mpl/set/aux_/begin_end_impl.hpp
+epoc32/include/stdapis/boost/mpl/set/aux_/clear_impl.hpp
+epoc32/include/stdapis/boost/mpl/set/aux_/empty_impl.hpp
+epoc32/include/stdapis/boost/mpl/set/aux_/erase_impl.hpp
+epoc32/include/stdapis/boost/mpl/set/aux_/erase_key_impl.hpp
+epoc32/include/stdapis/boost/mpl/set/aux_/has_key_impl.hpp
+epoc32/include/stdapis/boost/mpl/set/aux_/insert_impl.hpp
+epoc32/include/stdapis/boost/mpl/set/aux_/key_type_impl.hpp
+epoc32/include/stdapis/boost/mpl/set/aux_/size_impl.hpp
+epoc32/include/stdapis/boost/mpl/set/aux_/value_type_impl.hpp
+epoc32/include/stdapis/boost/mpl/set/set0.hpp
+epoc32/include/stdapis/boost/mpl/size_fwd.hpp
+epoc32/include/stdapis/boost/mpl/size_t.hpp
+epoc32/include/stdapis/boost/mpl/size_t_fwd.hpp
+epoc32/include/stdapis/boost/mpl/sizeof.hpp
+epoc32/include/stdapis/boost/mpl/times.hpp
+epoc32/include/stdapis/boost/mpl/value_type_fwd.hpp
+epoc32/include/stdapis/boost/mpl/vector.hpp
+epoc32/include/stdapis/boost/mpl/vector/aux_/back.hpp
+epoc32/include/stdapis/boost/mpl/vector/aux_/begin_end.hpp
+epoc32/include/stdapis/boost/mpl/vector/aux_/clear.hpp
+epoc32/include/stdapis/boost/mpl/vector/aux_/front.hpp
+epoc32/include/stdapis/boost/mpl/vector/aux_/include_preprocessed.hpp
+epoc32/include/stdapis/boost/mpl/vector/aux_/item.hpp
+epoc32/include/stdapis/boost/mpl/vector/aux_/o1_size.hpp
+epoc32/include/stdapis/boost/mpl/vector/vector0.hpp
+epoc32/include/stdapis/boost/mpl/vector/vector10.hpp
+epoc32/include/stdapis/boost/mpl/vector/vector20.hpp
+epoc32/include/stdapis/boost/mpl/void.hpp
+epoc32/include/stdapis/boost/mpl/void_fwd.hpp
+epoc32/include/stdapis/boost/multi_array.hpp
+epoc32/include/stdapis/boost/multi_array/algorithm.hpp
+epoc32/include/stdapis/boost/multi_array/base.hpp
+epoc32/include/stdapis/boost/multi_array/collection_concept.hpp
+epoc32/include/stdapis/boost/multi_array/concept_checks.hpp
+epoc32/include/stdapis/boost/multi_array/copy_array.hpp
+epoc32/include/stdapis/boost/multi_array/extent_gen.hpp
+epoc32/include/stdapis/boost/multi_array/extent_range.hpp
+epoc32/include/stdapis/boost/multi_array/index_gen.hpp
+epoc32/include/stdapis/boost/multi_array/index_range.hpp
+epoc32/include/stdapis/boost/multi_array/multi_array_ref.hpp
+epoc32/include/stdapis/boost/multi_array/range_list.hpp
+epoc32/include/stdapis/boost/multi_array/storage_order.hpp
+epoc32/include/stdapis/boost/multi_array/subarray.hpp
+epoc32/include/stdapis/boost/multi_array/types.hpp
+epoc32/include/stdapis/boost/multi_array/view.hpp
+epoc32/include/stdapis/boost/multi_index/composite_key.hpp
+epoc32/include/stdapis/boost/multi_index/detail/access_specifier.hpp
+epoc32/include/stdapis/boost/multi_index/detail/archive_constructed.hpp
+epoc32/include/stdapis/boost/multi_index/detail/auto_space.hpp
+epoc32/include/stdapis/boost/multi_index/detail/base_type.hpp
+epoc32/include/stdapis/boost/multi_index/detail/bidir_node_iterator.hpp
+epoc32/include/stdapis/boost/multi_index/detail/bucket_array.hpp
+epoc32/include/stdapis/boost/multi_index/detail/copy_map.hpp
+epoc32/include/stdapis/boost/multi_index/detail/def_ctor_tuple_cons.hpp
+epoc32/include/stdapis/boost/multi_index/detail/duplicates_iterator.hpp
+epoc32/include/stdapis/boost/multi_index/detail/has_tag.hpp
+epoc32/include/stdapis/boost/multi_index/detail/hash_index_args.hpp
+epoc32/include/stdapis/boost/multi_index/detail/hash_index_iterator.hpp
+epoc32/include/stdapis/boost/multi_index/detail/hash_index_node.hpp
+epoc32/include/stdapis/boost/multi_index/detail/header_holder.hpp
+epoc32/include/stdapis/boost/multi_index/detail/index_base.hpp
+epoc32/include/stdapis/boost/multi_index/detail/index_loader.hpp
+epoc32/include/stdapis/boost/multi_index/detail/index_matcher.hpp
+epoc32/include/stdapis/boost/multi_index/detail/index_node_base.hpp
+epoc32/include/stdapis/boost/multi_index/detail/index_saver.hpp
+epoc32/include/stdapis/boost/multi_index/detail/invariant_assert.hpp
+epoc32/include/stdapis/boost/multi_index/detail/is_index_list.hpp
+epoc32/include/stdapis/boost/multi_index/detail/iter_adaptor.hpp
+epoc32/include/stdapis/boost/multi_index/detail/modify_key_adaptor.hpp
+epoc32/include/stdapis/boost/multi_index/detail/msvc_index_specifier.hpp
+epoc32/include/stdapis/boost/multi_index/detail/no_duplicate_tags.hpp
+epoc32/include/stdapis/boost/multi_index/detail/node_type.hpp
+epoc32/include/stdapis/boost/multi_index/detail/ord_index_args.hpp
+epoc32/include/stdapis/boost/multi_index/detail/ord_index_node.hpp
+epoc32/include/stdapis/boost/multi_index/detail/ord_index_ops.hpp
+epoc32/include/stdapis/boost/multi_index/detail/prevent_eti.hpp
+epoc32/include/stdapis/boost/multi_index/detail/rnd_index_loader.hpp
+epoc32/include/stdapis/boost/multi_index/detail/rnd_index_node.hpp
+epoc32/include/stdapis/boost/multi_index/detail/rnd_index_ops.hpp
+epoc32/include/stdapis/boost/multi_index/detail/rnd_index_ptr_array.hpp
+epoc32/include/stdapis/boost/multi_index/detail/rnd_node_iterator.hpp
+epoc32/include/stdapis/boost/multi_index/detail/safe_ctr_proxy.hpp
+epoc32/include/stdapis/boost/multi_index/detail/safe_mode.hpp
+epoc32/include/stdapis/boost/multi_index/detail/scope_guard.hpp
+epoc32/include/stdapis/boost/multi_index/detail/seq_index_node.hpp
+epoc32/include/stdapis/boost/multi_index/detail/seq_index_ops.hpp
+epoc32/include/stdapis/boost/multi_index/detail/uintptr_type.hpp
+epoc32/include/stdapis/boost/multi_index/detail/unbounded.hpp
+epoc32/include/stdapis/boost/multi_index/detail/value_compare.hpp
+epoc32/include/stdapis/boost/multi_index/hashed_index.hpp
+epoc32/include/stdapis/boost/multi_index/hashed_index_fwd.hpp
+epoc32/include/stdapis/boost/multi_index/identity_fwd.hpp
+epoc32/include/stdapis/boost/multi_index/indexed_by.hpp
+epoc32/include/stdapis/boost/multi_index/key_extractors.hpp
+epoc32/include/stdapis/boost/multi_index/mem_fun.hpp
+epoc32/include/stdapis/boost/multi_index/member.hpp
+epoc32/include/stdapis/boost/multi_index/ordered_index.hpp
+epoc32/include/stdapis/boost/multi_index/ordered_index_fwd.hpp
+epoc32/include/stdapis/boost/multi_index/random_access_index.hpp
+epoc32/include/stdapis/boost/multi_index/random_access_index_fwd.hpp
+epoc32/include/stdapis/boost/multi_index/safe_mode_errors.hpp
+epoc32/include/stdapis/boost/multi_index/sequenced_index.hpp
+epoc32/include/stdapis/boost/multi_index/sequenced_index_fwd.hpp
+epoc32/include/stdapis/boost/multi_index/tag.hpp
+epoc32/include/stdapis/boost/multi_index_container.hpp
+epoc32/include/stdapis/boost/multi_index_container_fwd.hpp
+epoc32/include/stdapis/boost/next_prior.hpp
+epoc32/include/stdapis/boost/noncopyable.hpp
+epoc32/include/stdapis/boost/none.hpp
+epoc32/include/stdapis/boost/numeric/conversion/cast.hpp
+epoc32/include/stdapis/boost/numeric/conversion/converter_policies.hpp
+epoc32/include/stdapis/boost/numeric/conversion/detail/bounds.hpp
+epoc32/include/stdapis/boost/numeric/conversion/detail/converter.hpp
+epoc32/include/stdapis/boost/numeric/conversion/detail/int_float_mixture.hpp
+epoc32/include/stdapis/boost/numeric/conversion/detail/is_subranged.hpp
+epoc32/include/stdapis/boost/numeric/conversion/detail/meta.hpp
+epoc32/include/stdapis/boost/numeric/conversion/detail/sign_mixture.hpp
+epoc32/include/stdapis/boost/numeric/conversion/detail/udt_builtin_mixture.hpp
+epoc32/include/stdapis/boost/numeric/conversion/int_float_mixture_enum.hpp
+epoc32/include/stdapis/boost/numeric/conversion/sign_mixture_enum.hpp
+epoc32/include/stdapis/boost/numeric/conversion/udt_builtin_mixture_enum.hpp
+epoc32/include/stdapis/boost/operators.hpp
+epoc32/include/stdapis/boost/optional/optional.hpp
+epoc32/include/stdapis/boost/optional/optional_fwd.hpp
+epoc32/include/stdapis/boost/pending/bucket_sorter.hpp
+epoc32/include/stdapis/boost/pending/container_traits.hpp
+epoc32/include/stdapis/boost/pending/cstddef.hpp
+epoc32/include/stdapis/boost/pending/ct_if.hpp
+epoc32/include/stdapis/boost/pending/disjoint_sets.hpp
+epoc32/include/stdapis/boost/pending/indirect_cmp.hpp
+epoc32/include/stdapis/boost/pending/integer_log2.hpp
+epoc32/include/stdapis/boost/pending/integer_range.hpp
+epoc32/include/stdapis/boost/pending/is_heap.hpp
+epoc32/include/stdapis/boost/pending/lowest_bit.hpp
+epoc32/include/stdapis/boost/pending/mutable_heap.hpp
+epoc32/include/stdapis/boost/pending/mutable_queue.hpp
+epoc32/include/stdapis/boost/pending/property.hpp
+epoc32/include/stdapis/boost/pending/property_serialize.hpp
+epoc32/include/stdapis/boost/pending/queue.hpp
+epoc32/include/stdapis/boost/pending/relaxed_heap.hpp
+epoc32/include/stdapis/boost/pfto.hpp
+epoc32/include/stdapis/boost/pointee.hpp
+epoc32/include/stdapis/boost/pointer_cast.hpp
+epoc32/include/stdapis/boost/pointer_to_other.hpp
+epoc32/include/stdapis/boost/preprocessor.hpp
+epoc32/include/stdapis/boost/preprocessor/arithmetic.hpp
+epoc32/include/stdapis/boost/preprocessor/arithmetic/add.hpp
+epoc32/include/stdapis/boost/preprocessor/arithmetic/dec.hpp
+epoc32/include/stdapis/boost/preprocessor/arithmetic/detail/div_base.hpp
+epoc32/include/stdapis/boost/preprocessor/arithmetic/div.hpp
+epoc32/include/stdapis/boost/preprocessor/arithmetic/mod.hpp
+epoc32/include/stdapis/boost/preprocessor/arithmetic/mul.hpp
+epoc32/include/stdapis/boost/preprocessor/arithmetic/sub.hpp
+epoc32/include/stdapis/boost/preprocessor/array.hpp
+epoc32/include/stdapis/boost/preprocessor/array/data.hpp
+epoc32/include/stdapis/boost/preprocessor/comparison.hpp
+epoc32/include/stdapis/boost/preprocessor/comparison/equal.hpp
+epoc32/include/stdapis/boost/preprocessor/comparison/greater.hpp
+epoc32/include/stdapis/boost/preprocessor/comparison/greater_equal.hpp
+epoc32/include/stdapis/boost/preprocessor/comparison/less.hpp
+epoc32/include/stdapis/boost/preprocessor/comparison/less_equal.hpp
+epoc32/include/stdapis/boost/preprocessor/comparison/not_equal.hpp
+epoc32/include/stdapis/boost/preprocessor/config/limits.hpp
+epoc32/include/stdapis/boost/preprocessor/control.hpp
+epoc32/include/stdapis/boost/preprocessor/control/deduce_d.hpp
+epoc32/include/stdapis/boost/preprocessor/control/expr_if.hpp
+epoc32/include/stdapis/boost/preprocessor/control/expr_iif.hpp
+epoc32/include/stdapis/boost/preprocessor/control/if.hpp
+epoc32/include/stdapis/boost/preprocessor/control/iif.hpp
+epoc32/include/stdapis/boost/preprocessor/control/while.hpp
+epoc32/include/stdapis/boost/preprocessor/debug.hpp
+epoc32/include/stdapis/boost/preprocessor/debug/assert.hpp
+epoc32/include/stdapis/boost/preprocessor/debug/error.hpp
+epoc32/include/stdapis/boost/preprocessor/debug/line.hpp
+epoc32/include/stdapis/boost/preprocessor/detail/auto_rec.hpp
+epoc32/include/stdapis/boost/preprocessor/detail/check.hpp
+epoc32/include/stdapis/boost/preprocessor/detail/is_binary.hpp
+epoc32/include/stdapis/boost/preprocessor/detail/is_unary.hpp
+epoc32/include/stdapis/boost/preprocessor/facilities.hpp
+epoc32/include/stdapis/boost/preprocessor/facilities/apply.hpp
+epoc32/include/stdapis/boost/preprocessor/facilities/expand.hpp
+epoc32/include/stdapis/boost/preprocessor/facilities/intercept.hpp
+epoc32/include/stdapis/boost/preprocessor/identity.hpp
+epoc32/include/stdapis/boost/preprocessor/inc.hpp
+epoc32/include/stdapis/boost/preprocessor/iteration.hpp
+epoc32/include/stdapis/boost/preprocessor/iteration/detail/bounds/lower1.hpp
+epoc32/include/stdapis/boost/preprocessor/iteration/detail/bounds/upper1.hpp
+epoc32/include/stdapis/boost/preprocessor/iteration/detail/finish.hpp
+epoc32/include/stdapis/boost/preprocessor/iteration/detail/iter/forward1.hpp
+epoc32/include/stdapis/boost/preprocessor/iteration/detail/start.hpp
+epoc32/include/stdapis/boost/preprocessor/iteration/iterate.hpp
+epoc32/include/stdapis/boost/preprocessor/iteration/local.hpp
+epoc32/include/stdapis/boost/preprocessor/iteration/self.hpp
+epoc32/include/stdapis/boost/preprocessor/library.hpp
+epoc32/include/stdapis/boost/preprocessor/list.hpp
+epoc32/include/stdapis/boost/preprocessor/list/adt.hpp
+epoc32/include/stdapis/boost/preprocessor/list/append.hpp
+epoc32/include/stdapis/boost/preprocessor/list/at.hpp
+epoc32/include/stdapis/boost/preprocessor/logical.hpp
+epoc32/include/stdapis/boost/preprocessor/logical/and.hpp
+epoc32/include/stdapis/boost/preprocessor/logical/bitand.hpp
+epoc32/include/stdapis/boost/preprocessor/logical/bitnor.hpp
+epoc32/include/stdapis/boost/preprocessor/logical/bitor.hpp
+epoc32/include/stdapis/boost/preprocessor/logical/bitxor.hpp
+epoc32/include/stdapis/boost/preprocessor/logical/bool.hpp
+epoc32/include/stdapis/boost/preprocessor/logical/compl.hpp
+epoc32/include/stdapis/boost/preprocessor/logical/nor.hpp
+epoc32/include/stdapis/boost/preprocessor/logical/not.hpp
+epoc32/include/stdapis/boost/preprocessor/logical/or.hpp
+epoc32/include/stdapis/boost/preprocessor/logical/xor.hpp
+epoc32/include/stdapis/boost/preprocessor/punctuation.hpp
+epoc32/include/stdapis/boost/preprocessor/punctuation/comma.hpp
+epoc32/include/stdapis/boost/preprocessor/punctuation/comma_if.hpp
+epoc32/include/stdapis/boost/preprocessor/punctuation/paren.hpp
+epoc32/include/stdapis/boost/preprocessor/punctuation/paren_if.hpp
+epoc32/include/stdapis/boost/preprocessor/repeat_2nd.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/deduce_r.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/deduce_z.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/enum_binary_params.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/enum_params.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/enum_params_with_a_default.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/enum_params_with_defaults.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/enum_shifted.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/enum_shifted_binary_params.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/enum_shifted_params.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/enum_trailing.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/enum_trailing_binary_params.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/enum_trailing_params.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/for.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/repeat.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/repeat_from_to.hpp
+epoc32/include/stdapis/boost/preprocessor/selection.hpp
+epoc32/include/stdapis/boost/preprocessor/selection/max.hpp
+epoc32/include/stdapis/boost/preprocessor/selection/min.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/cat.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/detail/split.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/enum.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/filter.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/first_n.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/fold_left.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/fold_right.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/for_each.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/for_each_i.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/for_each_product.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/insert.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/pop_back.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/pop_front.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/push_back.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/push_front.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/remove.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/replace.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/rest_n.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/seq.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/subseq.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/to_array.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/to_tuple.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/transform.hpp
+epoc32/include/stdapis/boost/preprocessor/slot/detail/def.hpp
+epoc32/include/stdapis/boost/preprocessor/slot/detail/shared.hpp
+epoc32/include/stdapis/boost/preprocessor/slot/slot.hpp
+epoc32/include/stdapis/boost/preprocessor/stringize.hpp
+epoc32/include/stdapis/boost/preprocessor/tuple/eat.hpp
+epoc32/include/stdapis/boost/preprocessor/tuple/elem.hpp
+epoc32/include/stdapis/boost/preprocessor/tuple/rem.hpp
+epoc32/include/stdapis/boost/preprocessor/tuple/reverse.hpp
+epoc32/include/stdapis/boost/preprocessor/tuple/to_list.hpp
+epoc32/include/stdapis/boost/preprocessor/tuple/to_seq.hpp
+epoc32/include/stdapis/boost/progress.hpp
+epoc32/include/stdapis/boost/property_map.hpp
+epoc32/include/stdapis/boost/property_map_iterator.hpp
+epoc32/include/stdapis/boost/ptr_container/clone_allocator.hpp
+epoc32/include/stdapis/boost/ptr_container/detail/associative_ptr_container.hpp
+epoc32/include/stdapis/boost/ptr_container/detail/default_deleter.hpp
+epoc32/include/stdapis/boost/ptr_container/detail/map_iterator.hpp
+epoc32/include/stdapis/boost/ptr_container/detail/reversible_ptr_container.hpp
+epoc32/include/stdapis/boost/ptr_container/detail/scoped_deleter.hpp
+epoc32/include/stdapis/boost/ptr_container/detail/static_move_ptr.hpp
+epoc32/include/stdapis/boost/ptr_container/detail/void_ptr_iterator.hpp
+epoc32/include/stdapis/boost/ptr_container/exception.hpp
+epoc32/include/stdapis/boost/ptr_container/indirect_fun.hpp
+epoc32/include/stdapis/boost/ptr_container/nullable.hpp
+epoc32/include/stdapis/boost/ptr_container/ptr_array.hpp
+epoc32/include/stdapis/boost/ptr_container/ptr_container.hpp
+epoc32/include/stdapis/boost/ptr_container/ptr_deque.hpp
+epoc32/include/stdapis/boost/ptr_container/ptr_list.hpp
+epoc32/include/stdapis/boost/ptr_container/ptr_map.hpp
+epoc32/include/stdapis/boost/ptr_container/ptr_map_adapter.hpp
+epoc32/include/stdapis/boost/ptr_container/ptr_sequence_adapter.hpp
+epoc32/include/stdapis/boost/ptr_container/ptr_set.hpp
+epoc32/include/stdapis/boost/ptr_container/ptr_set_adapter.hpp
+epoc32/include/stdapis/boost/ptr_container/ptr_vector.hpp
+epoc32/include/stdapis/boost/random.hpp
+epoc32/include/stdapis/boost/random/additive_combine.hpp
+epoc32/include/stdapis/boost/random/bernoulli_distribution.hpp
+epoc32/include/stdapis/boost/random/binomial_distribution.hpp
+epoc32/include/stdapis/boost/random/cauchy_distribution.hpp
+epoc32/include/stdapis/boost/random/detail/const_mod.hpp
+epoc32/include/stdapis/boost/random/detail/pass_through_engine.hpp
+epoc32/include/stdapis/boost/random/detail/ptr_helper.hpp
+epoc32/include/stdapis/boost/random/detail/signed_unsigned_compare.hpp
+epoc32/include/stdapis/boost/random/detail/uniform_int_float.hpp
+epoc32/include/stdapis/boost/random/discard_block.hpp
+epoc32/include/stdapis/boost/random/exponential_distribution.hpp
+epoc32/include/stdapis/boost/random/gamma_distribution.hpp
+epoc32/include/stdapis/boost/random/geometric_distribution.hpp
+epoc32/include/stdapis/boost/random/inversive_congruential.hpp
+epoc32/include/stdapis/boost/random/lagged_fibonacci.hpp
+epoc32/include/stdapis/boost/random/linear_congruential.hpp
+epoc32/include/stdapis/boost/random/linear_feedback_shift.hpp
+epoc32/include/stdapis/boost/random/lognormal_distribution.hpp
+epoc32/include/stdapis/boost/random/mersenne_twister.hpp
+epoc32/include/stdapis/boost/random/normal_distribution.hpp
+epoc32/include/stdapis/boost/random/poisson_distribution.hpp
+epoc32/include/stdapis/boost/random/random_number_generator.hpp
+epoc32/include/stdapis/boost/random/ranlux.hpp
+epoc32/include/stdapis/boost/random/shuffle_output.hpp
+epoc32/include/stdapis/boost/random/subtract_with_carry.hpp
+epoc32/include/stdapis/boost/random/triangle_distribution.hpp
+epoc32/include/stdapis/boost/random/uniform_01.hpp
+epoc32/include/stdapis/boost/random/uniform_int.hpp
+epoc32/include/stdapis/boost/random/uniform_on_sphere.hpp
+epoc32/include/stdapis/boost/random/uniform_real.hpp
+epoc32/include/stdapis/boost/random/uniform_smallint.hpp
+epoc32/include/stdapis/boost/random/variate_generator.hpp
+epoc32/include/stdapis/boost/random/xor_combine.hpp
+epoc32/include/stdapis/boost/range/begin.hpp
+epoc32/include/stdapis/boost/range/const_iterator.hpp
+epoc32/include/stdapis/boost/range/const_reverse_iterator.hpp
+epoc32/include/stdapis/boost/range/detail/common.hpp
+epoc32/include/stdapis/boost/range/detail/implementation_help.hpp
+epoc32/include/stdapis/boost/range/detail/sfinae.hpp
+epoc32/include/stdapis/boost/range/difference_type.hpp
+epoc32/include/stdapis/boost/range/empty.hpp
+epoc32/include/stdapis/boost/range/end.hpp
+epoc32/include/stdapis/boost/range/functions.hpp
+epoc32/include/stdapis/boost/range/iterator.hpp
+epoc32/include/stdapis/boost/range/iterator_range.hpp
+epoc32/include/stdapis/boost/range/rbegin.hpp
+epoc32/include/stdapis/boost/range/rend.hpp
+epoc32/include/stdapis/boost/range/result_iterator.hpp
+epoc32/include/stdapis/boost/range/reverse_iterator.hpp
+epoc32/include/stdapis/boost/range/reverse_result_iterator.hpp
+epoc32/include/stdapis/boost/range/size.hpp
+epoc32/include/stdapis/boost/range/size_type.hpp
+epoc32/include/stdapis/boost/range/sub_range.hpp
+epoc32/include/stdapis/boost/range/value_type.hpp
+epoc32/include/stdapis/boost/ref.hpp
+epoc32/include/stdapis/boost/scoped_array.hpp
+epoc32/include/stdapis/boost/scoped_ptr.hpp
+epoc32/include/stdapis/boost/serialization/access.hpp
+epoc32/include/stdapis/boost/serialization/base_object.hpp
+epoc32/include/stdapis/boost/serialization/binary_object.hpp
+epoc32/include/stdapis/boost/serialization/export.hpp
+epoc32/include/stdapis/boost/serialization/extended_type_info.hpp
+epoc32/include/stdapis/boost/serialization/extended_type_info_typeid.hpp
+epoc32/include/stdapis/boost/serialization/force_include.hpp
+epoc32/include/stdapis/boost/serialization/level.hpp
+epoc32/include/stdapis/boost/serialization/level_enum.hpp
+epoc32/include/stdapis/boost/serialization/nvp.hpp
+epoc32/include/stdapis/boost/serialization/serialization.hpp
+epoc32/include/stdapis/boost/serialization/split_member.hpp
+epoc32/include/stdapis/boost/serialization/string.hpp
+epoc32/include/stdapis/boost/serialization/tracking.hpp
+epoc32/include/stdapis/boost/serialization/tracking_enum.hpp
+epoc32/include/stdapis/boost/serialization/traits.hpp
+epoc32/include/stdapis/boost/serialization/type_info_implementation.hpp
+epoc32/include/stdapis/boost/serialization/void_cast.hpp
+epoc32/include/stdapis/boost/serialization/void_cast_fwd.hpp
+epoc32/include/stdapis/boost/shared_array.hpp
+epoc32/include/stdapis/boost/shared_ptr.hpp
+epoc32/include/stdapis/boost/smart_cast.hpp
+epoc32/include/stdapis/boost/static_assert.hpp
+epoc32/include/stdapis/boost/static_warning.hpp
+epoc32/include/stdapis/boost/strong_typedef.hpp
+epoc32/include/stdapis/boost/throw_exception.hpp
+epoc32/include/stdapis/boost/timer.hpp
+epoc32/include/stdapis/boost/tuple/detail/tuple_basic.hpp
+epoc32/include/stdapis/boost/tuple/tuple.hpp
+epoc32/include/stdapis/boost/type.hpp
+epoc32/include/stdapis/boost/type_traits.hpp
+epoc32/include/stdapis/boost/type_traits/add_const.hpp
+epoc32/include/stdapis/boost/type_traits/add_cv.hpp
+epoc32/include/stdapis/boost/type_traits/add_pointer.hpp
+epoc32/include/stdapis/boost/type_traits/add_reference.hpp
+epoc32/include/stdapis/boost/type_traits/add_volatile.hpp
+epoc32/include/stdapis/boost/type_traits/aligned_storage.hpp
+epoc32/include/stdapis/boost/type_traits/alignment_of.hpp
+epoc32/include/stdapis/boost/type_traits/broken_compiler_spec.hpp
+epoc32/include/stdapis/boost/type_traits/composite_traits.hpp
+epoc32/include/stdapis/boost/type_traits/conversion_traits.hpp
+epoc32/include/stdapis/boost/type_traits/cv_traits.hpp
+epoc32/include/stdapis/boost/type_traits/detail/cv_traits_impl.hpp
+epoc32/include/stdapis/boost/type_traits/detail/false_result.hpp
+epoc32/include/stdapis/boost/type_traits/detail/ice_and.hpp
+epoc32/include/stdapis/boost/type_traits/detail/ice_eq.hpp
+epoc32/include/stdapis/boost/type_traits/detail/ice_not.hpp
+epoc32/include/stdapis/boost/type_traits/detail/ice_or.hpp
+epoc32/include/stdapis/boost/type_traits/detail/is_function_ptr_helper.hpp
+epoc32/include/stdapis/boost/type_traits/detail/is_function_ptr_tester.hpp
+epoc32/include/stdapis/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp
+epoc32/include/stdapis/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp
+epoc32/include/stdapis/boost/type_traits/detail/size_t_trait_def.hpp
+epoc32/include/stdapis/boost/type_traits/detail/size_t_trait_undef.hpp
+epoc32/include/stdapis/boost/type_traits/detail/template_arity_spec.hpp
+epoc32/include/stdapis/boost/type_traits/detail/type_trait_def.hpp
+epoc32/include/stdapis/boost/type_traits/detail/type_trait_undef.hpp
+epoc32/include/stdapis/boost/type_traits/detail/yes_no_type.hpp
+epoc32/include/stdapis/boost/type_traits/extent.hpp
+epoc32/include/stdapis/boost/type_traits/function_traits.hpp
+epoc32/include/stdapis/boost/type_traits/has_nothrow_assign.hpp
+epoc32/include/stdapis/boost/type_traits/has_nothrow_constructor.hpp
+epoc32/include/stdapis/boost/type_traits/has_nothrow_copy.hpp
+epoc32/include/stdapis/boost/type_traits/has_nothrow_destructor.hpp
+epoc32/include/stdapis/boost/type_traits/has_trivial_assign.hpp
+epoc32/include/stdapis/boost/type_traits/has_trivial_constructor.hpp
+epoc32/include/stdapis/boost/type_traits/has_trivial_copy.hpp
+epoc32/include/stdapis/boost/type_traits/has_trivial_destructor.hpp
+epoc32/include/stdapis/boost/type_traits/has_virtual_destructor.hpp
+epoc32/include/stdapis/boost/type_traits/ice.hpp
+epoc32/include/stdapis/boost/type_traits/integral_constant.hpp
+epoc32/include/stdapis/boost/type_traits/intrinsics.hpp
+epoc32/include/stdapis/boost/type_traits/is_abstract.hpp
+epoc32/include/stdapis/boost/type_traits/is_arithmetic.hpp
+epoc32/include/stdapis/boost/type_traits/is_array.hpp
+epoc32/include/stdapis/boost/type_traits/is_base_and_derived.hpp
+epoc32/include/stdapis/boost/type_traits/is_base_of.hpp
+epoc32/include/stdapis/boost/type_traits/is_class.hpp
+epoc32/include/stdapis/boost/type_traits/is_compound.hpp
+epoc32/include/stdapis/boost/type_traits/is_const.hpp
+epoc32/include/stdapis/boost/type_traits/is_convertible.hpp
+epoc32/include/stdapis/boost/type_traits/is_empty.hpp
+epoc32/include/stdapis/boost/type_traits/is_enum.hpp
+epoc32/include/stdapis/boost/type_traits/is_float.hpp
+epoc32/include/stdapis/boost/type_traits/is_floating_point.hpp
+epoc32/include/stdapis/boost/type_traits/is_function.hpp
+epoc32/include/stdapis/boost/type_traits/is_fundamental.hpp
+epoc32/include/stdapis/boost/type_traits/is_integral.hpp
+epoc32/include/stdapis/boost/type_traits/is_member_function_pointer.hpp
+epoc32/include/stdapis/boost/type_traits/is_member_object_pointer.hpp
+epoc32/include/stdapis/boost/type_traits/is_member_pointer.hpp
+epoc32/include/stdapis/boost/type_traits/is_object.hpp
+epoc32/include/stdapis/boost/type_traits/is_pod.hpp
+epoc32/include/stdapis/boost/type_traits/is_pointer.hpp
+epoc32/include/stdapis/boost/type_traits/is_polymorphic.hpp
+epoc32/include/stdapis/boost/type_traits/is_reference.hpp
+epoc32/include/stdapis/boost/type_traits/is_same.hpp
+epoc32/include/stdapis/boost/type_traits/is_scalar.hpp
+epoc32/include/stdapis/boost/type_traits/is_signed.hpp
+epoc32/include/stdapis/boost/type_traits/is_stateless.hpp
+epoc32/include/stdapis/boost/type_traits/is_union.hpp
+epoc32/include/stdapis/boost/type_traits/is_unsigned.hpp
+epoc32/include/stdapis/boost/type_traits/is_void.hpp
+epoc32/include/stdapis/boost/type_traits/is_volatile.hpp
+epoc32/include/stdapis/boost/type_traits/object_traits.hpp
+epoc32/include/stdapis/boost/type_traits/rank.hpp
+epoc32/include/stdapis/boost/type_traits/remove_all_extents.hpp
+epoc32/include/stdapis/boost/type_traits/remove_bounds.hpp
+epoc32/include/stdapis/boost/type_traits/remove_const.hpp
+epoc32/include/stdapis/boost/type_traits/remove_cv.hpp
+epoc32/include/stdapis/boost/type_traits/remove_extent.hpp
+epoc32/include/stdapis/boost/type_traits/remove_pointer.hpp
+epoc32/include/stdapis/boost/type_traits/remove_reference.hpp
+epoc32/include/stdapis/boost/type_traits/remove_volatile.hpp
+epoc32/include/stdapis/boost/type_traits/same_traits.hpp
+epoc32/include/stdapis/boost/type_traits/transform_traits.hpp
+epoc32/include/stdapis/boost/type_traits/type_with_alignment.hpp
+epoc32/include/stdapis/boost/utility.hpp
+epoc32/include/stdapis/boost/utility/addressof.hpp
+epoc32/include/stdapis/boost/utility/base_from_member.hpp
+epoc32/include/stdapis/boost/utility/compare_pointees.hpp
+epoc32/include/stdapis/boost/utility/detail/result_of_iterate.hpp
+epoc32/include/stdapis/boost/utility/enable_if.hpp
+epoc32/include/stdapis/boost/utility/result_of.hpp
+epoc32/include/stdapis/boost/utility/value_init.hpp
+epoc32/include/stdapis/boost/variant/apply_visitor.hpp
+epoc32/include/stdapis/boost/variant/bad_visit.hpp
+epoc32/include/stdapis/boost/variant/detail/apply_visitor_binary.hpp
+epoc32/include/stdapis/boost/variant/detail/apply_visitor_delayed.hpp
+epoc32/include/stdapis/boost/variant/detail/apply_visitor_unary.hpp
+epoc32/include/stdapis/boost/variant/detail/backup_holder.hpp
+epoc32/include/stdapis/boost/variant/detail/bool_trait_def.hpp
+epoc32/include/stdapis/boost/variant/detail/bool_trait_undef.hpp
+epoc32/include/stdapis/boost/variant/detail/cast_storage.hpp
+epoc32/include/stdapis/boost/variant/detail/config.hpp
+epoc32/include/stdapis/boost/variant/detail/enable_recursive.hpp
+epoc32/include/stdapis/boost/variant/detail/enable_recursive_fwd.hpp
+epoc32/include/stdapis/boost/variant/detail/forced_return.hpp
+epoc32/include/stdapis/boost/variant/detail/generic_result_type.hpp
+epoc32/include/stdapis/boost/variant/detail/has_nothrow_move.hpp
+epoc32/include/stdapis/boost/variant/detail/has_trivial_move.hpp
+epoc32/include/stdapis/boost/variant/detail/initializer.hpp
+epoc32/include/stdapis/boost/variant/detail/make_variant_list.hpp
+epoc32/include/stdapis/boost/variant/detail/move.hpp
+epoc32/include/stdapis/boost/variant/detail/over_sequence.hpp
+epoc32/include/stdapis/boost/variant/detail/substitute.hpp
+epoc32/include/stdapis/boost/variant/detail/substitute_fwd.hpp
+epoc32/include/stdapis/boost/variant/detail/variant_io.hpp
+epoc32/include/stdapis/boost/variant/detail/visitation_impl.hpp
+epoc32/include/stdapis/boost/variant/get.hpp
+epoc32/include/stdapis/boost/variant/recursive_variant.hpp
+epoc32/include/stdapis/boost/variant/recursive_wrapper.hpp
+epoc32/include/stdapis/boost/variant/recursive_wrapper_fwd.hpp
+epoc32/include/stdapis/boost/variant/static_visitor.hpp
+epoc32/include/stdapis/boost/variant/variant.hpp
+epoc32/include/stdapis/boost/variant/variant_fwd.hpp
+epoc32/include/stdapis/boost/variant/visitor_ptr.hpp
+epoc32/include/stdapis/boost/vector_property_map.hpp
+epoc32/include/stdapis/boost/version.hpp
+epoc32/include/stdapis/boost/visit_each.hpp
+epoc32/include/stdapis/boost/weak_ptr.hpp
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-address.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-arch-deps.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-bus.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-connection.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-errors.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-glib-bindings.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-glib-error-enum.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-glib-lowlevel.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-glib.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-gtype-specialized.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-macros.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-memory.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-message.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-misc.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-pending-call.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-protocol.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-server.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-shared.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-signature.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-threads.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-types.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus.h
+epoc32/include/stdapis/ftw.h
+epoc32/include/stdapis/net/if_var.h
+epoc32/include/stdapis/net/radix.h
+epoc32/include/stdapis/net/route.h
+epoc32/include/stdapis/pipsversion.h
+epoc32/include/stdapis/sys/aeselect.h
+epoc32/include/stdapis/sys/un.h
+epoc32/include/strng.inl
+epoc32/include/swi/appversion.h
+epoc32/include/swi/appversion.inl
+epoc32/include/swi/pkgremover.h
+epoc32/include/swi/pkgremovererrors.h
+epoc32/include/syncmlalertinfo.h
+epoc32/include/syncmlclient.h
+epoc32/include/syncmlclientdm.h
+epoc32/include/syncmlclientds.h
+epoc32/include/syncmlcontactsuiteprogressclient.h
+epoc32/include/syncmldatafilter.h
+epoc32/include/syncmldatafilter.hrh
+epoc32/include/syncmldatafilter.rh
+epoc32/include/syncmldef.h
+epoc32/include/syncmlerr.h
+epoc32/include/syncmlhistory.h
+epoc32/include/syncmlobservers.h
+epoc32/include/syncmltransportproperties.h
+epoc32/include/tcp_hdr.h
+epoc32/include/tcpseq.h
+epoc32/include/template/mconf.h
+epoc32/include/template/specific/iolines.h
+epoc32/include/test/datawrapper.inl
+epoc32/include/test/fileservplugin.h
+epoc32/include/test/rfileloggermacro.h
+epoc32/include/test/sysstartplugin.h
+epoc32/include/test/tefshareddata.inl
+epoc32/include/test/testblockcontroller.inl
+epoc32/include/test/testexecuteserverutils.inl
+epoc32/include/test/testshareddata.inl
+epoc32/include/testconfigfileparser.inl
+epoc32/include/tia637.h
+epoc32/include/tmsvsystemprogress.h
+epoc32/include/tools/certapp-api.h
+epoc32/include/tools/elfdefs.h
+epoc32/include/tools/stlport/ciso646
+epoc32/include/tools/stlport/iso646.h
+epoc32/include/tools/stlport/rlocks.h
+epoc32/include/tools/stlport/stl/_alloc_old.h
+epoc32/include/tools/stlport/stl/_carray.h
+epoc32/include/tools/stlport/stl/_cctype.h
+epoc32/include/tools/stlport/stl/_clocale.h
+epoc32/include/tools/stlport/stl/_csetjmp.h
+epoc32/include/tools/stlport/stl/_csignal.h
+epoc32/include/tools/stlport/stl/_cstdarg.h
+epoc32/include/tools/stlport/stl/_cstddef.h
+epoc32/include/tools/stlport/stl/_cstdio.h
+epoc32/include/tools/stlport/stl/_cstdlib.h
+epoc32/include/tools/stlport/stl/_cstring.h
+epoc32/include/tools/stlport/stl/_ctime.h
+epoc32/include/tools/stlport/stl/_cwctype.h
+epoc32/include/tools/stlport/stl/_ioserr.h
+epoc32/include/tools/stlport/stl/_iostream_string.h
+epoc32/include/tools/stlport/stl/_mbstate_t.h
+epoc32/include/tools/stlport/stl/_move_construct_fwk.h
+epoc32/include/tools/stlport/stl/_sparc_atomic.h
+epoc32/include/tools/stlport/stl/_stdexcept.h
+epoc32/include/tools/stlport/stl/_stdexcept_base.h
+epoc32/include/tools/stlport/stl/_stlport_version.h
+epoc32/include/tools/stlport/stl/_string_base.h
+epoc32/include/tools/stlport/stl/_string_npos.h
+epoc32/include/tools/stlport/stl/_string_operators.h
+epoc32/include/tools/stlport/stl/_string_sum.h
+epoc32/include/tools/stlport/stl/_string_workaround.h
+epoc32/include/tools/stlport/stl/_typeinfo.h
+epoc32/include/tools/stlport/stl/_unordered_map.h
+epoc32/include/tools/stlport/stl/_unordered_set.h
+epoc32/include/tools/stlport/stl/boost_type_traits.h
+epoc32/include/tools/stlport/stl/config/_aix.h
+epoc32/include/tools/stlport/stl/config/_apcc.h
+epoc32/include/tools/stlport/stl/config/_apple.h
+epoc32/include/tools/stlport/stl/config/_as400.h
+epoc32/include/tools/stlport/stl/config/_auto_link.h
+epoc32/include/tools/stlport/stl/config/_bc.h
+epoc32/include/tools/stlport/stl/config/_como.h
+epoc32/include/tools/stlport/stl/config/_cray.h
+epoc32/include/tools/stlport/stl/config/_cygwin.h
+epoc32/include/tools/stlport/stl/config/_dec.h
+epoc32/include/tools/stlport/stl/config/_dec_vms.h
+epoc32/include/tools/stlport/stl/config/_detect_dll_or_lib.h
+epoc32/include/tools/stlport/stl/config/_dm.h
+epoc32/include/tools/stlport/stl/config/_evc.h
+epoc32/include/tools/stlport/stl/config/_freebsd.h
+epoc32/include/tools/stlport/stl/config/_fujitsu.h
+epoc32/include/tools/stlport/stl/config/_gcc.h
+epoc32/include/tools/stlport/stl/config/_hpacc.h
+epoc32/include/tools/stlport/stl/config/_hpux.h
+epoc32/include/tools/stlport/stl/config/_ibm.h
+epoc32/include/tools/stlport/stl/config/_icc.h
+epoc32/include/tools/stlport/stl/config/_intel.h
+epoc32/include/tools/stlport/stl/config/_kai.h
+epoc32/include/tools/stlport/stl/config/_linux.h
+epoc32/include/tools/stlport/stl/config/_mac.h
+epoc32/include/tools/stlport/stl/config/_macosx.h
+epoc32/include/tools/stlport/stl/config/_mlc.h
+epoc32/include/tools/stlport/stl/config/_msvc.h
+epoc32/include/tools/stlport/stl/config/_mwccnlm.h
+epoc32/include/tools/stlport/stl/config/_mwerks.h
+epoc32/include/tools/stlport/stl/config/_native_headers.h
+epoc32/include/tools/stlport/stl/config/_netware.h
+epoc32/include/tools/stlport/stl/config/_openbsd.h
+epoc32/include/tools/stlport/stl/config/_sgi.h
+epoc32/include/tools/stlport/stl/config/_solaris.h
+epoc32/include/tools/stlport/stl/config/_sunprocc.h
+epoc32/include/tools/stlport/stl/config/_symantec.h
+epoc32/include/tools/stlport/stl/config/_system.h
+epoc32/include/tools/stlport/stl/config/_warnings_off.h
+epoc32/include/tools/stlport/stl/config/_watcom.h
+epoc32/include/tools/stlport/stl/config/_windows.h
+epoc32/include/tools/stlport/stl/config/compat.h
+epoc32/include/tools/stlport/stl/config/features.h
+epoc32/include/tools/stlport/stl/config/host.h
+epoc32/include/tools/stlport/stl/config/stl_mycomp.h
+epoc32/include/tools/stlport/stl/config/user_config.h
+epoc32/include/tools/stlport/stl/debug/_string_sum_methods.h
+epoc32/include/tools/stlport/stl/pointers/_tools.h
+epoc32/include/tools/stlport/stl/type_manips.h
+epoc32/include/tools/stlport/unordered_map
+epoc32/include/tools/stlport/unordered_set
+epoc32/include/tools/stlport/using/export
+epoc32/include/tsy.hrh
+epoc32/include/tsy.rh
+epoc32/include/tuladdressstringtokenizer.h
+epoc32/include/tulpanics.h
+epoc32/include/tulphonenumberutils.h
+epoc32/include/tulstringresourcereader.h
+epoc32/include/tultextresourceutils.h
+epoc32/include/udp_hdr.h
+epoc32/include/vg/1.1/openvg.h
+epoc32/include/vg/1.1/vgu.h
+epoc32/include/w32stdgraphic.h
+epoc32/include/wap_sock.h
+epoc32/include/wappdef.h
+epoc32/include/waptestutils.h
+epoc32/include/wbconverter.h
+epoc32/include/wins/variantmediadef.h
+epoc32/include/wins/winscomm.h
+epoc32/include/wins/winscomm.inl
+epoc32/include/wtlskeys.h
+epoc32/include/x509keys.h
+epoc32/include/xmlelemt.h
+epoc32/include/xmlentityreferences.h
+epoc32/include/xmllib.h