home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 275 / DPCS0111DVD.ISO / Toolkit / Audio-Visual / VirtualDub / Source / VirtualDub-1.9.10-src.7z / src / Lina / h / document.h next >
Encoding:
C/C++ Source or Header  |  2009-09-14  |  1.9 KB  |  79 lines

  1. //    Lina - HTML compiler for VirtualDub help system
  2. //    Copyright (C) 1998-2003 Avery Lee
  3. //
  4. //    This program is free software; you can redistribute it and/or modify
  5. //    it under the terms of the GNU General Public License as published by
  6. //    the Free Software Foundation; either version 2 of the License, or
  7. //    (at your option) any later version.
  8. //
  9. //    This program is distributed in the hope that it will be useful,
  10. //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. //    GNU General Public License for more details.
  13. //
  14. //    You should have received a copy of the GNU General Public License
  15. //    along with this program; if not, write to the Free Software
  16. //    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  17.  
  18. #ifndef f_LINA_DOCUMENT_H
  19. #define f_LINA_DOCUMENT_H
  20.  
  21. #include <string>
  22. #include <list>
  23. #include <map>
  24.  
  25. class TreeNode;
  26. class TreeDocument;
  27.  
  28. bool issafevaluechar(int c);
  29.  
  30. class TreeAttribute {
  31. public:
  32.     std::string mName, mValue;
  33.     bool mbNoValue;
  34. };
  35.  
  36. class TreeLocation {
  37. public:
  38.     std::string    mName;
  39. };
  40.  
  41. class TreeNode {
  42. public:
  43.     TreeDocument *mpDocument;
  44.     TreeLocation *mpLocation;
  45.     int mLineno;
  46.     std::string mName;
  47.  
  48.     typedef std::list<TreeAttribute> Attributes; 
  49.     Attributes mAttribs;
  50.  
  51.     typedef std::list<TreeNode *> Children;
  52.     Children mChildren;
  53.     bool mbIsText;
  54.     bool mbIsControl;
  55.  
  56. public:
  57.     TreeNode *ShallowClone();
  58.     const TreeAttribute *Attrib(const std::string& s) const;
  59.     const TreeNode *ResolvePath(const std::string& path, std::string& name) const;
  60.     const TreeNode *Child(const std::string& s) const;
  61.  
  62.     bool SupportsCDATA() const;
  63.  
  64.     static void SetSupportsCDATA(const std::string& tagname, bool supports_cdata);
  65. };
  66.  
  67. class TreeDocument {
  68. public:
  69.     TreeNode *mpRoot;
  70.  
  71.     std::list<TreeNode> mNodeHeap;
  72.     std::map<std::string, TreeNode *> mMacros;
  73.  
  74.     TreeDocument();
  75.     TreeNode *AllocNode();
  76. };
  77.  
  78. #endif
  79.