blob: f407b88f721a18a8320546eaf2ffbc1c19254dd9 [file] [log] [blame]
<!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">
<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.8.18"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Crashpad: crashpad::InitializationState 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="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="crashpad_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 style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Crashpad
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.18 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- 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">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacecrashpad.html">crashpad</a></li><li class="navelem"><a class="el" href="classcrashpad_1_1InitializationState.html">InitializationState</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="classcrashpad_1_1InitializationState-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">crashpad::InitializationState Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Tracks whether data are initialized.
<a href="classcrashpad_1_1InitializationState.html#details">More...</a></p>
<p><code>#include &quot;util/misc/initialization_state.h&quot;</code></p>
<div class="dynheader">
Inheritance diagram for crashpad::InitializationState:</div>
<div class="dyncontent">
<div class="center">
<img src="classcrashpad_1_1InitializationState.png" usemap="#crashpad::InitializationState_map" alt=""/>
<map id="crashpad::InitializationState_map" name="crashpad::InitializationState_map">
<area href="classcrashpad_1_1InitializationStateDcheck.html" title="Tracks whether data are initialized, triggering a DCHECK assertion on an invalid data access." alt="crashpad::InitializationStateDcheck" shape="rect" coords="0,56,207,80"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a044ea6d40e23683d6d1bb5ce30dafd88"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1InitializationState.html#a044ea6d40e23683d6d1bb5ce30dafd88">State</a> : uint8_t </td></tr>
<tr class="memdesc:a044ea6d40e23683d6d1bb5ce30dafd88"><td class="mdescLeft">&#160;</td><td class="mdescRight">The object’s state. <a href="classcrashpad_1_1InitializationState.html#a044ea6d40e23683d6d1bb5ce30dafd88">More...</a><br /></td></tr>
<tr class="separator:a044ea6d40e23683d6d1bb5ce30dafd88"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ab4861661dbc0fa608adcde4fdd4c49dd"><td class="memItemLeft" align="right" valign="top"><a id="ab4861661dbc0fa608adcde4fdd4c49dd"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1InitializationState.html#ab4861661dbc0fa608adcde4fdd4c49dd">is_uninitialized</a> () const</td></tr>
<tr class="memdesc:ab4861661dbc0fa608adcde4fdd4c49dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns <code>true</code> if the object’s state is <a class="el" href="classcrashpad_1_1InitializationState.html#a044ea6d40e23683d6d1bb5ce30dafd88ab86672ada53041ffcecfb379473bf353" title="The object has not yet been initialized.">kStateUninitialized</a> and it is safe to begin initializing it. <br /></td></tr>
<tr class="separator:ab4861661dbc0fa608adcde4fdd4c49dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb1ebe6fb06d227da363dad2174a8316"><td class="memItemLeft" align="right" valign="top"><a id="adb1ebe6fb06d227da363dad2174a8316"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1InitializationState.html#adb1ebe6fb06d227da363dad2174a8316">set_invalid</a> ()</td></tr>
<tr class="memdesc:adb1ebe6fb06d227da363dad2174a8316"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the object’s state to <a class="el" href="classcrashpad_1_1InitializationState.html#a044ea6d40e23683d6d1bb5ce30dafd88afc9011e885f6b0a93151818010eefdfc" title="The object is being initialized.">kStateInvalid</a>, marking initialization as being in process. <br /></td></tr>
<tr class="separator:adb1ebe6fb06d227da363dad2174a8316"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3c6f5b858094249317f087317ceb5a0"><td class="memItemLeft" align="right" valign="top"><a id="ae3c6f5b858094249317f087317ceb5a0"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1InitializationState.html#ae3c6f5b858094249317f087317ceb5a0">set_valid</a> ()</td></tr>
<tr class="memdesc:ae3c6f5b858094249317f087317ceb5a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the object’s state to <a class="el" href="classcrashpad_1_1InitializationState.html#a044ea6d40e23683d6d1bb5ce30dafd88af8963ed6297bea7168911fe4ed87e163" title="The object has been initialized.">kStateValid</a>, marking it initialized. <br /></td></tr>
<tr class="separator:ae3c6f5b858094249317f087317ceb5a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad069757fa4ef312ac2307111bdf3cccb"><td class="memItemLeft" align="right" valign="top"><a id="ad069757fa4ef312ac2307111bdf3cccb"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1InitializationState.html#ad069757fa4ef312ac2307111bdf3cccb">is_valid</a> () const</td></tr>
<tr class="memdesc:ad069757fa4ef312ac2307111bdf3cccb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns <code>true</code> if the the object’s state is <a class="el" href="classcrashpad_1_1InitializationState.html#a044ea6d40e23683d6d1bb5ce30dafd88af8963ed6297bea7168911fe4ed87e163" title="The object has been initialized.">kStateValid</a> and it has been fully initialized and may be used. <br /></td></tr>
<tr class="separator:ad069757fa4ef312ac2307111bdf3cccb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a60718e8a3f45af645752090dcc1e5508"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classcrashpad_1_1InitializationState.html#a044ea6d40e23683d6d1bb5ce30dafd88">State</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1InitializationState.html#a60718e8a3f45af645752090dcc1e5508">state</a> () const</td></tr>
<tr class="memdesc:a60718e8a3f45af645752090dcc1e5508"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the object’s state. <a href="classcrashpad_1_1InitializationState.html#a60718e8a3f45af645752090dcc1e5508">More...</a><br /></td></tr>
<tr class="separator:a60718e8a3f45af645752090dcc1e5508"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a66966875ef1a543c9b25f9cad6ae44ea"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1InitializationState.html#a66966875ef1a543c9b25f9cad6ae44ea">set_state</a> (<a class="el" href="classcrashpad_1_1InitializationState.html#a044ea6d40e23683d6d1bb5ce30dafd88">State</a> <a class="el" href="classcrashpad_1_1InitializationState.html#a60718e8a3f45af645752090dcc1e5508">state</a>)</td></tr>
<tr class="memdesc:a66966875ef1a543c9b25f9cad6ae44ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the object’s state. <a href="classcrashpad_1_1InitializationState.html#a66966875ef1a543c9b25f9cad6ae44ea">More...</a><br /></td></tr>
<tr class="separator:a66966875ef1a543c9b25f9cad6ae44ea"><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>Tracks whether data are initialized. </p>
<p>Objects of this type track whether the data they’re guarding are initialized. The three possible states are uninitialized (the initial state), initializing, and valid. As the guarded data are initialized, an <a class="el" href="classcrashpad_1_1InitializationState.html" title="Tracks whether data are initialized.">InitializationState</a> object will normally transition through these three states. A fourth state corresponds to the destruction of objects of this type, making it less likely that a use-after-free of an <a class="el" href="classcrashpad_1_1InitializationState.html" title="Tracks whether data are initialized.">InitializationState</a> object will appear in the valid state.</p>
<p>If the only purpose for tracking the initialization state of guarded data is to DCHECK when the object is in an unexpected state, use <a class="el" href="classcrashpad_1_1InitializationStateDcheck.html" title="Tracks whether data are initialized, triggering a DCHECK assertion on an invalid data access.">InitializationStateDcheck</a> instead. </p>
</div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a id="a044ea6d40e23683d6d1bb5ce30dafd88"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a044ea6d40e23683d6d1bb5ce30dafd88">&#9670;&nbsp;</a></span>State</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="classcrashpad_1_1InitializationState.html#a044ea6d40e23683d6d1bb5ce30dafd88">crashpad::InitializationState::State</a> : uint8_t</td>
</tr>
</table>
</div><div class="memdoc">
<p>The object’s state. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a044ea6d40e23683d6d1bb5ce30dafd88ab86672ada53041ffcecfb379473bf353"></a>kStateUninitialized&#160;</td><td class="fielddoc"><p>The object has not yet been initialized. </p>
</td></tr>
<tr><td class="fieldname"><a id="a044ea6d40e23683d6d1bb5ce30dafd88afc9011e885f6b0a93151818010eefdfc"></a>kStateInvalid&#160;</td><td class="fielddoc"><p>The object is being initialized. </p>
<pre class="fragment">This state protects against attempted reinitializaton of
partially-initialized objects whose initial initialization attempt
failed. This state is to be used while objects are initializing, but are
not yet fully initialized.
</pre> </td></tr>
<tr><td class="fieldname"><a id="a044ea6d40e23683d6d1bb5ce30dafd88af8963ed6297bea7168911fe4ed87e163"></a>kStateValid&#160;</td><td class="fielddoc"><p>The object has been initialized. </p>
</td></tr>
<tr><td class="fieldname"><a id="a044ea6d40e23683d6d1bb5ce30dafd88a154e684eaf09255b9667c2f5a16862f1"></a>kStateDestroyed&#160;</td><td class="fielddoc"><p>The object has been destroyed. </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a66966875ef1a543c9b25f9cad6ae44ea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a66966875ef1a543c9b25f9cad6ae44ea">&#9670;&nbsp;</a></span>set_state()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void crashpad::InitializationState::set_state </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classcrashpad_1_1InitializationState.html#a044ea6d40e23683d6d1bb5ce30dafd88">State</a>&#160;</td>
<td class="paramname"><em>state</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the object’s state. </p>
<p>Consumers of this class should use a set_state_*() method instead. </p>
</div>
</div>
<a id="a60718e8a3f45af645752090dcc1e5508"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a60718e8a3f45af645752090dcc1e5508">&#9670;&nbsp;</a></span>state()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classcrashpad_1_1InitializationState.html#a044ea6d40e23683d6d1bb5ce30dafd88">State</a> crashpad::InitializationState::state </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the object’s state. </p>
<p>Consumers of this class should use an is_state_*() method instead. </p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>util/misc/initialization_state.h</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.18
</small></address>
</body>
</html>