Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
michael@0 | 1 | /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
michael@0 | 2 | /* This Source Code Form is subject to the terms of the Mozilla Public |
michael@0 | 3 | * License, v. 2.0. If a copy of the MPL was not distributed with this |
michael@0 | 4 | * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
michael@0 | 5 | |
michael@0 | 6 | |
michael@0 | 7 | /** |
michael@0 | 8 | * MODULE NOTES: |
michael@0 | 9 | * @update gess 4/1/98 |
michael@0 | 10 | * |
michael@0 | 11 | */ |
michael@0 | 12 | |
michael@0 | 13 | |
michael@0 | 14 | |
michael@0 | 15 | #ifndef _NSELEMENTABLE |
michael@0 | 16 | #define _NSELEMENTABLE |
michael@0 | 17 | |
michael@0 | 18 | #include "nsHTMLTags.h" |
michael@0 | 19 | #include "nsIDTD.h" |
michael@0 | 20 | |
michael@0 | 21 | //********************************************************************************************* |
michael@0 | 22 | // The following ints define the standard groups of HTML elements... |
michael@0 | 23 | //********************************************************************************************* |
michael@0 | 24 | |
michael@0 | 25 | static const int kNone= 0x0; |
michael@0 | 26 | |
michael@0 | 27 | static const int kHTMLContent = 0x0001; // HEAD, (FRAMESET | BODY) |
michael@0 | 28 | static const int kHeadContent = 0x0002; // Elements that *must* be in the head. |
michael@0 | 29 | static const int kHeadMisc = 0x0004; // Elements that *can* be in the head. |
michael@0 | 30 | |
michael@0 | 31 | static const int kSpecial = 0x0008; // A, IMG, APPLET, OBJECT, FONT, BASEFONT, BR, SCRIPT, |
michael@0 | 32 | // MAP, Q, SUB, SUP, SPAN, BDO, IFRAME |
michael@0 | 33 | |
michael@0 | 34 | static const int kFormControl = 0x0010; // INPUT SELECT TEXTAREA LABEL BUTTON |
michael@0 | 35 | static const int kPreformatted = 0x0020; // PRE |
michael@0 | 36 | static const int kPreExclusion = 0x0040; // IMG, OBJECT, APPLET, BIG, SMALL, SUB, SUP, FONT, BASEFONT |
michael@0 | 37 | static const int kFontStyle = 0x0080; // TT, I, B, U, S, STRIKE, BIG, SMALL |
michael@0 | 38 | static const int kPhrase = 0x0100; // EM, STRONG, DFN, CODE, SAMP, KBD, VAR, CITE, ABBR, ACRONYM |
michael@0 | 39 | static const int kHeading = 0x0200; // H1..H6 |
michael@0 | 40 | static const int kBlockMisc = 0x0400; // OBJECT, SCRIPT |
michael@0 | 41 | static const int kBlock = 0x0800; // ADDRESS, BLOCKQUOTE, CENTER, DIV, DL, FIELDSET, FORM, |
michael@0 | 42 | // ISINDEX, HR, NOSCRIPT, NOFRAMES, P, TABLE |
michael@0 | 43 | static const int kList = 0x1000; // UL, OL, DIR, MENU |
michael@0 | 44 | static const int kPCDATA = 0x2000; // plain text and entities... |
michael@0 | 45 | static const int kSelf = 0x4000; // whatever THIS tag is... |
michael@0 | 46 | static const int kExtensions = 0x8000; // BGSOUND, WBR, NOBR |
michael@0 | 47 | static const int kTable = 0x10000;// TR,TD,THEAD,TBODY,TFOOT,CAPTION,TH |
michael@0 | 48 | static const int kDLChild = 0x20000;// DL, DT |
michael@0 | 49 | static const int kCDATA = 0x40000;// just plain text... |
michael@0 | 50 | |
michael@0 | 51 | static const int kInlineEntity = (kPCDATA|kFontStyle|kPhrase|kSpecial|kFormControl|kExtensions); // #PCDATA, %fontstyle, %phrase, %special, %formctrl |
michael@0 | 52 | static const int kBlockEntity = (kHeading|kList|kPreformatted|kBlock); // %heading, %list, %preformatted, %block |
michael@0 | 53 | static const int kFlowEntity = (kBlockEntity|kInlineEntity); // %blockentity, %inlineentity |
michael@0 | 54 | static const int kAllTags = 0xffffff; |
michael@0 | 55 | |
michael@0 | 56 | |
michael@0 | 57 | //********************************************************************************************* |
michael@0 | 58 | // The following ints define the standard groups of HTML elements... |
michael@0 | 59 | //********************************************************************************************* |
michael@0 | 60 | |
michael@0 | 61 | #ifdef DEBUG |
michael@0 | 62 | extern void CheckElementTable(); |
michael@0 | 63 | #endif |
michael@0 | 64 | |
michael@0 | 65 | |
michael@0 | 66 | /** |
michael@0 | 67 | * We're asking the question: is aTest a member of bitset. |
michael@0 | 68 | * |
michael@0 | 69 | * @param |
michael@0 | 70 | * @return TRUE or FALSE |
michael@0 | 71 | */ |
michael@0 | 72 | inline bool TestBits(int aBitset,int aTest) { |
michael@0 | 73 | if(aTest) { |
michael@0 | 74 | int32_t result=(aBitset & aTest); |
michael@0 | 75 | return bool(result==aTest); |
michael@0 | 76 | } |
michael@0 | 77 | return false; |
michael@0 | 78 | } |
michael@0 | 79 | |
michael@0 | 80 | struct nsHTMLElement { |
michael@0 | 81 | bool IsMemberOf(int32_t aType) const; |
michael@0 | 82 | |
michael@0 | 83 | eHTMLTags mTagID; |
michael@0 | 84 | int mParentBits; //defines groups that can contain this element |
michael@0 | 85 | bool mLeaf; |
michael@0 | 86 | |
michael@0 | 87 | static bool IsContainer(eHTMLTags aTag); |
michael@0 | 88 | }; |
michael@0 | 89 | |
michael@0 | 90 | extern const nsHTMLElement gHTMLElements[]; |
michael@0 | 91 | |
michael@0 | 92 | #endif |