<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<head>
<style>.content {
padding: 20px;
height: 100%;
width: 944px;
margin-left: auto;
margin-right: auto;
}
.fold {
width: 20px;
float: left;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.number {
width: 45px;
float: left;
margin-right: 10px;
text-align: right;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.line {
}
.content {
font-family: "Monospace";
font-size: 1em;
background: #3f3f3f;
color: White;
width: 944px;
padding: 20px;
height: 100%;
margin-left: auto;
margin-right: auto;
}
font.Alert {
color: Yellow;
font-weight: bold;
}
font.Annotation {
color: Yellow;
font-style: italic;
}
font.Attribute {
color: LightPink;
}
font.BaseN {
color: Gold;
}
font.BuiltIn {
color: Coral;
}
font.Char {
color: Cyan;
}
font.Comment {
color: Beige;
font-style: italic;
}
font.CommentVar {
color: LightBlue;
font-style: italic;
}
font.Constant {
color: White;
font-weight: bold;
}
font.ControlFlow {
color: DeepPink;
}
font.DataType {
color: CadetBlue;
}
font.DecVal {
color: MediumPurple;
font-weight: bold;
}
font.Documentation {
color: Gold;
font-style: italic;
}
font.Error {
color: Red;
font-weight: bold;
}
font.Extension {
color: DarkGray;
font-weight: bold;
}
font.Float {
color: DarkViolet;
font-weight: bold;
}
font.Function {
color: RosyBrown;
}
font.Import {
color: PaleVioletRed;
}
font.Information {
color: LightGreen;
font-style: italic;
}
font.Keyword {
color: LightGreen;
font-weight: bold;
}
font.Normal {
color: White;
}
font.Operator {
color: Magenta;
}
font.Others {
color: GreenYellow;
}
font.Preprocessor {
color: DarkSeaGreen ;
font-weight: bold;
}
font.RegionMarker {
color: Plum;
}
font.SpecialChar {
color: Plum;
font-weight: bold;
}
font.SpecialString {
color: LightBlue;
}
font.String {
color: MediumAquaMarine;
}
font.Variable {
color: Turquoise;
font-weight: bold;
}
font.VerbatimString {
color: LightSkyBlue;
}
font.Warning {
color: Brown;
font-weight: bold;
}
</style>
<title>Kamelon output</title>
</head>
<body>
<div class="content">
<div id="1" class="line"><font class="Comment">/* This file is part of the KDE libraries</font></br></div>
<div id="2" class="line"><font class="Comment"> Copyright (C) 2003, 2004 Anders Lund <anders@alweb.dk></font></br></div>
<div id="3" class="line"><font class="Comment"> Copyright (C) 2003 Hamish Rodda <rodda@kde.org></font></br></div>
<div id="4" class="line"><font class="Comment"> Copyright (C) 2001,2002 Joseph Wenninger <jowenn@kde.org></font></br></div>
<div id="5" class="line"><font class="Comment"> Copyright (C) 2001 Christoph Cullmann <cullmann@kde.org></font></br></div>
<div id="6" class="line"><font class="Comment"> Copyright (C) 1999 Jochen Wilhelmy <digisnap@cs.tu-berlin.de></font></br></div>
<div id="7" class="line"></br></div>
<div id="8" class="line"></br></div>
<div id="9" class="line"><font class="Comment"> You should have received a copy of the GNU Library General Public License</font></br></div>
<div id="10" class="line"><font class="Comment"> along with this library; see the file COPYING.LIB. If not, write to</font></br></div>
<div id="11" class="line"><font class="Comment"> the Free Software Foundation, Inc., 59 Temple Place - Suite 330,</font></br></div>
<div id="12" class="line"><font class="Comment"> Boston, MA 02111-1307, USA.</font></br></div>
<div id="13" class="line"><font class="Comment">*/</font></br></div>
<div id="14" class="line"></br></div>
<div id="15" class="line"><font class="RegionMarker">//BEGIN INCLUDES</font></br></div>
<div id="16" class="line"><font class="Preprocessor">#include </font><font class="Import">"katehighlight.h"</font></br></div>
<div id="17" class="line"><font class="Preprocessor">#include </font><font class="Import">"katehighlight.moc"</font></br></div>
<div id="18" class="line"></br></div>
<div id="19" class="line"><font class="Preprocessor">#include </font><font class="Import"><kstaticdeleter.h></font></br></div>
<div id="20" class="line"><font class="Preprocessor">#include </font><font class="Import"><kapplication.h></font></br></div>
<div id="21" class="line"></br></div>
<div id="22" class="line"><font class="Preprocessor">#include </font><font class="Import"><qstringlist.h></font></br></div>
<div id="23" class="line"><font class="Preprocessor">#include </font><font class="Import"><qtextstream.h></font></br></div>
<div id="24" class="line"><font class="RegionMarker">//END</font></br></div>
<div id="25" class="line"></br></div>
<div id="26" class="line"><font class="RegionMarker">//BEGIN defines</font></br></div>
<div id="27" class="line"><font class="Comment">// same as in kmimemagic, no need to feed more data</font></br></div>
<div id="28" class="line"><font class="Preprocessor">#define KATE_HL_HOWMANY 1024</font></br></div>
<div id="29" class="line"></br></div>
<div id="30" class="line"><font class="Comment">// min. x seconds between two dynamic contexts reset</font></br></div>
<div id="31" class="line"><font class="Attribute">static</font><font class="Normal"> </font><font class="Attribute">const</font><font class="Normal"> </font><font class="DataType">int</font><font class="Normal"> KATE_DYNAMIC_CONTEXTS_RESET_DELAY = </font><font class="Float">30</font><font class="Normal"> * </font><font class="Float">1000</font><font class="Normal">;</font></br></div>
<div id="32" class="line"></br></div>
<div id="33" class="line"><font class="Comment">// x is a QString. if x is "true" or "1" this expression returns "true"</font></br></div>
<div id="34" class="line"><font class="Preprocessor">#define IS_TRUE(x) x.lower() == QString("true") || x.toInt() == 1</font></br></div>
<div id="35" class="line"><font class="RegionMarker">//END defines</font></br></div>
<div id="36" class="line"></br></div>
<div id="37" class="line"><font class="RegionMarker">//BEGIN Prviate HL classes</font></br></div>
<div id="38" class="line"></br></div>
<div id="39" class="line"><font class="Keyword">inline</font><font class="Normal"> </font><font class="DataType">bool</font><font class="Normal"> kateInsideString (</font><font class="Attribute">const</font><font class="Normal"> </font><font class="Extension">QString</font><font class="Normal"> &str, </font><font class="Extension">QChar</font><font class="Normal"> ch)</font></br></div>
<div id="40" class="line"><font class="Normal">{</font></br></div>
<div id="41" class="line"><font class="Normal"> </font><font class="ControlFlow">for</font><font class="Normal"> (</font><font class="Extension">uint</font><font class="Normal"> i=</font><font class="Float">0</font><font class="Normal">; i < str.length(); i++)</font></br></div>
<div id="42" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (*(str.unicode()+i) == ch)</font></br></div>
<div id="43" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> </font><font class="Keyword">true</font><font class="Normal">;</font></br></div>
<div id="44" class="line"></br></div>
<div id="45" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> </font><font class="Keyword">false</font><font class="Normal">;</font></br></div>
<div id="46" class="line"><font class="Normal">}</font></br></div>
<div id="47" class="line"></br></div>
<div id="48" class="line"><font class="Keyword">class</font><font class="Normal"> KateHlItem</font></br></div>
<div id="49" class="line"><font class="Normal">{</font></br></div>
<div id="50" class="line"><font class="Normal"> </font><font class="Keyword">public</font><font class="Normal">:</font></br></div>
<div id="51" class="line"><font class="Normal"> KateHlItem(</font><font class="DataType">int</font><font class="Normal"> attribute, </font><font class="DataType">int</font><font class="Normal"> context,</font><font class="DataType">signed</font><font class="Normal"> </font><font class="DataType">char</font><font class="Normal"> regionId, </font><font class="DataType">signed</font><font class="Normal"> </font><font class="DataType">char</font><font class="Normal"> regionId2);</font></br></div>
<div id="52" class="line"><font class="Normal"> </font><font class="Keyword">virtual</font><font class="Normal"> ~KateHlItem();</font></br></div>
<div id="53" class="line"></br></div>
<div id="54" class="line"><font class="Normal"> </font><font class="Keyword">public</font><font class="Normal">:</font></br></div>
<div id="55" class="line"><font class="Normal"> </font><font class="Comment">// caller must keep in mind: LEN > 0 is a must !!!!!!!!!!!!!!!!!!!!!1</font></br></div>
<div id="56" class="line"><font class="Normal"> </font><font class="Comment">// Now, the function returns the offset detected, or 0 if no match is found.</font></br></div>
<div id="57" class="line"><font class="Normal"> </font><font class="Comment">// bool linestart isn't needed, this is equivalent to offset == 0.</font></br></div>
<div id="58" class="line"><font class="Normal"> </font><font class="Keyword">virtual</font><font class="Normal"> </font><font class="DataType">int</font><font class="Normal"> checkHgl(</font><font class="Attribute">const</font><font class="Normal"> </font><font class="Extension">QString</font><font class="Normal">& text, </font><font class="DataType">int</font><font class="Normal"> offset, </font><font class="DataType">int</font><font class="Normal"> len) = </font><font class="Float">0</font><font class="Normal">;</font></br></div>
<div id="59" class="line"></br></div>
<div id="60" class="line"><font class="Normal"> </font><font class="Keyword">virtual</font><font class="Normal"> </font><font class="DataType">bool</font><font class="Normal"> lineContinue(){</font><font class="ControlFlow">return</font><font class="Normal"> </font><font class="Keyword">false</font><font class="Normal">;}</font></br></div>
<div id="61" class="line"></br></div>
<div id="62" class="line"><font class="Normal"> </font><font class="Keyword">virtual</font><font class="Normal"> </font><font class="Extension">QStringList</font><font class="Normal"> *capturedTexts() {</font><font class="ControlFlow">return</font><font class="Normal"> </font><font class="Float">0</font><font class="Normal">;}</font></br></div>
<div id="63" class="line"><font class="Normal"> </font><font class="Keyword">virtual</font><font class="Normal"> KateHlItem *clone(</font><font class="Attribute">const</font><font class="Normal"> </font><font class="Extension">QStringList</font><font class="Normal"> *) {</font><font class="ControlFlow">return</font><font class="Normal"> </font><font class="Keyword">this</font><font class="Normal">;}</font></br></div>
<div id="64" class="line"></br></div>
<div id="65" class="line"><font class="Normal"> </font><font class="Attribute">static</font><font class="Normal"> </font><font class="DataType">void</font><font class="Normal"> dynamicSubstitute(</font><font class="Extension">QString</font><font class="Normal">& str, </font><font class="Attribute">const</font><font class="Normal"> </font><font class="Extension">QStringList</font><font class="Normal"> *args);</font></br></div>
<div id="66" class="line"></br></div>
<div id="67" class="line"><font class="Normal"> QMemArray<KateHlItem*> subItems;</font></br></div>
<div id="68" class="line"><font class="Normal"> </font><font class="DataType">int</font><font class="Normal"> attr;</font></br></div>
<div id="69" class="line"><font class="Normal"> </font><font class="DataType">int</font><font class="Normal"> ctx;</font></br></div>
<div id="70" class="line"><font class="Normal"> </font><font class="DataType">signed</font><font class="Normal"> </font><font class="DataType">char</font><font class="Normal"> region;</font></br></div>
<div id="71" class="line"></br></div>
<div id="72" class="line"><font class="Normal"> </font><font class="Comment">// start enable flags, nicer than the virtual methodes</font></br></div>
<div id="73" class="line"><font class="Normal"> </font><font class="Comment">// saves function calls</font></br></div>
<div id="74" class="line"><font class="Normal"> </font><font class="DataType">bool</font><font class="Normal"> alwaysStartEnable;</font></br></div>
<div id="75" class="line"><font class="Normal"> </font><font class="DataType">bool</font><font class="Normal"> customStartEnable;</font></br></div>
<div id="76" class="line"><font class="Normal">};</font></br></div>
<div id="77" class="line"></br></div>
<div id="78" class="line"><font class="Keyword">class</font><font class="Normal"> KateHlContext</font></br></div>
<div id="79" class="line"><font class="Normal">{</font></br></div>
<div id="80" class="line"><font class="Normal"> </font><font class="Keyword">public</font><font class="Normal">:</font></br></div>
<div id="81" class="line"><font class="Normal"> KateHlContext(</font><font class="Attribute">const</font><font class="Normal"> </font><font class="Extension">QString</font><font class="Normal"> &</font><font class="Constant">_hlId</font><font class="Normal">, </font><font class="DataType">int</font><font class="Normal"> attribute, </font><font class="DataType">int</font><font class="Normal"> lineEndContext,</font><font class="DataType">int</font><font class="Normal"> </font><font class="Constant">_lineBeginContext</font><font class="Normal">,</font></br></div>
<div id="82" class="line"><font class="Normal"> </font><font class="DataType">bool</font><font class="Normal"> </font><font class="Constant">_fallthrough</font><font class="Normal">, </font><font class="DataType">int</font><font class="Normal"> </font><font class="Constant">_fallthroughContext</font><font class="Normal">, </font><font class="DataType">bool</font><font class="Normal"> </font><font class="Constant">_dynamic</font><font class="Normal">);</font></br></div>
<div id="83" class="line"><font class="Normal"> </font><font class="Keyword">virtual</font><font class="Normal"> ~KateHlContext();</font></br></div>
<div id="84" class="line"><font class="Normal"> KateHlContext *clone(</font><font class="Attribute">const</font><font class="Normal"> </font><font class="Extension">QStringList</font><font class="Normal"> *args);</font></br></div>
<div id="85" class="line"></br></div>
<div id="86" class="line"><font class="Normal"> QValueVector<KateHlItem*> items;</font></br></div>
<div id="87" class="line"><font class="Normal"> </font><font class="Extension">QString</font><font class="Normal"> hlId; </font><font class="Comment">///< A unique highlight identifier. Used to look up correct properties.</font></br></div>
<div id="88" class="line"><font class="Normal"> </font><font class="DataType">int</font><font class="Normal"> attr;</font></br></div>
<div id="89" class="line"><font class="Normal"> </font><font class="DataType">int</font><font class="Normal"> ctx;</font></br></div>
<div id="90" class="line"><font class="Normal"> </font><font class="DataType">int</font><font class="Normal"> lineBeginContext;</font></br></div>
<div id="91" class="line"><font class="Normal"> </font><font class="Comment">/** </font><font class="Constant">@internal</font><font class="Comment"> anders: possible escape if no rules matches.</font></br></div>
<div id="92" class="line"><font class="Comment"> false unless 'fallthrough="1|true"' (insensitive)</font></br></div>
<div id="93" class="line"><font class="Comment"> if true, go to ftcxt w/o eating of string.</font></br></div>
<div id="94" class="line"><font class="Comment"> ftctx is "fallthroughContext" in xml files, valid values are int or #pop[..]</font></br></div>
<div id="95" class="line"><font class="Comment"> see in KateHighlighting::doHighlight */</font></br></div>
<div id="96" class="line"><font class="Normal"> </font><font class="DataType">bool</font><font class="Normal"> fallthrough;</font></br></div>
<div id="97" class="line"><font class="Normal"> </font><font class="DataType">int</font><font class="Normal"> ftctx; </font><font class="Comment">// where to go after no rules matched</font></br></div>
<div id="98" class="line"></br></div>
<div id="99" class="line"><font class="Normal"> </font><font class="DataType">bool</font><font class="Normal"> dynamic;</font></br></div>
<div id="100" class="line"><font class="Normal"> </font><font class="DataType">bool</font><font class="Normal"> dynamicChild;</font></br></div>
<div id="101" class="line"><font class="Normal">};</font></br></div>
<div id="102" class="line"></br></div>
<div id="103" class="line"></br></div>
<div id="104" class="line"><font class="RegionMarker">//END</font></br></div>
<div id="105" class="line"></br></div>
<div id="106" class="line"><font class="RegionMarker">//BEGIN STATICS</font></br></div>
<div id="107" class="line"><font class="Normal">KateHlManager *KateHlManager::</font><font class="Variable">s_self</font><font class="Normal"> = </font><font class="Float">0</font><font class="Normal">;</font></br></div>
<div id="108" class="line"></br></div>
<div id="109" class="line"><font class="Attribute">static</font><font class="Normal"> </font><font class="Attribute">const</font><font class="Normal"> </font><font class="DataType">bool</font><font class="Normal"> trueBool = </font><font class="Keyword">true</font><font class="Normal">;</font></br></div>
<div id="110" class="line"><font class="Attribute">static</font><font class="Normal"> </font><font class="Attribute">const</font><font class="Normal"> </font><font class="Extension">QString</font><font class="Normal"> stdDeliminator = </font><font class="Extension">QString</font><font class="Normal"> (</font><font class="String">" </font><font class="SpecialChar">\t</font><font class="String">.():!+,-<=>%&*/;?[]^{|}~\</font><font class="SpecialChar">\"</font><font class="String">);</font></br></div>
<div id="111" class="line"><font class="RegionMarker">//END</font></br></div>
<div id="112" class="line"></br></div>
<div id="113" class="line"><font class="RegionMarker">//BEGIN NON MEMBER FUNCTIONS</font></br></div>
<div id="114" class="line"><font class="Attribute">static</font><font class="Normal"> KateHlItemData::ItemStyles getDefStyleNum(</font><font class="Extension">QString</font><font class="Normal"> name)</font></br></div>
<div id="115" class="line"><font class="Normal">{</font></br></div>
<div id="116" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (name==</font><font class="String">"dsNormal"</font><font class="Normal">) </font><font class="ControlFlow">return</font><font class="Normal"> KateHlItemData::dsNormal;</font></br></div>
<div id="117" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (name==</font><font class="String">"dsKeyword"</font><font class="Normal">) </font><font class="ControlFlow">return</font><font class="Normal"> KateHlItemData::dsKeyword;</font></br></div>
<div id="118" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (name==</font><font class="String">"dsDataType"</font><font class="Normal">) </font><font class="ControlFlow">return</font><font class="Normal"> KateHlItemData::dsDataType;</font></br></div>
<div id="119" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (name==</font><font class="String">"dsDecVal"</font><font class="Normal">) </font><font class="ControlFlow">return</font><font class="Normal"> KateHlItemData::dsDecVal;</font></br></div>
<div id="120" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (name==</font><font class="String">"dsBaseN"</font><font class="Normal">) </font><font class="ControlFlow">return</font><font class="Normal"> KateHlItemData::dsBaseN;</font></br></div>
<div id="121" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (name==</font><font class="String">"dsFloat"</font><font class="Normal">) </font><font class="ControlFlow">return</font><font class="Normal"> KateHlItemData::dsFloat;</font></br></div>
<div id="122" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (name==</font><font class="String">"dsChar"</font><font class="Normal">) </font><font class="ControlFlow">return</font><font class="Normal"> KateHlItemData::dsChar;</font></br></div>
<div id="123" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (name==</font><font class="String">"dsString"</font><font class="Normal">) </font><font class="ControlFlow">return</font><font class="Normal"> KateHlItemData::dsString;</font></br></div>
<div id="124" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (name==</font><font class="String">"dsComment"</font><font class="Normal">) </font><font class="ControlFlow">return</font><font class="Normal"> KateHlItemData::dsComment;</font></br></div>
<div id="125" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (name==</font><font class="String">"dsOthers"</font><font class="Normal">) </font><font class="ControlFlow">return</font><font class="Normal"> KateHlItemData::dsOthers;</font></br></div>
<div id="126" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (name==</font><font class="String">"dsAlert"</font><font class="Normal">) </font><font class="ControlFlow">return</font><font class="Normal"> KateHlItemData::dsAlert;</font></br></div>
<div id="127" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (name==</font><font class="String">"dsFunction"</font><font class="Normal">) </font><font class="ControlFlow">return</font><font class="Normal"> KateHlItemData::dsFunction;</font></br></div>
<div id="128" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (name==</font><font class="String">"dsRegionMarker"</font><font class="Normal">) </font><font class="ControlFlow">return</font><font class="Normal"> KateHlItemData::dsRegionMarker;</font></br></div>
<div id="129" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (name==</font><font class="String">"dsError"</font><font class="Normal">) </font><font class="ControlFlow">return</font><font class="Normal"> KateHlItemData::dsError;</font></br></div>
<div id="130" class="line"></br></div>
<div id="131" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> KateHlItemData::dsNormal;</font></br></div>
<div id="132" class="line"><font class="Normal">}</font></br></div>
<div id="133" class="line"><font class="RegionMarker">//END</font></br></div>
<div id="134" class="line"></br></div>
<div id="135" class="line"><font class="Normal">KateHlItem::~KateHlItem()</font></br></div>
<div id="136" class="line"><font class="Normal">{</font></br></div>
<div id="137" class="line"><font class="Normal"> </font><font class="Comment">//kdDebug(13010)<<"In hlItem::~KateHlItem()"<<endl;</font></br></div>
<div id="138" class="line"><font class="Normal"> </font><font class="ControlFlow">for</font><font class="Normal"> (</font><font class="Extension">uint</font><font class="Normal"> i=</font><font class="Float">0</font><font class="Normal">; i < subItems.size(); i++)</font></br></div>
<div id="139" class="line"><font class="Normal"> </font><font class="Keyword">delete</font><font class="Normal"> subItems[i];</font></br></div>
<div id="140" class="line"><font class="Normal">}</font></br></div>
<div id="141" class="line"></br></div>
<div id="142" class="line"><font class="DataType">void</font><font class="Normal"> KateHlItem::dynamicSubstitute(</font><font class="Extension">QString</font><font class="Normal"> &str, </font><font class="Attribute">const</font><font class="Normal"> </font><font class="Extension">QStringList</font><font class="Normal"> *args)</font></br></div>
<div id="143" class="line"><font class="Normal">{</font></br></div>
<div id="144" class="line"><font class="Normal"> </font><font class="ControlFlow">for</font><font class="Normal"> (</font><font class="Extension">uint</font><font class="Normal"> i = </font><font class="Float">0</font><font class="Normal">; i < str.length() - </font><font class="Float">1</font><font class="Normal">; ++i)</font></br></div>
<div id="145" class="line"><font class="Normal"> {</font></br></div>
<div id="146" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (str[i] == </font><font class="Char">'%'</font><font class="Normal">)</font></br></div>
<div id="147" class="line"><font class="Normal"> {</font></br></div>
<div id="148" class="line"><font class="Normal"> </font><font class="DataType">char</font><font class="Normal"> c = str[i + </font><font class="Float">1</font><font class="Normal">].latin</font><font class="DecVal">1</font><font class="Normal">();</font></br></div>
<div id="149" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (c == </font><font class="Char">'%'</font><font class="Normal">)</font></br></div>
<div id="150" class="line"><font class="Normal"> str.replace(i, </font><font class="Float">1</font><font class="Normal">, </font><font class="String">""</font><font class="Normal">);</font></br></div>
<div id="151" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (c >= </font><font class="Char">'0'</font><font class="Normal"> && c <= </font><font class="Char">'9'</font><font class="Normal">)</font></br></div>
<div id="152" class="line"><font class="Normal"> {</font></br></div>
<div id="153" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> ((</font><font class="Extension">uint</font><font class="Normal">)(c - </font><font class="Char">'0'</font><font class="Normal">) < args->size())</font></br></div>
<div id="154" class="line"><font class="Normal"> {</font></br></div>
<div id="155" class="line"><font class="Normal"> str.replace(i, </font><font class="Float">2</font><font class="Normal">, (*args)[c - </font><font class="Char">'0'</font><font class="Normal">]);</font></br></div>
<div id="156" class="line"><font class="Normal"> i += ((*args)[c - </font><font class="Char">'0'</font><font class="Normal">]).length() - </font><font class="Float">1</font><font class="Normal">;</font></br></div>
<div id="157" class="line"><font class="Normal"> }</font></br></div>
<div id="158" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font></br></div>
<div id="159" class="line"><font class="Normal"> {</font></br></div>
<div id="160" class="line"><font class="Normal"> str.replace(i, </font><font class="Float">2</font><font class="Normal">, </font><font class="String">""</font><font class="Normal">);</font></br></div>
<div id="161" class="line"><font class="Normal"> --i;</font></br></div>
<div id="162" class="line"><font class="Normal"> }</font></br></div>
<div id="163" class="line"><font class="Normal"> }</font></br></div>
<div id="164" class="line"><font class="Normal"> }</font></br></div>
<div id="165" class="line"><font class="Normal"> }</font></br></div>
<div id="166" class="line"><font class="Normal">}</font></br></div>
<div id="167" class="line"><font class="RegionMarker">//END</font></br></div>
<div id="168" class="line"></br></div>
<div id="169" class="line"></br></div>
<div id="170" class="line"><font class="RegionMarker">//BEGIN KateHlCStringChar</font></br></div>
<div id="171" class="line"><font class="Normal">KateHlCStringChar::KateHlCStringChar(</font><font class="DataType">int</font><font class="Normal"> attribute, </font><font class="DataType">int</font><font class="Normal"> context,</font><font class="DataType">signed</font><font class="Normal"> </font><font class="DataType">char</font><font class="Normal"> regionId,</font><font class="DataType">signed</font><font class="Normal"> </font><font class="DataType">char</font><font class="Normal"> regionId2)</font></br></div>
<div id="172" class="line"><font class="Normal"> : KateHlItem(attribute,context,regionId,regionId2) {</font></br></div>
<div id="173" class="line"><font class="Normal">}</font></br></div>
<div id="174" class="line"></br></div>
<div id="175" class="line"><font class="Comment">// checks for C escaped chars \n and escaped hex/octal chars</font></br></div>
<div id="176" class="line"><font class="Attribute">static</font><font class="Normal"> </font><font class="DataType">int</font><font class="Normal"> checkEscapedChar(</font><font class="Attribute">const</font><font class="Normal"> </font><font class="Extension">QString</font><font class="Normal">& text, </font><font class="DataType">int</font><font class="Normal"> offset, </font><font class="DataType">int</font><font class="Normal">& len)</font></br></div>
<div id="177" class="line"><font class="Normal">{</font></br></div>
<div id="178" class="line"><font class="Normal"> </font><font class="DataType">int</font><font class="Normal"> i;</font></br></div>
<div id="179" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (text[offset] == </font><font class="Char">'</font><font class="SpecialChar">\\</font><font class="Char">'</font><font class="Normal"> && len > </font><font class="Float">1</font><font class="Normal">)</font></br></div>
<div id="180" class="line"><font class="Normal"> {</font></br></div>
<div id="181" class="line"><font class="Normal"> offset++;</font></br></div>
<div id="182" class="line"><font class="Normal"> len--;</font></br></div>
<div id="183" class="line"></br></div>
<div id="184" class="line"><font class="Normal"> </font><font class="ControlFlow">switch</font><font class="Normal">(text[offset])</font></br></div>
<div id="185" class="line"><font class="Normal"> {</font></br></div>
<div id="186" class="line"><font class="Normal"> </font><font class="ControlFlow">case</font><font class="Normal"> </font><font class="Char">'a'</font><font class="Normal">: </font><font class="Comment">// checks for control chars</font></br></div>
<div id="187" class="line"><font class="Normal"> </font><font class="ControlFlow">case</font><font class="Normal"> </font><font class="Char">'b'</font><font class="Normal">: </font><font class="Comment">// we want to fall through</font></br></div>
<div id="188" class="line"><font class="Normal"> </font><font class="ControlFlow">case</font><font class="Normal"> </font><font class="Char">'e'</font><font class="Normal">:</font></br></div>
<div id="189" class="line"><font class="Normal"> </font><font class="ControlFlow">case</font><font class="Normal"> </font><font class="Char">'f'</font><font class="Normal">:</font></br></div>
<div id="190" class="line"></br></div>
<div id="191" class="line"><font class="Normal"> </font><font class="ControlFlow">case</font><font class="Normal"> </font><font class="Char">'n'</font><font class="Normal">:</font></br></div>
<div id="192" class="line"><font class="Normal"> </font><font class="ControlFlow">case</font><font class="Normal"> </font><font class="Char">'r'</font><font class="Normal">:</font></br></div>
<div id="193" class="line"><font class="Normal"> </font><font class="ControlFlow">case</font><font class="Normal"> </font><font class="Char">'t'</font><font class="Normal">:</font></br></div>
<div id="194" class="line"><font class="Normal"> </font><font class="ControlFlow">case</font><font class="Normal"> </font><font class="Char">'v'</font><font class="Normal">:</font></br></div>
<div id="195" class="line"><font class="Normal"> </font><font class="ControlFlow">case</font><font class="Normal"> </font><font class="Char">'</font><font class="SpecialChar">\'</font><font class="Char">'</font><font class="Normal">:</font></br></div>
<div id="196" class="line"><font class="Normal"> </font><font class="ControlFlow">case</font><font class="Normal"> </font><font class="Char">'</font><font class="SpecialChar">\"</font><font class="Char">'</font><font class="Normal">:</font></br></div>
<div id="197" class="line"><font class="Normal"> </font><font class="ControlFlow">case</font><font class="Normal"> </font><font class="Char">'?'</font><font class="Normal"> : </font><font class="Comment">// added ? ANSI C classifies this as an escaped char</font></br></div>
<div id="198" class="line"><font class="Normal"> </font><font class="ControlFlow">case</font><font class="Normal"> </font><font class="Char">'</font><font class="SpecialChar">\\</font><font class="Char">'</font><font class="Normal">:</font></br></div>
<div id="199" class="line"><font class="Normal"> offset++;</font></br></div>
<div id="200" class="line"><font class="Normal"> len--;</font></br></div>
<div id="201" class="line"><font class="Normal"> </font><font class="ControlFlow">break</font><font class="Normal">;</font></br></div>
<div id="202" class="line"></br></div>
<div id="203" class="line"><font class="Normal"> </font><font class="ControlFlow">case</font><font class="Normal"> </font><font class="Char">'x'</font><font class="Normal">: </font><font class="Comment">// if it's like \xff</font></br></div>
<div id="204" class="line"><font class="Normal"> offset++; </font><font class="Comment">// eat the x</font></br></div>
<div id="205" class="line"><font class="Normal"> len--;</font></br></div>
<div id="206" class="line"><font class="Normal"> </font><font class="Comment">// these for loops can probably be</font></br></div>
<div id="207" class="line"><font class="Normal"> </font><font class="Comment">// replaced with something else but</font></br></div>
<div id="208" class="line"><font class="Normal"> </font><font class="Comment">// for right now they work</font></br></div>
<div id="209" class="line"><font class="Normal"> </font><font class="Comment">// check for hexdigits</font></br></div>
<div id="210" class="line"><font class="Normal"> </font><font class="ControlFlow">for</font><font class="Normal"> (i = </font><font class="Float">0</font><font class="Normal">; (len > </font><font class="Float">0</font><font class="Normal">) && (i < </font><font class="Float">2</font><font class="Normal">) && (text[offset] >= </font><font class="Char">'0'</font><font class="Normal"> && text[offset] <= </font><font class="Char">'9'</font><font class="Normal"> || (text[offset] & </font><font class="BaseN">0xdf</font><font class="Normal">) >= </font><font class="Char">'A'</font><font class="Normal"> && (text[offset] & </font><font class="BaseN">0xdf</font><font class="Normal">) <= </font><font class="Char">'F'</font><font class="Normal">); i++)</font></br></div>
<div id="211" class="line"><font class="Normal"> {</font></br></div>
<div id="212" class="line"><font class="Normal"> offset++;</font></br></div>
<div id="213" class="line"><font class="Normal"> len--;</font></br></div>
<div id="214" class="line"><font class="Normal"> }</font></br></div>
<div id="215" class="line"></br></div>
<div id="216" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (i == </font><font class="Float">0</font><font class="Normal">)</font></br></div>
<div id="217" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> </font><font class="Float">0</font><font class="Normal">; </font><font class="Comment">// takes care of case '\x'</font></br></div>
<div id="218" class="line"></br></div>
<div id="219" class="line"><font class="Normal"> </font><font class="ControlFlow">break</font><font class="Normal">;</font></br></div>
<div id="220" class="line"></br></div>
<div id="221" class="line"><font class="Normal"> </font><font class="ControlFlow">case</font><font class="Normal"> </font><font class="Char">'0'</font><font class="Normal">: </font><font class="ControlFlow">case</font><font class="Normal"> </font><font class="Char">'1'</font><font class="Normal">: </font><font class="ControlFlow">case</font><font class="Normal"> </font><font class="Char">'2'</font><font class="Normal">: </font><font class="ControlFlow">case</font><font class="Normal"> </font><font class="Char">'3'</font><font class="Normal"> :</font></br></div>
<div id="222" class="line"><font class="Normal"> </font><font class="ControlFlow">case</font><font class="Normal"> </font><font class="Char">'4'</font><font class="Normal">: </font><font class="ControlFlow">case</font><font class="Normal"> </font><font class="Char">'5'</font><font class="Normal">: </font><font class="ControlFlow">case</font><font class="Normal"> </font><font class="Char">'6'</font><font class="Normal">: </font><font class="ControlFlow">case</font><font class="Normal"> </font><font class="Char">'7'</font><font class="Normal"> :</font></br></div>
<div id="223" class="line"><font class="Normal"> </font><font class="ControlFlow">for</font><font class="Normal"> (i = </font><font class="Float">0</font><font class="Normal">; (len > </font><font class="Float">0</font><font class="Normal">) && (i < </font><font class="Float">3</font><font class="Normal">) && (text[offset] >=</font><font class="Char">'0'</font><font class="Normal">&& text[offset] <=</font><font class="Char">'7'</font><font class="Normal">); i++)</font></br></div>
<div id="224" class="line"><font class="Normal"> {</font></br></div>
<div id="225" class="line"><font class="Normal"> offset++;</font></br></div>
<div id="226" class="line"><font class="Normal"> len--;</font></br></div>
<div id="227" class="line"><font class="Normal"> }</font></br></div>
<div id="228" class="line"><font class="Normal"> </font><font class="ControlFlow">break</font><font class="Normal">;</font></br></div>
<div id="229" class="line"></br></div>
<div id="230" class="line"><font class="Normal"> </font><font class="ControlFlow">default</font><font class="Normal">:</font></br></div>
<div id="231" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> </font><font class="Float">0</font><font class="Normal">;</font></br></div>
<div id="232" class="line"><font class="Normal"> }</font></br></div>
<div id="233" class="line"></br></div>
<div id="234" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> offset;</font></br></div>
<div id="235" class="line"><font class="Normal"> }</font></br></div>
<div id="236" class="line"></br></div>
<div id="237" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> </font><font class="Float">0</font><font class="Normal">;</font></br></div>
<div id="238" class="line"><font class="Normal">}</font></br></div>
<div id="239" class="line"></br></div>
<div id="240" class="line"><font class="DataType">int</font><font class="Normal"> KateHlCStringChar::checkHgl(</font><font class="Attribute">const</font><font class="Normal"> </font><font class="Extension">QString</font><font class="Normal">& text, </font><font class="DataType">int</font><font class="Normal"> offset, </font><font class="DataType">int</font><font class="Normal"> len)</font></br></div>
<div id="241" class="line"><font class="Normal">{</font></br></div>
<div id="242" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> checkEscapedChar(text, offset, len);</font></br></div>
<div id="243" class="line"><font class="Normal">}</font></br></div>
<div id="244" class="line"><font class="RegionMarker">//END</font></br></div>
<div id="245" class="line"></br></div>
<div id="246" class="line"><font class="RegionMarker">//BEGIN KateHlCChar</font></br></div>
<div id="247" class="line"><font class="Normal">KateHlCChar::KateHlCChar(</font><font class="DataType">int</font><font class="Normal"> attribute, </font><font class="DataType">int</font><font class="Normal"> context,</font><font class="DataType">signed</font><font class="Normal"> </font><font class="DataType">char</font><font class="Normal"> regionId,</font><font class="DataType">signed</font><font class="Normal"> </font><font class="DataType">char</font><font class="Normal"> regionId2)</font></br></div>
<div id="248" class="line"><font class="Normal"> : KateHlItem(attribute,context,regionId,regionId2) {</font></br></div>
<div id="249" class="line"><font class="Normal">}</font></br></div>
<div id="250" class="line"></br></div>
<div id="251" class="line"><font class="DataType">int</font><font class="Normal"> KateHlCChar::checkHgl(</font><font class="Attribute">const</font><font class="Normal"> </font><font class="Extension">QString</font><font class="Normal">& text, </font><font class="DataType">int</font><font class="Normal"> offset, </font><font class="DataType">int</font><font class="Normal"> len)</font></br></div>
<div id="252" class="line"><font class="Normal">{</font></br></div>
<div id="253" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> ((len > </font><font class="Float">1</font><font class="Normal">) && (text[offset] == </font><font class="Char">'</font><font class="SpecialChar">\'</font><font class="Char">'</font><font class="Normal">) && (text[offset</font><font class="DecVal">+1</font><font class="Normal">] != </font><font class="Char">'</font><font class="SpecialChar">\'</font><font class="Char">'</font><font class="Normal">))</font></br></div>
<div id="254" class="line"><font class="Normal"> {</font></br></div>
<div id="255" class="line"><font class="Normal"> </font><font class="DataType">int</font><font class="Normal"> oldl;</font></br></div>
<div id="256" class="line"><font class="Normal"> oldl = len;</font></br></div>
<div id="257" class="line"></br></div>
<div id="258" class="line"><font class="Normal"> len--;</font></br></div>
<div id="259" class="line"></br></div>
<div id="260" class="line"><font class="Normal"> </font><font class="DataType">int</font><font class="Normal"> offset2 = checkEscapedChar(text, offset + </font><font class="Float">1</font><font class="Normal">, len);</font></br></div>
<div id="261" class="line"></br></div>
<div id="262" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (!offset2)</font></br></div>
<div id="263" class="line"><font class="Normal"> {</font></br></div>
<div id="264" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (oldl > </font><font class="Float">2</font><font class="Normal">)</font></br></div>
<div id="265" class="line"><font class="Normal"> {</font></br></div>
<div id="266" class="line"><font class="Normal"> offset2 = offset + </font><font class="Float">2</font><font class="Normal">;</font></br></div>
<div id="267" class="line"><font class="Normal"> len = oldl - </font><font class="Float">2</font><font class="Normal">;</font></br></div>
<div id="268" class="line"><font class="Normal"> }</font></br></div>
<div id="269" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font></br></div>
<div id="270" class="line"><font class="Normal"> {</font></br></div>
<div id="271" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> </font><font class="Float">0</font><font class="Normal">;</font></br></div>
<div id="272" class="line"><font class="Normal"> }</font></br></div>
<div id="273" class="line"><font class="Normal"> }</font></br></div>
<div id="274" class="line"></br></div>
<div id="275" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> ((len > </font><font class="Float">0</font><font class="Normal">) && (text[offset</font><font class="DecVal">2</font><font class="Normal">] == </font><font class="Char">'</font><font class="SpecialChar">\'</font><font class="Char">'</font><font class="Normal">))</font></br></div>
<div id="276" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> ++offset2;</font></br></div>
<div id="277" class="line"><font class="Normal"> }</font></br></div>
<div id="278" class="line"></br></div>
<div id="279" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> </font><font class="Float">0</font><font class="Normal">;</font></br></div>
<div id="280" class="line"><font class="Normal">}</font></br></div>
<div id="281" class="line"><font class="RegionMarker">//END</font></br></div>
<div id="282" class="line"></br></div>
<div id="283" class="line"><font class="RegionMarker">//BEGIN KateHl2CharDetect</font></br></div>
<div id="284" class="line"><font class="Normal">KateHl2CharDetect::KateHl</font><font class="Error">2CharDetect</font><font class="Normal">(</font><font class="DataType">int</font><font class="Normal"> attribute, </font><font class="DataType">int</font><font class="Normal"> context, </font><font class="DataType">signed</font><font class="Normal"> </font><font class="DataType">char</font><font class="Normal"> regionId,</font><font class="DataType">signed</font><font class="Normal"> </font><font class="DataType">char</font><font class="Normal"> regionId2, </font><font class="Attribute">const</font><font class="Normal"> </font><font class="Extension">QChar</font><font class="Normal"> *s)</font></br></div>
<div id="285" class="line"><font class="Normal"> : KateHlItem(attribute,context,regionId,regionId2) {</font></br></div>
<div id="286" class="line"><font class="Normal"> sChar1 = s[</font><font class="DecVal">0</font><font class="Normal">];</font></br></div>
<div id="287" class="line"><font class="Normal"> sChar2 = s[</font><font class="DecVal">1</font><font class="Normal">];</font></br></div>
<div id="288" class="line"><font class="Normal"> }</font></br></div>
<div id="289" class="line"><font class="RegionMarker">//END KateHl2CharDetect</font></br></div>
<div id="290" class="line"></br></div>
<div id="291" class="line"><font class="Normal">KateHlItemData::KateHlItemData(</font><font class="Attribute">const</font><font class="Normal"> </font><font class="Extension">QString</font><font class="Normal"> name, </font><font class="DataType">int</font><font class="Normal"> defStyleNum)</font></br></div>
<div id="292" class="line"><font class="Normal"> : name(name), defStyleNum(defStyleNum) {</font></br></div>
<div id="293" class="line"><font class="Normal">}</font></br></div>
<div id="294" class="line"></br></div>
<div id="295" class="line"><font class="Normal">KateHlData::KateHlData(</font><font class="Attribute">const</font><font class="Normal"> </font><font class="Extension">QString</font><font class="Normal"> &wildcards, </font><font class="Attribute">const</font><font class="Normal"> </font><font class="Extension">QString</font><font class="Normal"> &mimetypes, </font><font class="Attribute">const</font><font class="Normal"> </font><font class="Extension">QString</font><font class="Normal"> &identifier, </font><font class="DataType">int</font><font class="Normal"> priority)</font></br></div>
<div id="296" class="line"><font class="Normal"> : wildcards(wildcards), mimetypes(mimetypes), identifier(identifier), priority(priority)</font></br></div>
<div id="297" class="line"><font class="Normal">{</font></br></div>
<div id="298" class="line"><font class="Normal">}</font></br></div>
<div id="299" class="line"></br></div>
<div id="300" class="line"><font class="RegionMarker">//BEGIN KateHlContext</font></br></div>
<div id="301" class="line"><font class="Normal">KateHlContext::KateHlContext (</font><font class="Attribute">const</font><font class="Normal"> </font><font class="Extension">QString</font><font class="Normal"> &</font><font class="Constant">_hlId</font><font class="Normal">, </font><font class="DataType">int</font><font class="Normal"> attribute, </font><font class="DataType">int</font><font class="Normal"> lineEndContext, </font><font class="DataType">int</font><font class="Normal"> </font><font class="Constant">_lineBeginContext</font><font class="Normal">, </font><font class="DataType">bool</font><font class="Normal"> </font><font class="Constant">_fallthrough</font><font class="Normal">, </font><font class="DataType">int</font><font class="Normal"> </font><font class="Constant">_fallthroughContext</font><font class="Normal">, </font><font class="DataType">bool</font><font class="Normal"> </font><font class="Constant">_dynamic</font><font class="Normal">)</font></br></div>
<div id="302" class="line"><font class="Normal">{</font></br></div>
<div id="303" class="line"><font class="Normal"> hlId = </font><font class="Constant">_hlId</font><font class="Normal">;</font></br></div>
<div id="304" class="line"><font class="Normal"> attr = attribute;</font></br></div>
<div id="305" class="line"><font class="Normal"> ctx = lineEndContext;</font></br></div>
<div id="306" class="line"><font class="Normal"> lineBeginContext = </font><font class="Constant">_lineBeginContext</font><font class="Normal">;</font></br></div>
<div id="307" class="line"><font class="Normal"> fallthrough = </font><font class="Constant">_fallthrough</font><font class="Normal">;</font></br></div>
<div id="308" class="line"><font class="Normal"> ftctx = </font><font class="Constant">_fallthroughContext</font><font class="Normal">;</font></br></div>
<div id="309" class="line"><font class="Normal"> dynamic = </font><font class="Constant">_dynamic</font><font class="Normal">;</font></br></div>
<div id="310" class="line"><font class="Normal"> dynamicChild = </font><font class="Keyword">false</font><font class="Normal">;</font></br></div>
<div id="311" class="line"><font class="Normal">}</font></br></div>
<div id="312" class="line"></br></div>
<div id="313" class="line"><font class="Normal">KateHlContext *KateHlContext::clone(</font><font class="Attribute">const</font><font class="Normal"> </font><font class="Extension">QStringList</font><font class="Normal"> *args)</font></br></div>
<div id="314" class="line"><font class="Normal">{</font></br></div>
<div id="315" class="line"><font class="Normal"> KateHlContext *ret = </font><font class="Keyword">new</font><font class="Normal"> KateHlContext(hlId, attr, ctx, lineBeginContext, fallthrough, ftctx, </font><font class="Keyword">false</font><font class="Normal">);</font></br></div>
<div id="316" class="line"></br></div>
<div id="317" class="line"><font class="Normal"> </font><font class="ControlFlow">for</font><font class="Normal"> (</font><font class="Extension">uint</font><font class="Normal"> n=</font><font class="Float">0</font><font class="Normal">; n < items.size(); ++n)</font></br></div>
<div id="318" class="line"><font class="Normal"> {</font></br></div>
<div id="319" class="line"><font class="Normal"> KateHlItem *item = items[n];</font></br></div>
<div id="320" class="line"><font class="Normal"> KateHlItem *i = (item->dynamic ? item->clone(args) : item);</font></br></div>
<div id="321" class="line"><font class="Normal"> ret->items.append(i);</font></br></div>
<div id="322" class="line"><font class="Normal"> }</font></br></div>
<div id="323" class="line"></br></div>
<div id="324" class="line"><font class="Normal"> ret->dynamicChild = </font><font class="Keyword">true</font><font class="Normal">;</font></br></div>
<div id="325" class="line"></br></div>
<div id="326" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> ret;</font></br></div>
<div id="327" class="line"><font class="Normal">}</font></br></div>
<div id="328" class="line"></br></div>
<div id="329" class="line"><font class="Normal">KateHlContext::~KateHlContext()</font></br></div>
<div id="330" class="line"><font class="Normal">{</font></br></div>
<div id="331" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (dynamicChild)</font></br></div>
<div id="332" class="line"><font class="Normal"> {</font></br></div>
<div id="333" class="line"><font class="Normal"> </font><font class="ControlFlow">for</font><font class="Normal"> (</font><font class="Extension">uint</font><font class="Normal"> n=</font><font class="Float">0</font><font class="Normal">; n < items.size(); ++n)</font></br></div>
<div id="334" class="line"><font class="Normal"> {</font></br></div>
<div id="335" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (items[n]->dynamicChild)</font></br></div>
<div id="336" class="line"><font class="Normal"> </font><font class="Keyword">delete</font><font class="Normal"> items[n];</font></br></div>
<div id="337" class="line"><font class="Normal"> }</font></br></div>
<div id="338" class="line"><font class="Normal"> }</font></br></div>
<div id="339" class="line"><font class="Normal">}</font></br></div>
<div id="340" class="line"><font class="RegionMarker">//END</font></br></div>
<div id="341" class="line"></br></div>
<div id="342" class="line"><font class="Normal">{</font></br></div>
<div id="343" class="line"><font class="Normal"> KConfig *config = KateHlManager::self()->getKConfig();</font></br></div>
<div id="344" class="line"><font class="Normal"> config->setGroup(</font><font class="String">"Highlighting "</font><font class="Normal"> + iName + </font><font class="String">" - Schema "</font></br></div>
<div id="345" class="line"><font class="Normal"> + KateFactory::self()->schemaManager()->name(schema));</font></br></div>
<div id="346" class="line"></br></div>
<div id="347" class="line"><font class="Normal"> </font><font class="Extension">QStringList</font><font class="Normal"> settings;</font></br></div>
<div id="348" class="line"></br></div>
<div id="349" class="line"><font class="Normal"> </font><font class="ControlFlow">for</font><font class="Normal"> (KateHlItemData *p = list.first(); p != </font><font class="Float">0</font><font class="Normal">L; p = list.next())</font></br></div>
<div id="350" class="line"><font class="Normal"> {</font></br></div>
<div id="351" class="line"><font class="Normal"> settings.clear();</font></br></div>
<div id="352" class="line"><font class="Normal"> settings<<</font><font class="Extension">QString::number</font><font class="Normal">(p->defStyleNum,</font><font class="Float">10</font><font class="Normal">);</font></br></div>
<div id="353" class="line"><font class="Normal"> settings<<(p->itemSet(KateAttribute::TextColor)?</font><font class="Extension">QString::number</font><font class="Normal">(p->textColor().rgb(),</font><font class="Float">16</font><font class="Normal">):</font><font class="String">""</font><font class="Normal">);</font></br></div>
<div id="354" class="line"><font class="Normal"> settings<<(p->itemSet(KateAttribute::SelectedTextColor)?</font><font class="Extension">QString::number</font><font class="Normal">(p->selectedTextColor().rgb(),</font><font class="Float">16</font><font class="Normal">):</font><font class="String">""</font><font class="Normal">);</font></br></div>
<div id="355" class="line"><font class="Normal"> settings<<(p->itemSet(KateAttribute::Weight)?(p->bold()?</font><font class="String">"1"</font><font class="Normal">:</font><font class="String">"0"</font><font class="Normal">):</font><font class="String">""</font><font class="Normal">);</font></br></div>
<div id="356" class="line"><font class="Normal"> settings<<(p->itemSet(KateAttribute::Italic)?(p->italic()?</font><font class="String">"1"</font><font class="Normal">:</font><font class="String">"0"</font><font class="Normal">):</font><font class="String">""</font><font class="Normal">);</font></br></div>
<div id="357" class="line"><font class="Normal"> settings<<(p->itemSet(KateAttribute::StrikeOut)?(p->strikeOut()?</font><font class="String">"1"</font><font class="Normal">:</font><font class="String">"0"</font><font class="Normal">):</font><font class="String">""</font><font class="Normal">);</font></br></div>
<div id="358" class="line"><font class="Normal"> settings<<(p->itemSet(KateAttribute::Underline)?(p->underline()?</font><font class="String">"1"</font><font class="Normal">:</font><font class="String">"0"</font><font class="Normal">):</font><font class="String">""</font><font class="Normal">);</font></br></div>
<div id="359" class="line"><font class="Normal"> settings<<(p->itemSet(KateAttribute::BGColor)?</font><font class="Extension">QString::number</font><font class="Normal">(p->bgColor().rgb(),</font><font class="Float">16</font><font class="Normal">):</font><font class="String">""</font><font class="Normal">);</font></br></div>
<div id="360" class="line"><font class="Normal"> settings<<(p->itemSet(KateAttribute::SelectedBGColor)?</font><font class="Extension">QString::number</font><font class="Normal">(p->selectedBGColor().rgb(),</font><font class="Float">16</font><font class="Normal">):</font><font class="String">""</font><font class="Normal">);</font></br></div>
<div id="361" class="line"><font class="Normal"> settings<<</font><font class="String">"---"</font><font class="Normal">;</font></br></div>
<div id="362" class="line"><font class="Normal"> config->writeEntry(p->name,settings);</font></br></div>
<div id="363" class="line"><font class="Normal"> }</font></br></div>
<div id="364" class="line"><font class="Normal">}</font></br></div>
<div id="365" class="line"></br></div>
<div id="366" class="line"><font class="Comment">/**</font></br></div>
<div id="367" class="line"><font class="Comment"> * Increase the usage count, and trigger initialization if needed.</font></br></div>
<div id="368" class="line"><font class="Comment"> */</font></br></div>
<div id="369" class="line"><font class="DataType">void</font><font class="Normal"> KateHighlighting::use()</font></br></div>
<div id="370" class="line"><font class="Normal">{</font></br></div>
<div id="371" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (refCount == </font><font class="Float">0</font><font class="Normal">)</font></br></div>
<div id="372" class="line"><font class="Normal"> init();</font></br></div>
<div id="373" class="line"></br></div>
<div id="374" class="line"><font class="Normal"> refCount++;</font></br></div>
<div id="375" class="line"><font class="Normal">}</font></br></div>
<div id="376" class="line"></br></div>
<div id="377" class="line"><font class="Comment">/**</font></br></div>
<div id="378" class="line"><font class="Comment"> * Decrease the usage count, and trigger cleanup if needed.</font></br></div>
<div id="379" class="line"><font class="Comment"> */</font></br></div>
<div id="380" class="line"><font class="DataType">void</font><font class="Normal"> KateHighlighting::release()</font></br></div>
<div id="381" class="line"><font class="Normal">{</font></br></div>
<div id="382" class="line"><font class="Normal"> refCount--;</font></br></div>
<div id="383" class="line"></br></div>
<div id="384" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (refCount == </font><font class="Float">0</font><font class="Normal">)</font></br></div>
<div id="385" class="line"><font class="Normal"> done();</font></br></div>
<div id="386" class="line"><font class="Normal">}</font></br></div>
<div id="387" class="line"></br></div>
<div id="388" class="line"><font class="Comment">/**</font></br></div>
<div id="389" class="line"><font class="Comment"> * Initialize a context for the first time.</font></br></div>
<div id="390" class="line"><font class="Comment"> */</font></br></div>
<div id="391" class="line"></br></div>
<div id="392" class="line"><font class="DataType">void</font><font class="Normal"> KateHighlighting::init()</font></br></div>
<div id="393" class="line"><font class="Normal">{</font></br></div>
<div id="394" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (noHl)</font></br></div>
<div id="395" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal">;</font></br></div>
<div id="396" class="line"></br></div>
<div id="397" class="line"><font class="Normal"> </font><font class="Variable">m_contexts</font><font class="Normal">.clear ();</font></br></div>
<div id="398" class="line"><font class="Normal"> makeContextList();</font></br></div>
<div id="399" class="line"><font class="Normal">}</font></br></div>
<div id="400" class="line"></br></div>
<div id="401" class="line"></br></div>
<div id="402" class="line"><font class="Comment">/**</font></br></div>
<div id="403" class="line"><font class="Comment"> * If the there is no document using the highlighting style free the complete</font></br></div>
<div id="404" class="line"><font class="Comment"> * context structure.</font></br></div>
<div id="405" class="line"><font class="Comment"> */</font></br></div>
<div id="406" class="line"><font class="DataType">void</font><font class="Normal"> KateHighlighting::done()</font></br></div>
<div id="407" class="line"><font class="Normal">{</font></br></div>
<div id="408" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (noHl)</font></br></div>
<div id="409" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal">;</font></br></div>
<div id="410" class="line"></br></div>
<div id="411" class="line"><font class="Normal"> </font><font class="Variable">m_contexts</font><font class="Normal">.clear ();</font></br></div>
<div id="412" class="line"><font class="Normal"> internalIDList.clear();</font></br></div>
<div id="413" class="line"><font class="Normal">}</font></br></div>
<div id="414" class="line"></br></div>
<div id="415" class="line"><font class="Comment">/**</font></br></div>
<div id="416" class="line"><font class="Comment"> * KateHighlighting - createKateHlItemData</font></br></div>
<div id="417" class="line"><font class="Comment"> * This function reads the itemData entries from the config file, which specifies the</font></br></div>
<div id="418" class="line"><font class="Comment"> * default attribute styles for matched items/contexts.</font></br></div>
<div id="419" class="line"><font class="Comment"> *</font></br></div>
<div id="420" class="line"><font class="Comment"> * </font><font class="Constant">@param</font><font class="Comment"> </font><font class="CommentVar">list</font><font class="Comment"> A reference to the internal list containing the parsed default config</font></br></div>
<div id="421" class="line"><font class="Comment"> */</font></br></div>
<div id="422" class="line"><font class="DataType">void</font><font class="Normal"> KateHighlighting::createKateHlItemData(KateHlItemDataList &list)</font></br></div>
<div id="423" class="line"><font class="Normal">{</font></br></div>
<div id="424" class="line"><font class="Normal"> </font><font class="Comment">// If no highlighting is selected we need only one default.</font></br></div>
<div id="425" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (noHl)</font></br></div>
<div id="426" class="line"><font class="Normal"> {</font></br></div>
<div id="427" class="line"><font class="Normal"> list.append(</font><font class="Keyword">new</font><font class="Normal"> KateHlItemData(i18n(</font><font class="String">"Normal Text"</font><font class="Normal">), KateHlItemData::dsNormal));</font></br></div>
<div id="428" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal">;</font></br></div>
<div id="429" class="line"><font class="Normal"> }</font></br></div>
<div id="430" class="line"></br></div>
<div id="431" class="line"><font class="Normal"> </font><font class="Comment">// If the internal list isn't already available read the config file</font></br></div>
<div id="432" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (internalIDList.isEmpty())</font></br></div>
<div id="433" class="line"><font class="Normal"> makeContextList();</font></br></div>
<div id="434" class="line"></br></div>
<div id="435" class="line"><font class="Normal"> list=internalIDList;</font></br></div>
<div id="436" class="line"><font class="Normal">}</font></br></div>
<div id="437" class="line"></br></div>
<div id="438" class="line"></br></div>
<div id="439" class="line"><font class="Normal"> </font><font class="DataType">bool</font><font class="Normal"> dynamic = </font><font class="Keyword">false</font><font class="Normal">;</font></br></div>
<div id="440" class="line"><font class="Normal"> </font><font class="Extension">QString</font><font class="Normal"> tmpDynamic = KateHlManager::self()->syntax->groupData(data, </font><font class="Extension">QString</font><font class="Normal">(</font><font class="String">"dynamic"</font><font class="Normal">) );</font></br></div>
<div id="441" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> ( tmpDynamic.lower() == </font><font class="String">"true"</font><font class="Normal"> || tmpDynamic.toInt() == </font><font class="Float">1</font><font class="Normal"> )</font></br></div>
<div id="442" class="line"><font class="Normal"> dynamic = </font><font class="Keyword">true</font><font class="Normal">;</font></br></div>
<div id="443" class="line"></br></div>
<div id="444" class="line"><font class="Normal"> KateHlContext *ctxNew = </font><font class="Keyword">new</font><font class="Normal"> KateHlContext (</font></br></div>
<div id="445" class="line"><font class="Normal"> ident,</font></br></div>
<div id="446" class="line"><font class="Normal"> attr,</font></br></div>
<div id="447" class="line"><font class="Normal"> context,</font></br></div>
<div id="448" class="line"><font class="Normal"> (KateHlManager::self()->syntax->groupData(data,</font><font class="Extension">QString</font><font class="Normal">(</font><font class="String">"lineBeginContext"</font><font class="Normal">))).isEmpty()?</font><font class="DecVal">-1</font><font class="Normal">:</font></br></div>
<div id="449" class="line"><font class="Normal"> (KateHlManager::self()->syntax->groupData(data,</font><font class="Extension">QString</font><font class="Normal">(</font><font class="String">"lineBeginContext"</font><font class="Normal">))).toInt(),</font></br></div>
<div id="450" class="line"><font class="Normal"> ft, ftc, dynamic);</font></br></div>
<div id="451" class="line"></br></div>
<div id="452" class="line"><font class="Normal"> </font><font class="Variable">m_contexts</font><font class="Normal">.push</font><font class="Constant">_back</font><font class="Normal"> (ctxNew);</font></br></div>
<div id="453" class="line"></br></div>
<div id="454" class="line"><font class="Normal"> kdDebug(</font><font class="Float">13010</font><font class="Normal">) << </font><font class="String">"INDEX: "</font><font class="Normal"> << i << </font><font class="String">" LENGTH "</font><font class="Normal"> << </font><font class="Variable">m_contexts</font><font class="Normal">.size()</font><font class="DecVal">-1</font><font class="Normal"> << endl;</font></br></div>
<div id="455" class="line"></br></div>
<div id="456" class="line"><font class="Normal"> </font><font class="Comment">//Let's create all items for the context</font></br></div>
<div id="457" class="line"><font class="Normal"> </font><font class="ControlFlow">while</font><font class="Normal"> (KateHlManager::self()->syntax->nextItem(data))</font></br></div>
<div id="458" class="line"><font class="Normal"> {</font></br></div>
<div id="459" class="line"><font class="Comment">// kdDebug(13010)<< "In make Contextlist: Item:"<<endl;</font></br></div>
<div id="460" class="line"></br></div>
<div id="461" class="line"><font class="Normal"> </font><font class="Comment">// KateHlIncludeRules : add a pointer to each item in that context</font></br></div>
<div id="462" class="line"><font class="Normal"> </font><font class="Comment">// </font><font class="Alert">TODO</font><font class="Comment"> add a attrib includeAttrib</font></br></div>
</div>
</body>
</html>