LCOV - code coverage report
Current view: top level - parser/htmlparser - nsElementTable.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 4 8 50.0 %
Date: 2017-07-14 16:53:18 Functions: 1 3 33.3 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
       2             : /* vim: set ts=2 sw=2 et tw=78: */
       3             : /* This Source Code Form is subject to the terms of the Mozilla Public
       4             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       5             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       6             : 
       7             : 
       8             : #include "nsIAtom.h"
       9             : #include "nsElementTable.h"
      10             : 
      11             : /***************************************************************************** 
      12             :   Now it's time to list all the html elements all with their capabilities...
      13             : ******************************************************************************/
      14             : 
      15             : // The Element Table (sung to the tune of Modern Major General)
      16             : 
      17             : const nsHTMLElement gHTMLElements[] = {
      18             :   {
      19             :     /*tag*/         eHTMLTag_unknown,
      20             :     /*parent,leaf*/ kNone, true
      21             :   },
      22             :   {
      23             :     /*tag*/         eHTMLTag_a,
      24             :     /*parent,leaf*/ kSpecial, false
      25             :   },
      26             :   {
      27             :     /*tag*/         eHTMLTag_abbr,
      28             :     /*parent,leaf*/ kPhrase, false
      29             :   },
      30             :   {
      31             :     /*tag*/         eHTMLTag_acronym,
      32             :     /*parent,leaf*/ kPhrase, false
      33             :   },
      34             :   {
      35             :     /*tag*/         eHTMLTag_address,
      36             :     /*parent,leaf*/ kBlock, false
      37             :   },
      38             :   {
      39             :     /*tag*/         eHTMLTag_applet,
      40             :     /*parent,leaf*/ kSpecial, false
      41             :   },
      42             :   {
      43             :     /*tag*/         eHTMLTag_area,
      44             :     /*parent,leaf*/ kNone, true
      45             :   },
      46             :   {
      47             :     /*tag*/         eHTMLTag_article,
      48             :     /*parent,leaf*/ kBlock, false
      49             :   },
      50             :   {
      51             :     /*tag*/         eHTMLTag_aside,
      52             :     /*parent,leaf*/ kBlock, false
      53             :   },
      54             :   {
      55             :     /*tag*/         eHTMLTag_audio,
      56             :     /*parent,leaf*/ kSpecial, false
      57             :   },
      58             :   {
      59             :     /*tag*/         eHTMLTag_b,
      60             :     /*parent,leaf*/ kFontStyle, false
      61             :   },
      62             :   {
      63             :     /*tag*/         eHTMLTag_base,
      64             :     /*parent,leaf*/ kHeadContent, true
      65             :   },
      66             :   {
      67             :     /*tag*/         eHTMLTag_basefont,
      68             :     /*parent,leaf*/ kSpecial, true
      69             :   },
      70             :   {
      71             :     /*tag*/         eHTMLTag_bdo,
      72             :     /*parent,leaf*/ kSpecial, false
      73             :   },
      74             :   {
      75             :     /*tag*/         eHTMLTag_bgsound,
      76             :     /*parent,leaf*/ (kFlowEntity|kHeadMisc), true
      77             :   },
      78             :   {
      79             :     /*tag*/         eHTMLTag_big,
      80             :     /*parent,leaf*/ kFontStyle, false
      81             :   },
      82             :   {
      83             :     /*tag*/         eHTMLTag_blockquote,
      84             :     /*parent,leaf*/ kBlock, false
      85             :   },
      86             :   {
      87             :     /*tag*/         eHTMLTag_body,
      88             :     /*parent,leaf*/ kHTMLContent, false
      89             :   },
      90             :   {
      91             :     /*tag*/         eHTMLTag_br,
      92             :     /*parent,leaf*/ kSpecial, true
      93             :   },
      94             :   {
      95             :     /*tag*/         eHTMLTag_button,
      96             :     /*parent,leaf*/ kFormControl, false
      97             :   },
      98             :   {
      99             :     /*tag*/         eHTMLTag_canvas,
     100             :     /*parent,leaf*/ kSpecial, false
     101             :   },
     102             :   {
     103             :     /*tag*/         eHTMLTag_caption,
     104             :     /*parent,leaf*/ kNone, false
     105             :   },
     106             :   {
     107             :     /*tag*/         eHTMLTag_center,
     108             :     /*parent,leaf*/ kBlock, false
     109             :   },
     110             :   {
     111             :     /*tag*/         eHTMLTag_cite,
     112             :     /*parent,leaf*/ kPhrase, false
     113             :   },
     114             :   {
     115             :     /*tag*/         eHTMLTag_code,
     116             :     /*parent,leaf*/ kPhrase, false
     117             :   },
     118             :   {
     119             :     /*tag*/         eHTMLTag_col,
     120             :     /*parent,leaf*/ kNone, true
     121             :   },
     122             :   {
     123             :     /*tag*/         eHTMLTag_colgroup,
     124             :     /*parent,leaf*/ kNone, false
     125             :   },
     126             :   {
     127             :     /*tag*/         eHTMLTag_content,
     128             :     /*parent,leaf*/ kNone, false
     129             :   },
     130             :   {
     131             :     /*tag*/         eHTMLTag_data,
     132             :     /*parent,leaf*/ kPhrase, false
     133             :   },
     134             :   {
     135             :     /*tag*/         eHTMLTag_datalist,
     136             :     /*parent,leaf*/ kSpecial, false
     137             :   },
     138             :   {
     139             :     /*tag*/         eHTMLTag_dd,
     140             :     /*parent,leaf*/ kInlineEntity, false
     141             :   },
     142             :   {
     143             :     /*tag*/         eHTMLTag_del,
     144             :     /*parent,leaf*/ kFlowEntity, false
     145             :   },
     146             :   {
     147             :     /*tag*/         eHTMLTag_details,
     148             :     /*parent,leaf*/ kBlock, false
     149             :   },
     150             :   {
     151             :     /*tag*/         eHTMLTag_dfn,
     152             :     /*parent,leaf*/ kPhrase, false
     153             :   },
     154             :   {
     155             :     /*tag*/         eHTMLTag_dialog,
     156             :     /*parent,leaf*/ kBlock, false
     157             :   },
     158             :   {
     159             :     /*tag*/         eHTMLTag_dir,
     160             :     /*parent,leaf*/ kList, false
     161             :   },
     162             :   {
     163             :     /*tag*/         eHTMLTag_div,
     164             :     /*parent,leaf*/ kBlock, false
     165             :   },
     166             :   {
     167             :     /*tag*/         eHTMLTag_dl,
     168             :     /*parent,leaf*/ kBlock, false
     169             :   },
     170             :   {
     171             :     /*tag*/         eHTMLTag_dt,
     172             :     /*parent,leaf*/ kInlineEntity, false
     173             :   },
     174             :   {
     175             :     /*tag*/         eHTMLTag_em,
     176             :     /*parent,leaf*/ kPhrase, false
     177             :   },
     178             :   {
     179             :     /*tag*/         eHTMLTag_embed,
     180             :     /*parent,leaf*/ kSpecial, true
     181             :   },
     182             :   {
     183             :     /*tag*/         eHTMLTag_fieldset,
     184             :     /*parent,leaf*/ kBlock, false
     185             :   },
     186             :   {
     187             :     /*tag*/         eHTMLTag_figcaption,
     188             :     /*parent,leaf*/ kPhrase, false
     189             :   },
     190             :   {
     191             :     /*tag*/         eHTMLTag_figure,
     192             :     /*parent,leaf*/ kBlock, false
     193             :   },
     194             :   {
     195             :     /*tag*/         eHTMLTag_font,
     196             :     /*parent,leaf*/ kFontStyle, false
     197             :   },
     198             :   {
     199             :     /*tag*/         eHTMLTag_footer,
     200             :     /*parent,leaf*/ kBlock, false
     201             :   },
     202             :   {
     203             :     /*tag*/         eHTMLTag_form,
     204             :     /*parent,leaf*/ kBlock, false
     205             :   },
     206             :   {
     207             :     /*tag*/         eHTMLTag_frame,
     208             :     /*parent,leaf*/ kNone, true
     209             :   },
     210             :   {
     211             :     /*tag*/         eHTMLTag_frameset,
     212             :     /*parent,leaf*/ kHTMLContent, false
     213             :   },
     214             :   {
     215             :     /*tag*/         eHTMLTag_h1,
     216             :     /*parent,leaf*/ kHeading, false
     217             :   },
     218             :   {
     219             :     /*tag*/         eHTMLTag_h2,
     220             :     /*parent,leaf*/ kHeading, false
     221             :   },
     222             :   {
     223             :     /*tag*/         eHTMLTag_h3,
     224             :     /*parent,leaf*/ kHeading, false
     225             :   },
     226             :   {
     227             :     /*tag*/         eHTMLTag_h4,
     228             :     /*parent,leaf*/ kHeading, false
     229             :   },
     230             :   {
     231             :     /*tag*/         eHTMLTag_h5,
     232             :     /*parent,leaf*/ kHeading, false
     233             :   },
     234             :   {
     235             :     /*tag*/         eHTMLTag_h6,
     236             :     /*parent,leaf*/ kHeading, false
     237             :   },
     238             :   {
     239             :     /*tag*/         eHTMLTag_head,
     240             :     /*parent,leaf*/ kHTMLContent, false
     241             :   },
     242             :   {
     243             :     /*tag*/         eHTMLTag_header,
     244             :     /*parent,leaf*/ kBlock, false
     245             :   },
     246             :   {
     247             :     /*tag*/         eHTMLTag_hgroup,
     248             :     /*parent,leaf*/ kBlock, false
     249             :   },
     250             :   {
     251             :     /*tag*/         eHTMLTag_hr,
     252             :     /*parent,leaf*/ kBlock, true
     253             :   },
     254             :   {
     255             :     /*tag*/         eHTMLTag_html,
     256             :     /*parent,leaf*/ kNone, false
     257             :   },
     258             :   {
     259             :     /*tag*/         eHTMLTag_i,
     260             :     /*parent,leaf*/ kFontStyle, false
     261             :   },
     262             :   {
     263             :     /*tag*/         eHTMLTag_iframe,
     264             :     /*parent,leaf*/ kSpecial, false
     265             :   },
     266             :   {
     267             :     /*tag*/         eHTMLTag_image,
     268             :     /*parent,leaf*/ kSpecial, true
     269             :   },
     270             :   {
     271             :     /*tag*/         eHTMLTag_img,
     272             :     /*parent,leaf*/ kSpecial, true
     273             :   },
     274             :   {
     275             :     /*tag*/         eHTMLTag_input,
     276             :     /*parent,leaf*/ kFormControl, true
     277             :   },
     278             :   {
     279             :     /*tag*/         eHTMLTag_ins,
     280             :     /*parent,leaf*/ kFlowEntity, false
     281             :   },
     282             :   {
     283             :     /*tag*/         eHTMLTag_kbd,
     284             :     /*parent,leaf*/ kPhrase, false
     285             :   },
     286             :   {
     287             :     /*tag*/         eHTMLTag_keygen,
     288             :     /*parent,leaf*/ kFlowEntity, true
     289             :   },
     290             :   {
     291             :     /*tag*/         eHTMLTag_label,
     292             :     /*parent,leaf*/ kFormControl, false
     293             :   },
     294             :   {
     295             :     /*tag*/         eHTMLTag_legend,
     296             :     /*parent,leaf*/ kNone, false
     297             :   },
     298             :   {
     299             :     /*tag*/         eHTMLTag_li,
     300             :     /*parent,leaf*/ kBlockEntity, false
     301             :   },
     302             :   {
     303             :     /*tag*/         eHTMLTag_link,
     304             :     /*parent,leaf*/ kAllTags - kHeadContent, true
     305             :   },
     306             :   {
     307             :     /*tag*/         eHTMLTag_listing,
     308             :     /*parent,leaf*/ kPreformatted, false
     309             :   },
     310             :   {
     311             :     /*tag*/         eHTMLTag_main,
     312             :     /*parent,leaf*/ kBlock, false
     313             :   },
     314             :   {
     315             :     /*tag*/         eHTMLTag_map,
     316             :     /*parent,leaf*/ kSpecial, false
     317             :   },
     318             :   {
     319             :     /*tag*/         eHTMLTag_mark,
     320             :     /*parent,leaf*/ kSpecial, false
     321             :   },
     322             :   {
     323             :     /*tag*/         eHTMLTag_marquee,
     324             :     /*parent,leaf*/ kSpecial, false
     325             :   },
     326             :   {
     327             :     /*tag*/         eHTMLTag_menu,
     328             :     /*parent,leaf*/ kList, false
     329             :   },
     330             :   {
     331             :     /*tag*/         eHTMLTag_menuitem,
     332             :     /*parent,leaf*/ kFlowEntity, false
     333             :   },
     334             :   {
     335             :     /*tag*/         eHTMLTag_meta,
     336             :     /*parent,leaf*/ kHeadContent, true
     337             :   },
     338             :   {
     339             :     /*tag*/         eHTMLTag_meter,
     340             :     /*parent,leaf*/ kFormControl, false
     341             :   },
     342             :   {
     343             :     /*tag*/         eHTMLTag_multicol,
     344             :     /*parent,leaf*/ kBlock, false
     345             :   },
     346             :   {
     347             :     /*tag*/         eHTMLTag_nav,
     348             :     /*parent,leaf*/ kBlock, false
     349             :   },
     350             :   {
     351             :     /*tag*/         eHTMLTag_nobr,
     352             :     /*parent,leaf*/ kExtensions, false
     353             :   },
     354             :   {
     355             :     /*tag*/         eHTMLTag_noembed,
     356             :     /*parent,leaf*/ kFlowEntity, false
     357             :   },
     358             :   {
     359             :     /*tag*/         eHTMLTag_noframes,
     360             :     /*parent,leaf*/ kFlowEntity, false
     361             :   },
     362             :   {
     363             :     /*tag*/         eHTMLTag_noscript,
     364             :     /*parent,leaf*/ kFlowEntity|kHeadMisc, false
     365             :   },
     366             :   {
     367             :     /*tag*/         eHTMLTag_object,
     368             :     /*parent,leaf*/ kSpecial, false
     369             :   },
     370             :   {
     371             :     /*tag*/         eHTMLTag_ol,
     372             :     /*parent,leaf*/ kList, false
     373             :   },
     374             :   {
     375             :     /*tag*/         eHTMLTag_optgroup,
     376             :     /*parent,leaf*/ kNone, false
     377             :   },
     378             :   {
     379             :     /*tag*/         eHTMLTag_option,
     380             :     /*parent,leaf*/ kNone, false
     381             :   },
     382             :   {
     383             :     /*tag*/         eHTMLTag_output,
     384             :     /*parent,leaf*/ kSpecial, false
     385             :   },
     386             :   {
     387             :     /*tag*/         eHTMLTag_p,
     388             :     /*parent,leaf*/ kBlock, false
     389             :   },
     390             :   {
     391             :     /*tag*/         eHTMLTag_param,
     392             :     /*parent,leaf*/ kSpecial, true
     393             :   },
     394             :   {
     395             :     /*tag*/         eHTMLTag_picture,
     396             :     /*parent,leaf*/ kSpecial, false
     397             :   },
     398             :   {
     399             :     /*tag*/         eHTMLTag_plaintext,
     400             :     /*parent,leaf*/ kExtensions, false
     401             :   },
     402             :   {
     403             :     /*tag*/         eHTMLTag_pre,
     404             :     /*parent,leaf*/ kBlock|kPreformatted, false
     405             :   },
     406             :   {
     407             :     /*tag*/         eHTMLTag_progress,
     408             :     /*parent,leaf*/ kFormControl, false
     409             :   },
     410             :   {
     411             :     /*tag*/         eHTMLTag_q,
     412             :     /*parent,leaf*/ kSpecial, false
     413             :   },
     414             :   {
     415             :     /*tag*/         eHTMLTag_rb,
     416             :     /*parent,leaf*/ kPhrase, false
     417             :   },
     418             :   {
     419             :     /*tag*/         eHTMLTag_rp,
     420             :     /*parent,leaf*/ kPhrase, false
     421             :   },
     422             :   {
     423             :     /*tag*/         eHTMLTag_rt,
     424             :     /*parent,leaf*/ kPhrase, false
     425             :   },
     426             :   {
     427             :     /*tag*/         eHTMLTag_rtc,
     428             :     /*parent,leaf*/ kPhrase, false
     429             :   },
     430             :   {
     431             :     /*tag*/         eHTMLTag_ruby,
     432             :     /*parent,leaf*/ kPhrase, false
     433             :   },
     434             :   {
     435             :     /*tag*/         eHTMLTag_s,
     436             :     /*parent,leaf*/ kFontStyle, false
     437             :   },
     438             :   {
     439             :     /*tag*/         eHTMLTag_samp,
     440             :     /*parent,leaf*/ kPhrase, false
     441             :   },
     442             :   {
     443             :     /*tag*/         eHTMLTag_script,
     444             :     /*parent,leaf*/ (kSpecial|kHeadContent), false
     445             :   },
     446             :   {
     447             :     /*tag*/         eHTMLTag_section,
     448             :     /*parent,leaf*/ kBlock, false
     449             :   },
     450             :   {
     451             :     /*tag*/         eHTMLTag_select,
     452             :     /*parent,leaf*/ kFormControl, false
     453             :   },
     454             :   {
     455             :     /*tag*/         eHTMLTag_shadow,
     456             :     /*parent,leaf*/ kFlowEntity, false
     457             :   },
     458             :   {
     459             :     /*tag*/         eHTMLTag_small,
     460             :     /*parent,leaf*/ kFontStyle, false
     461             :   },
     462             :   {
     463             :     /*tag*/         eHTMLTag_source,
     464             :     /*parent,leaf*/ kSpecial, true
     465             :   },
     466             :   {
     467             :     /*tag*/         eHTMLTag_span,
     468             :     /*parent,leaf*/ kSpecial, false
     469             :   },
     470             :   {
     471             :     /*tag*/         eHTMLTag_strike,
     472             :     /*parent,leaf*/ kFontStyle, false
     473             :   },
     474             :   {
     475             :     /*tag*/         eHTMLTag_strong,
     476             :     /*parent,leaf*/ kPhrase, false
     477             :   },
     478             :   {
     479             :     /*tag*/         eHTMLTag_style,
     480             :     /*parent,leaf*/ kAllTags - kHeadContent, false
     481             :   },
     482             :   {
     483             :     /*tag*/         eHTMLTag_sub,
     484             :     /*parent,leaf*/ kSpecial, false
     485             :   },
     486             :   {
     487             :     /*tag*/         eHTMLTag_summary,
     488             :     /*parent,leaf*/ kBlock, false
     489             :   },
     490             :   {
     491             :     /*tag*/         eHTMLTag_sup,
     492             :     /*parent,leaf*/ kSpecial, false
     493             :   },
     494             :   {
     495             :     /*tag*/         eHTMLTag_table,
     496             :     /*parent,leaf*/ kBlock, false
     497             :   },
     498             :   {
     499             :     /*tag*/         eHTMLTag_tbody,
     500             :     /*parent,leaf*/ kNone, false
     501             :   },
     502             :   {
     503             :     /*tag*/         eHTMLTag_td,
     504             :     /*parent,leaf*/ kNone, false
     505             :   },
     506             :   {
     507             :     /*tag*/         eHTMLTag_textarea,
     508             :     /*parent,leaf*/ kFormControl, false
     509             :   },
     510             :   {
     511             :     /*tag*/         eHTMLTag_tfoot,
     512             :     /*parent,leaf*/ kNone, false
     513             :   },
     514             :   {
     515             :     /*tag*/         eHTMLTag_th,
     516             :     /*parent,leaf*/ kNone, false
     517             :   },
     518             :   {
     519             :     /*tag*/         eHTMLTag_thead,
     520             :     /*parent,leaf*/ kNone, false
     521             :   },
     522             :   {
     523             :     /*tag*/         eHTMLTag_template,
     524             :     /*parent,leaf*/ kNone, false
     525             :   },
     526             :   {
     527             :     /*tag*/         eHTMLTag_time,
     528             :     /*parent,leaf*/ kPhrase, false
     529             :   },
     530             :   {
     531             :     /*tag*/         eHTMLTag_title,
     532             :     /*parent,leaf*/ kHeadContent, false
     533             :   },
     534             :   {
     535             :     /*tag*/         eHTMLTag_tr,
     536             :     /*parent,leaf*/ kNone, false
     537             :   },
     538             :   {
     539             :     /*tag*/         eHTMLTag_track,
     540             :     /*parent,leaf*/ kSpecial, true
     541             :   },
     542             :   {
     543             :     /*tag*/         eHTMLTag_tt,
     544             :     /*parent,leaf*/ kFontStyle, false
     545             :   },
     546             :   {
     547             :     /*tag*/         eHTMLTag_u,
     548             :     /*parent,leaf*/ kFontStyle, false
     549             :   },
     550             :   {
     551             :     /*tag*/         eHTMLTag_ul,
     552             :     /*parent,leaf*/ kList, false
     553             :   },
     554             :   {
     555             :     /*tag*/         eHTMLTag_var,
     556             :     /*parent,leaf*/ kPhrase, false
     557             :   },
     558             :   {
     559             :     /*tag*/         eHTMLTag_video,
     560             :     /*parent,leaf*/ kSpecial, false
     561             :   },
     562             :   {
     563             :     /*tag*/         eHTMLTag_wbr,
     564             :     /*parent,leaf*/ kExtensions, true
     565             :   },
     566             :   {
     567             :     /*tag*/         eHTMLTag_xmp,
     568             :     /*parent,leaf*/ kInlineEntity|kPreformatted, false
     569             :   },
     570             :   {
     571             :     /*tag*/         eHTMLTag_text,
     572             :     /*parent,leaf*/ kFlowEntity, true
     573             :   },
     574             :   {
     575             :     /*tag*/         eHTMLTag_whitespace,
     576             :     /*parent,leaf*/ kFlowEntity|kHeadMisc, true
     577             :   },
     578             :   {
     579             :     /*tag*/         eHTMLTag_newline,
     580             :     /*parent,leaf*/ kFlowEntity|kHeadMisc, true
     581             :   },
     582             :   {
     583             :     /*tag*/         eHTMLTag_comment,
     584             :     /*parent,leaf*/ kFlowEntity|kHeadMisc, false
     585             :   },
     586             :   {
     587             :     /*tag*/         eHTMLTag_entity,
     588             :     /*parent,leaf*/ kFlowEntity, false
     589             :   },
     590             :   {
     591             :     /*tag*/         eHTMLTag_doctypeDecl,
     592             :     /*parent,leaf*/ kFlowEntity, false
     593             :   },
     594             :   {
     595             :     /*tag*/         eHTMLTag_markupDecl,
     596             :     /*parent,leaf*/ kFlowEntity, false
     597             :   },
     598             :   {
     599             :     /*tag*/         eHTMLTag_instruction,
     600             :     /*parent,leaf*/ kFlowEntity, false
     601             :   },
     602             :   {
     603             :     /*tag*/         eHTMLTag_userdefined,
     604             :     /*parent,leaf*/ (kFlowEntity|kHeadMisc), false
     605             :   },
     606             : };
     607             : 
     608             : /*********************************************************************************************/
     609             : 
     610           0 : bool nsHTMLElement::IsContainer(eHTMLTags aChild)
     611             : {
     612           0 :   return !gHTMLElements[aChild].mLeaf;
     613             : }
     614             : 
     615           0 : bool nsHTMLElement::IsMemberOf(int32_t aSet) const
     616             : {
     617           0 :   return TestBits(aSet,mParentBits);
     618             : }
     619             : 
     620             : #ifdef DEBUG
     621           2 : void CheckElementTable()
     622             : {
     623         296 :   for (eHTMLTags t = eHTMLTag_unknown; t <= eHTMLTag_userdefined; t = eHTMLTags(t + 1)) {
     624         294 :     NS_ASSERTION(gHTMLElements[t].mTagID == t, "gHTMLElements entries does match tag list.");
     625             :   }
     626           2 : }
     627             : #endif

Generated by: LCOV version 1.13