421 lines
27 KiB
HTML
421 lines
27 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
|
<meta name="generator" content="Doxygen 1.13.2"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>musrfit: /workspace/LMU/musrfit/src/classes/PUserFcnBase.cpp File 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>
|
|
<script type="text/javascript" src="clipboard.js"></script>
|
|
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="navtreedata.js"></script>
|
|
<script type="text/javascript" src="navtree.js"></script>
|
|
<script type="text/javascript" src="resize.js"></script>
|
|
<script type="text/javascript" src="cookie.js"></script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
</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 id="projectrow">
|
|
<td id="projectalign">
|
|
<div id="projectname">musrfit<span id="projectnumber"> 1.9.9</span>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.13.2 -->
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(function() { codefold.init(0); });
|
|
/* @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&dn=expat.txt MIT */
|
|
$(function() {
|
|
initMenu('',false,false,'search.php','Search',true);
|
|
});
|
|
/* @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&dn=expat.txt MIT */
|
|
$(function(){initNavTree('PUserFcnBase_8cpp.html',''); initResizable(true); });
|
|
/* @license-end */
|
|
</script>
|
|
<div id="doc-content">
|
|
<div class="header">
|
|
<div class="summary">
|
|
<a href="#func-members">Functions</a> |
|
|
<a href="#var-members">Variables</a> </div>
|
|
<div class="headertitle"><div class="title">PUserFcnBase.cpp File Reference</div></div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<div class="textblock"><code>#include <vector></code><br />
|
|
<code>#include <fstream></code><br />
|
|
<code>#include "<a class="el" href="PUserFcnBase_8h_source.html">PUserFcnBase.h</a>"</code><br />
|
|
</div><div class="textblock"><div class="dynheader">
|
|
Include dependency graph for PUserFcnBase.cpp:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="PUserFcnBase_8cpp__incl.png" border="0" usemap="#a_2workspace_2LMU_2musrfit_2src_2classes_2PUserFcnBase_8cpp" alt=""/></div>
|
|
<map name="a_2workspace_2LMU_2musrfit_2src_2classes_2PUserFcnBase_8cpp" id="a_2workspace_2LMU_2musrfit_2src_2classes_2PUserFcnBase_8cpp">
|
|
<area shape="rect" title=" " alt="" coords="5,5,211,50"/>
|
|
<area shape="rect" title=" " alt="" coords="55,174,113,201"/>
|
|
<area shape="poly" title=" " alt="" coords="91,52,76,74,64,99,62,114,63,129,72,159,67,161,58,131,56,114,59,97,71,71,87,49"/>
|
|
<area shape="rect" title=" " alt="" coords="74,98,142,126"/>
|
|
<area shape="poly" title=" " alt="" coords="111,50,111,82,105,82,105,50"/>
|
|
<area shape="rect" href="PUserFcnBase_8h.html" title=" " alt="" coords="167,98,284,126"/>
|
|
<area shape="poly" title=" " alt="" coords="140,48,196,87,193,91,137,53"/>
|
|
<area shape="poly" title=" " alt="" coords="201,129,124,169,121,164,199,124"/>
|
|
<area shape="rect" title=" " alt="" coords="162,174,241,201"/>
|
|
<area shape="poly" title=" " alt="" coords="224,127,213,160,208,158,219,125"/>
|
|
<area shape="rect" title=" " alt="" coords="265,174,367,201"/>
|
|
<area shape="poly" title=" " alt="" coords="243,124,290,162,286,166,240,128"/>
|
|
</map>
|
|
</div>
|
|
</div>
|
|
<p><a href="PUserFcnBase_8cpp_source.html">Go to the source code of this file.</a></p>
|
|
<table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
|
|
Functions</h2></td></tr>
|
|
<tr class="memitem:ab6a607b3cc5b374032ddb5d287cbb4fd" id="r_ab6a607b3cc5b374032ddb5d287cbb4fd"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="#ab6a607b3cc5b374032ddb5d287cbb4fd">ClassImp</a> (<a class="el" href="classPUserFcnBase.html">PUserFcnBase</a>) Int_t <a class="el" href="PStartupHandler_8h.html#a2f473e587e18e6a64b260870ec870a5e">parseXmlFile</a>(TSAXParser *saxParser</td></tr>
|
|
<tr class="memdesc:ab6a607b3cc5b374032ddb5d287cbb4fd"><td class="mdescLeft"> </td><td class="mdescRight">Parses an XML file using buffer-based parsing for better compatibility. <br /></td></tr>
|
|
<tr class="separator:ab6a607b3cc5b374032ddb5d287cbb4fd"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ab05d52f7c802424a27b649ac72184315" id="r_ab05d52f7c802424a27b649ac72184315"><td class="memItemLeft" align="right" valign="top"><a class="el" href="PStartupHandler_8cpp.html#a786787fea8b331086b8257c270bfc626">xmlFile</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#ab05d52f7c802424a27b649ac72184315">open</a> (<a class="el" href="PStartupHandler_8cpp.html#a14f38a2b207431cd74f276626988b0ea">startup_path_name</a>, std::ios::in|std::ios::ate)</td></tr>
|
|
<tr class="separator:ab05d52f7c802424a27b649ac72184315"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a81551ff222b7f215c821232131fe1626" id="r_a81551ff222b7f215c821232131fe1626"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a81551ff222b7f215c821232131fe1626">if</a> (xmlFile.is_open())</td></tr>
|
|
<tr class="separator:a81551ff222b7f215c821232131fe1626"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a80c1fb2fecce8b06c5492039a96b76d6" id="r_a80c1fb2fecce8b06c5492039a96b76d6"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a80c1fb2fecce8b06c5492039a96b76d6">if</a> (!<a class="el" href="PStartupHandler_8cpp.html#a5728730ce9586f497a6eac2ecf884f84">xmlBuffer</a>)</td></tr>
|
|
<tr class="separator:a80c1fb2fecce8b06c5492039a96b76d6"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
|
|
Variables</h2></td></tr>
|
|
<tr class="memitem:a14f38a2b207431cd74f276626988b0ea" id="r_a14f38a2b207431cd74f276626988b0ea"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="#a14f38a2b207431cd74f276626988b0ea">startup_path_name</a></td></tr>
|
|
<tr class="separator:a14f38a2b207431cd74f276626988b0ea"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a786787fea8b331086b8257c270bfc626" id="r_a786787fea8b331086b8257c270bfc626"><td class="memItemLeft" align="right" valign="top">std::fstream </td><td class="memItemRight" valign="bottom"><a class="el" href="#a786787fea8b331086b8257c270bfc626">xmlFile</a></td></tr>
|
|
<tr class="separator:a786787fea8b331086b8257c270bfc626"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a874a7922aea424ce6b67051750ec1c91" id="r_a874a7922aea424ce6b67051750ec1c91"><td class="memItemLeft" align="right" valign="top">UInt_t </td><td class="memItemRight" valign="bottom"><a class="el" href="#a874a7922aea424ce6b67051750ec1c91">xmlSize</a> = 0</td></tr>
|
|
<tr class="separator:a874a7922aea424ce6b67051750ec1c91"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a5728730ce9586f497a6eac2ecf884f84" id="r_a5728730ce9586f497a6eac2ecf884f84"><td class="memItemLeft" align="right" valign="top">Char_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="#a5728730ce9586f497a6eac2ecf884f84">xmlBuffer</a> = nullptr</td></tr>
|
|
<tr class="separator:a5728730ce9586f497a6eac2ecf884f84"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a0544c3fe466e421738dae463968b70ba" id="r_a0544c3fe466e421738dae463968b70ba"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a0544c3fe466e421738dae463968b70ba">else</a></td></tr>
|
|
<tr class="separator:a0544c3fe466e421738dae463968b70ba"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a9611b3a00430a86619b5923de30f9fdb" id="r_a9611b3a00430a86619b5923de30f9fdb"><td class="memItemLeft" align="right" valign="top">return </td><td class="memItemRight" valign="bottom"><a class="el" href="#a9611b3a00430a86619b5923de30f9fdb">status</a></td></tr>
|
|
<tr class="separator:a9611b3a00430a86619b5923de30f9fdb"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a372831c5a5278d5add4b50e116dc2ce9" id="r_a372831c5a5278d5add4b50e116dc2ce9"><td class="memItemLeft" align="right" valign="top">std::vector< void * > </td><td class="memItemRight" valign="bottom"><a class="el" href="#a372831c5a5278d5add4b50e116dc2ce9">gGlobalUserFcn</a></td></tr>
|
|
<tr class="memdesc:a372831c5a5278d5add4b50e116dc2ce9"><td class="mdescLeft"> </td><td class="mdescRight">Global storage for user function objects requiring persistent state. <br /></td></tr>
|
|
<tr class="separator:a372831c5a5278d5add4b50e116dc2ce9"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table>
|
|
<h2 class="groupheader">Function Documentation</h2>
|
|
<a id="ab6a607b3cc5b374032ddb5d287cbb4fd" name="ab6a607b3cc5b374032ddb5d287cbb4fd"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ab6a607b3cc5b374032ddb5d287cbb4fd">◆ </a></span>ClassImp()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">ClassImp </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="classPUserFcnBase.html">PUserFcnBase</a></td> <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Parses an XML file using buffer-based parsing for better compatibility. </p>
|
|
<p>This function provides a replacement for TSAXParser::ParseFile() that works reliably across different environments. Some systems have issues with direct file parsing, but buffer-based parsing (ParseBuffer) works consistently.</p>
|
|
<h1><a class="anchor" id="parsexml_usage"></a>
|
|
Usage in User Functions</h1>
|
|
<p>User functions that need to read XML configuration files should use this function instead of TSAXParser::ParseFile():</p>
|
|
<div class="fragment"><div class="line"><span class="keyword">class </span>TMyConfigurableFcn : <span class="keyword">public</span> <a class="code hl_class" href="classPUserFcnBase.html">PUserFcnBase</a> {</div>
|
|
<div class="line"> <span class="keyword">private</span>:</div>
|
|
<div class="line"> MyConfigHandler fHandler; <span class="comment">// Derived from TSAXParser callbacks</span></div>
|
|
<div class="line"> </div>
|
|
<div class="line"> <span class="keyword">public</span>:</div>
|
|
<div class="line"> Bool_t LoadConfig(<span class="keyword">const</span> <span class="keywordtype">char</span>* configFile) {</div>
|
|
<div class="line"> TSAXParser parser;</div>
|
|
<div class="line"> parser.ConnectToHandler(<span class="stringliteral">"MyConfigHandler"</span>, &fHandler);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"> Int_t <a class="code hl_variable" href="#a9611b3a00430a86619b5923de30f9fdb">status</a> = <a class="code hl_function" href="PUserFcnBase_8h.html#ad28f17f204891201dafd4815d71e362a">parseXmlFile</a>(&parser, configFile);</div>
|
|
<div class="line"> <span class="keywordflow">if</span> (<a class="code hl_variable" href="#a9611b3a00430a86619b5923de30f9fdb">status</a> != 0) {</div>
|
|
<div class="line"> std::cerr << <span class="stringliteral">"Failed to parse config: "</span> << configFile << std::endl;</div>
|
|
<div class="line"> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
<div class="line"> }</div>
|
|
<div class="line">};</div>
|
|
<div class="ttc" id="aPUserFcnBase_8cpp_html_a9611b3a00430a86619b5923de30f9fdb"><div class="ttname"><a href="#a9611b3a00430a86619b5923de30f9fdb">status</a></div><div class="ttdeci">return status</div><div class="ttdef"><b>Definition</b> <a href="PUserFcnBase_8cpp_source.html#l00113">PUserFcnBase.cpp:113</a></div></div>
|
|
<div class="ttc" id="aPUserFcnBase_8h_html_ad28f17f204891201dafd4815d71e362a"><div class="ttname"><a href="PUserFcnBase_8h.html#ad28f17f204891201dafd4815d71e362a">parseXmlFile</a></div><div class="ttdeci">Int_t parseXmlFile(TSAXParser *, const Char_t *)</div></div>
|
|
<div class="ttc" id="aclassPUserFcnBase_html"><div class="ttname"><a href="classPUserFcnBase.html">PUserFcnBase</a></div><div class="ttdoc">Abstract base class for user-defined theory functions in musrfit.</div><div class="ttdef"><b>Definition</b> <a href="PUserFcnBase_8h_source.html#l00169">PUserFcnBase.h:170</a></div></div>
|
|
</div><!-- fragment --><h1><a class="anchor" id="parsexml_algorithm"></a>
|
|
Algorithm</h1>
|
|
<ol type="1">
|
|
<li>Opens the file in binary mode, seeking to end</li>
|
|
<li>Determines file size from stream position</li>
|
|
<li>Allocates buffer and reads entire file</li>
|
|
<li>Passes buffer to TSAXParser::ParseBuffer()</li>
|
|
<li>Cleans up buffer memory</li>
|
|
</ol>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">saxParser</td><td>Pointer to a configured TSAXParser object. The parser should have its handler connected before calling this function. </td></tr>
|
|
<tr><td class="paramname">startup_path_name</td><td>Full filesystem path to the XML file to parse.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>Status code:<ul>
|
|
<li>0: Success - file parsed without errors</li>
|
|
<li>1: File error - could not open or read the file</li>
|
|
<li>>1: XML parse error from TSAXParser::ParseBuffer()</li>
|
|
</ul>
|
|
</dd></dl>
|
|
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classPStartupHandler.html" title="Handles the musrfit XML startup configuration file (musrfit_startup.xml).">PStartupHandler</a> for an example of XML parsing in musrfit </dd>
|
|
<dd>
|
|
TSAXParser for ROOT's SAX parser documentation </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a80c1fb2fecce8b06c5492039a96b76d6" name="a80c1fb2fecce8b06c5492039a96b76d6"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a80c1fb2fecce8b06c5492039a96b76d6">◆ </a></span>if() <span class="overload">[1/2]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">if </td>
|
|
<td>(</td>
|
|
<td class="paramtype">!</td> <td class="paramname"><span class="paramname"><em>xmlBuffer</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PUserFcnBase_8cpp_source.html#l00105">105</a> of file <a class="el" href="PUserFcnBase_8cpp_source.html">PUserFcnBase.cpp</a>.</p>
|
|
|
|
<p class="reference">References <a class="el" href="PStartupHandler_8cpp_source.html#l00091">if()</a>, <a class="el" href="PStartupHandler_8cpp_source.html#l00106">status</a>, and <a class="el" href="PStartupHandler_8cpp_source.html#l00088">xmlBuffer</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a81551ff222b7f215c821232131fe1626" name="a81551ff222b7f215c821232131fe1626"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a81551ff222b7f215c821232131fe1626">◆ </a></span>if() <span class="overload">[2/2]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">if </td>
|
|
<td>(</td>
|
|
<td class="paramtype">xmlFile.</td> <td class="paramname"><span class="paramname"><em>is_open</em></span>()</td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PUserFcnBase_8cpp_source.html#l00098">98</a> of file <a class="el" href="PUserFcnBase_8cpp_source.html">PUserFcnBase.cpp</a>.</p>
|
|
|
|
<p class="reference">References <a class="el" href="PStartupHandler_8cpp_source.html#l00086">xmlFile</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ab05d52f7c802424a27b649ac72184315" name="ab05d52f7c802424a27b649ac72184315"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ab05d52f7c802424a27b649ac72184315">◆ </a></span>open()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="PStartupHandler_8cpp.html#a786787fea8b331086b8257c270bfc626">xmlFile</a> open </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="PStartupHandler_8cpp.html#a14f38a2b207431cd74f276626988b0ea">startup_path_name</a></td> <td class="paramname"><span class="paramname"><em></em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">std::ios::in|std::ios::ate</td> <td class="paramname"><span class="paramname"><em></em></span> )</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p class="reference">References <a class="el" href="PStartupHandler_8cpp_source.html#l00084">startup_path_name</a>, and <a class="el" href="PStartupHandler_8cpp_source.html#l00086">xmlFile</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Variable Documentation</h2>
|
|
<a id="a0544c3fe466e421738dae463968b70ba" name="a0544c3fe466e421738dae463968b70ba"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a0544c3fe466e421738dae463968b70ba">◆ </a></span>else</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">else</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Initial value:</b><div class="fragment"><div class="line">{</div>
|
|
<div class="line"> <a class="code hl_variable" href="PStartupHandler_8cpp.html#a9611b3a00430a86619b5923de30f9fdb">status</a> = saxParser->ParseBuffer(<a class="code hl_variable" href="PStartupHandler_8cpp.html#a5728730ce9586f497a6eac2ecf884f84">xmlBuffer</a>, <a class="code hl_variable" href="PStartupHandler_8cpp.html#afc2e8d0cc79c8d3f5b992423fb1729f0">xmlSize</a>)</div>
|
|
<div class="ttc" id="aPStartupHandler_8cpp_html_a5728730ce9586f497a6eac2ecf884f84"><div class="ttname"><a href="PStartupHandler_8cpp.html#a5728730ce9586f497a6eac2ecf884f84">xmlBuffer</a></div><div class="ttdeci">char * xmlBuffer</div><div class="ttdef"><b>Definition</b> <a href="PStartupHandler_8cpp_source.html#l00088">PStartupHandler.cpp:88</a></div></div>
|
|
<div class="ttc" id="aPStartupHandler_8cpp_html_a9611b3a00430a86619b5923de30f9fdb"><div class="ttname"><a href="PStartupHandler_8cpp.html#a9611b3a00430a86619b5923de30f9fdb">status</a></div><div class="ttdeci">return status</div><div class="ttdef"><b>Definition</b> <a href="PStartupHandler_8cpp_source.html#l00106">PStartupHandler.cpp:106</a></div></div>
|
|
<div class="ttc" id="aPStartupHandler_8cpp_html_afc2e8d0cc79c8d3f5b992423fb1729f0"><div class="ttname"><a href="PStartupHandler_8cpp.html#afc2e8d0cc79c8d3f5b992423fb1729f0">xmlSize</a></div><div class="ttdeci">unsigned int xmlSize</div><div class="ttdef"><b>Definition</b> <a href="PStartupHandler_8cpp_source.html#l00087">PStartupHandler.cpp:87</a></div></div>
|
|
</div><!-- fragment -->
|
|
<p class="definition">Definition at line <a class="el" href="PUserFcnBase_8cpp_source.html#l00107">107</a> of file <a class="el" href="PUserFcnBase_8cpp_source.html">PUserFcnBase.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a372831c5a5278d5add4b50e116dc2ce9" name="a372831c5a5278d5add4b50e116dc2ce9"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a372831c5a5278d5add4b50e116dc2ce9">◆ </a></span>gGlobalUserFcn</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">std::vector<void *> gGlobalUserFcn</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Global storage for user function objects requiring persistent state. </p>
|
|
<p>This vector provides a global container for user functions that need to maintain state across multiple evaluations or share data between runs. It is primarily used by user functions implementing the "global part" interface (NeedGlobalPart(), SetGlobalPart(), GlobalPartIsValid()).</p>
|
|
<h1><a class="anchor" id="gGlobalUserFcn_usage"></a>
|
|
Usage Pattern</h1>
|
|
<p>User functions with expensive initialization (lookup tables, precomputed grids, loaded data files) store their global objects here:</p>
|
|
<div class="fragment"><div class="line"><span class="comment">// In user function's SetGlobalPart implementation:</span></div>
|
|
<div class="line"><span class="keywordtype">void</span> TMyFcn::SetGlobalPart(std::vector<void*> &globalPart, UInt_t idx) {</div>
|
|
<div class="line"> <span class="keywordflow">if</span> (idx < globalPart.size() && globalPart[idx] != <span class="keyword">nullptr</span>) {</div>
|
|
<div class="line"> fGlobal = <span class="keyword">static_cast<</span>MyGlobalData*<span class="keyword">></span>(globalPart[idx]);</div>
|
|
<div class="line"> } <span class="keywordflow">else</span> {</div>
|
|
<div class="line"> fGlobal = <span class="keyword">new</span> MyGlobalData();</div>
|
|
<div class="line"> fGlobal->Initialize(); <span class="comment">// Expensive one-time computation</span></div>
|
|
<div class="line"> <span class="keywordflow">if</span> (idx < globalPart.size())</div>
|
|
<div class="line"> globalPart[idx] = fGlobal;</div>
|
|
<div class="line"> <span class="keywordflow">else</span></div>
|
|
<div class="line"> globalPart.push_back(fGlobal);</div>
|
|
<div class="line"> }</div>
|
|
<div class="line">}</div>
|
|
</div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>The vector stores void pointers, so user functions must cast appropriately and manage memory for their specific data types.</dd></dl>
|
|
<dl class="section warning"><dt>Warning</dt><dd>User functions are responsible for proper cleanup of their global objects to avoid memory leaks.</dd></dl>
|
|
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classPUserFcnBase.html#abae008b6b6799ded0825ac6befb2283b">PUserFcnBase::SetGlobalPart()</a> for the interface to populate this vector </dd>
|
|
<dd>
|
|
<a class="el" href="classPTheory.html" title="Theory function evaluator and expression tree manager.">PTheory</a> for how global parts are initialized during theory setup </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PUserFcnBase_8cpp_source.html#l00155">155</a> of file <a class="el" href="PUserFcnBase_8cpp_source.html">PUserFcnBase.cpp</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="PTheory_8cpp_source.html#l00125">PTheory::PTheory()</a>, and <a class="el" href="PTheory_8cpp_source.html#l00375">PTheory::~PTheory()</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a14f38a2b207431cd74f276626988b0ea" name="a14f38a2b207431cd74f276626988b0ea"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a14f38a2b207431cd74f276626988b0ea">◆ </a></span>startup_path_name</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">const char* startup_path_name</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Initial value:</b><div class="fragment"><div class="line">{</div>
|
|
<div class="line"> Int_t <a class="code hl_variable" href="PStartupHandler_8cpp.html#a9611b3a00430a86619b5923de30f9fdb">status</a></div>
|
|
</div><!-- fragment -->
|
|
<p class="definition">Definition at line <a class="el" href="PUserFcnBase_8cpp_source.html#l00090">90</a> of file <a class="el" href="PUserFcnBase_8cpp_source.html">PUserFcnBase.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a9611b3a00430a86619b5923de30f9fdb" name="a9611b3a00430a86619b5923de30f9fdb"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a9611b3a00430a86619b5923de30f9fdb">◆ </a></span>status</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">return status</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PUserFcnBase_8cpp_source.html#l00113">113</a> of file <a class="el" href="PUserFcnBase_8cpp_source.html">PUserFcnBase.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a5728730ce9586f497a6eac2ecf884f84" name="a5728730ce9586f497a6eac2ecf884f84"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a5728730ce9586f497a6eac2ecf884f84">◆ </a></span>xmlBuffer</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">xmlBuffer = nullptr</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PUserFcnBase_8cpp_source.html#l00095">95</a> of file <a class="el" href="PUserFcnBase_8cpp_source.html">PUserFcnBase.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a786787fea8b331086b8257c270bfc626" name="a786787fea8b331086b8257c270bfc626"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a786787fea8b331086b8257c270bfc626">◆ </a></span>xmlFile</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">std::fstream xmlFile</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PUserFcnBase_8cpp_source.html#l00093">93</a> of file <a class="el" href="PUserFcnBase_8cpp_source.html">PUserFcnBase.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a874a7922aea424ce6b67051750ec1c91" name="a874a7922aea424ce6b67051750ec1c91"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a874a7922aea424ce6b67051750ec1c91">◆ </a></span>xmlSize</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">UInt_t xmlSize = 0</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PUserFcnBase_8cpp_source.html#l00094">94</a> of file <a class="el" href="PUserFcnBase_8cpp_source.html">PUserFcnBase.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
</div><!-- contents -->
|
|
</div><!-- doc-content -->
|
|
<!-- start footer part -->
|
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_018e9aafb459e6e1a4953404cb0c0b1d.html">classes</a></li><li class="navelem"><a class="el" href="PUserFcnBase_8cpp.html">PUserFcnBase.cpp</a></li>
|
|
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|