SourceForge.net Logo

NSFixupFilter.hpp

Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2001-2006
00003  *     DecisionSoft Limited. All rights reserved.
00004  * Copyright (c) 2004-2006
00005  *     Progress Software Corporation. All rights reserved.
00006  * Copyright (c) 2004-2006
00007  *     Oracle. All rights reserved.
00008  *
00009  * See the file LICENSE for redistribution information.
00010  *
00011  * $Id: NSFixupFilter.hpp,v 1.2 2007/02/08 13:17:10 jpcs Exp $
00012  */
00013 
00014 #ifndef _NSFIXUPFILTER_HPP
00015 #define _NSFIXUPFILTER_HPP
00016 
00017 #include <xqilla/events/EventHandler.hpp>
00018 
00019 class XPath2MemoryManager;
00020 
00021 class XQILLA_API NSFixupFilter : public EventFilter
00022 {
00023 public:
00024   NSFixupFilter(EventHandler *next, XPath2MemoryManager *mm);
00025   ~NSFixupFilter();
00026 
00027   virtual void startDocumentEvent(const XMLCh *documentURI, const XMLCh *encoding);
00028   virtual void endDocumentEvent();
00029   virtual void startElementEvent(const XMLCh *prefix, const XMLCh *uri, const XMLCh *localname);
00030   virtual void endElementEvent(const XMLCh *prefix, const XMLCh *uri, const XMLCh *localname,
00031                                const XMLCh *typeURI, const XMLCh *typeName);
00032   virtual void attributeEvent(const XMLCh *prefix, const XMLCh *uri, const XMLCh *localname, const XMLCh *value,
00033                               const XMLCh *typeURI, const XMLCh *typeName);
00034   virtual void namespaceEvent(const XMLCh *prefix, const XMLCh *uri);
00035 
00036 private:
00037   struct ElemEntry {
00038     void set(const XMLCh *p, ElemEntry *pr)
00039     { prefix = p; prev = pr; }
00040 
00041     const XMLCh *prefix;
00042     ElemEntry *prev;
00043   };
00044 
00045   struct NSEntry {
00046     void set(const XMLCh *p, const XMLCh *u, unsigned int l, NSEntry *pr)
00047     { prefix = p; uri = u; level = l; prev = pr; }
00048 
00049     const XMLCh *prefix;
00050     const XMLCh *uri;
00051     unsigned int level;
00052 
00053     NSEntry *prev;
00054   };
00055 
00056   NSEntry *findPrefix(const XMLCh *prefix);
00058   bool definePrefix(const XMLCh *&prefix, const XMLCh *uri, bool attr = false, bool redefine = true);
00059 
00060   XPath2MemoryManager *mm_;
00061   unsigned int level_;
00062   ElemEntry *elements_;
00063   NSEntry *namespaces_;
00064 };
00065 
00066 #endif

Generated on Fri Aug 31 14:37:35 2007 for XQilla Simple API by  doxygen 1.5.1