<!-- HTML header for doxygen 1.8.13-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.6"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Apache Log4cxx: log4cxx::pattern::PatternParser Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
<!-- Matomo -->
<script>
  var _paq = window._paq = window._paq || [];
  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="https://analytics.apache.org/";
    _paq.push(['setTrackerUrl', u+'matomo.php']);
    _paq.push(['setSiteId', '42']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
  })();
</script>
<!-- End Matomo Code -->
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Apache Log4cxx
   &#160;<span id="projectnumber">Version 1.2.0</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.6 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('classlog4cxx_1_1pattern_1_1PatternParser.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classlog4cxx_1_1pattern_1_1PatternParser-members.html">List of all members</a>  </div>
  <div class="headertitle"><div class="title">log4cxx::pattern::PatternParser Class Reference</div></div>
</div><!--header-->
<div class="contents">

<p>Most of the work of the <code><a class="el" href="classlog4cxx_1_1PatternLayout.html">PatternLayout</a></code> class is delegated to the <a class="el" href="classlog4cxx_1_1pattern_1_1PatternParser.html" title="Most of the work of the PatternLayout class is delegated to the PatternParser class.">PatternParser</a> class.  
 <a href="classlog4cxx_1_1pattern_1_1PatternParser.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="patternparser_8h_source.html">patternparser.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a1791736e6e97daf174d5523acde97475"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1pattern_1_1PatternParser.html#a1791736e6e97daf174d5523acde97475">parse</a> (const <a class="el" href="namespacelog4cxx.html#aa2308ed05fef2a1366066cb38b177e94">LogString</a> &amp;pattern, std::vector&lt; PatternConverterPtr &gt; &amp;patternConverters, std::vector&lt; <a class="el" href="namespacelog4cxx_1_1pattern.html#a649a4a8c3440bc72f57c2f8061abac8c">FormattingInfoPtr</a> &gt; &amp;formattingInfos, const <a class="el" href="namespacelog4cxx_1_1pattern.html#a46412c36b812db386d71ed0321e7ab05">PatternMap</a> &amp;rules)</td></tr>
<tr class="memdesc:a1791736e6e97daf174d5523acde97475"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse a format specifier.  <br /></td></tr>
<tr class="separator:a1791736e6e97daf174d5523acde97475"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Most of the work of the <code><a class="el" href="classlog4cxx_1_1PatternLayout.html">PatternLayout</a></code> class is delegated to the <a class="el" href="classlog4cxx_1_1pattern_1_1PatternParser.html" title="Most of the work of the PatternLayout class is delegated to the PatternParser class.">PatternParser</a> class. </p>
<p>It is this class that parses conversion patterns and creates a chained list of <code><a class="el" href="classlog4cxx_1_1pattern_1_1PatternConverter.html">PatternConverters</a></code>. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a1791736e6e97daf174d5523acde97475" name="a1791736e6e97daf174d5523acde97475"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1791736e6e97daf174d5523acde97475">&#9670;&#160;</a></span>parse()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void log4cxx::pattern::PatternParser::parse </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacelog4cxx.html#aa2308ed05fef2a1366066cb38b177e94">LogString</a> &amp;&#160;</td>
          <td class="paramname"><em>pattern</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; PatternConverterPtr &gt; &amp;&#160;</td>
          <td class="paramname"><em>patternConverters</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; <a class="el" href="namespacelog4cxx_1_1pattern.html#a649a4a8c3440bc72f57c2f8061abac8c">FormattingInfoPtr</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>formattingInfos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespacelog4cxx_1_1pattern.html#a46412c36b812db386d71ed0321e7ab05">PatternMap</a> &amp;&#160;</td>
          <td class="paramname"><em>rules</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Parse a format specifier. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pattern</td><td>pattern to parse. </td></tr>
    <tr><td class="paramname">patternConverters</td><td>list to receive pattern converters. </td></tr>
    <tr><td class="paramname">formattingInfos</td><td>list to receive field specifiers corresponding to pattern converters. </td></tr>
    <tr><td class="paramname">rules</td><td>map of stock pattern converters keyed by format specifier. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="patternparser_8h_source.html">patternparser.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.13-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespacelog4cxx.html">log4cxx</a></li><li class="navelem"><a class="el" href="namespacelog4cxx_1_1pattern.html">pattern</a></li><li class="navelem"><a class="el" href="classlog4cxx_1_1pattern_1_1PatternParser.html">PatternParser</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="https://www.doxygen.nl/images/doxygen.png" alt="Doxygen"/></a> 1.9.6 on Thu Jan 25 2024 </li>
    <li class="center">
Copyright &copy; 2003-2023 <a href="https://www.apache.org/">Apache Software Foundation</a>. All Rights Reserved.  <a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a><br/>
Apache Logging, Apache Log4j, Log4j, Apache, the Apache feather logo, and the Apache Logging project logo are trademarks of The Apache Software Foundation.<br/>
    </li>
  </ul>
</div>
</body>
</html>
