blob: 064d2b1839b56e60dfbc7c474c9db4b5cb18b9c5 [file] [log] [blame]
<!-- HTML header for doxygen 1.8.15-->
<!-- Remember to use version doxygen 1.8.15 +-->
<!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.8.15"/>
<meta name="robots" content="NOINDEX, NOFOLLOW" /> <!-- Prevent indexing by search engines -->
<title>Compute Library: ICLMemoryRegion 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>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(initResizable);
/* @license-end */</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>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script><script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="stylesheet.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;">
<img alt="Compute Library" src="https://raw.githubusercontent.com/ARM-software/ComputeLibrary/gh-pages/ACL_logo.png" style="max-width: 100%;margin-top: 15px;margin-left: 10px"/>
<td style="padding-left: 0.5em;">
<div id="projectname">
&#160;<span id="projectnumber">19.08</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.15 -->
<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>
</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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classarm__compute_1_1_i_c_l_memory_region.xhtml','');});
/* @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">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> </div>
<div class="headertitle">
<div class="title">ICLMemoryRegion Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div>
</div><!--header-->
<div class="contents">
<p>OpenCL memory region interface.
<a href="classarm__compute_1_1_i_c_l_memory_region.xhtml#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="_c_l_memory_region_8h_source.xhtml">CLMemoryRegion.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for ICLMemoryRegion:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classarm__compute_1_1_i_c_l_memory_region__coll__graph.svg" width="146" height="112"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a target="top" href="graph_legend.xhtml">legend</a>]</span></center></div>
<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:a7cdcf7d89e4815422fcb3843e4ffbb4b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml#a7cdcf7d89e4815422fcb3843e4ffbb4b">ICLMemoryRegion</a> (cl::Context ctx, size_t <a class="el" href="classarm__compute_1_1_i_memory_region.xhtml#a259cb5a711406a8c3e5d937eb9350cca">size</a>)</td></tr>
<tr class="memdesc:a7cdcf7d89e4815422fcb3843e4ffbb4b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <a href="#a7cdcf7d89e4815422fcb3843e4ffbb4b">More...</a><br /></td></tr>
<tr class="separator:a7cdcf7d89e4815422fcb3843e4ffbb4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a04ae87317614a2332dea02ad30eaced5"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml#a04ae87317614a2332dea02ad30eaced5">~ICLMemoryRegion</a> ()=default</td></tr>
<tr class="memdesc:a04ae87317614a2332dea02ad30eaced5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default Destructor. <a href="#a04ae87317614a2332dea02ad30eaced5">More...</a><br /></td></tr>
<tr class="separator:a04ae87317614a2332dea02ad30eaced5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af1759d36be2abbe1002a68ddc2255fad"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml#af1759d36be2abbe1002a68ddc2255fad">ICLMemoryRegion</a> (const <a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml">ICLMemoryRegion</a> &amp;)=delete</td></tr>
<tr class="memdesc:af1759d36be2abbe1002a68ddc2255fad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prevent instances of this class from being copied (As this class contains pointers) <a href="#af1759d36be2abbe1002a68ddc2255fad">More...</a><br /></td></tr>
<tr class="separator:af1759d36be2abbe1002a68ddc2255fad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e5aaebd133c159b70f757d6ba7c4dc5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml#a4e5aaebd133c159b70f757d6ba7c4dc5">ICLMemoryRegion</a> (<a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml">ICLMemoryRegion</a> &amp;&amp;)=default</td></tr>
<tr class="memdesc:a4e5aaebd133c159b70f757d6ba7c4dc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default move constructor. <a href="#a4e5aaebd133c159b70f757d6ba7c4dc5">More...</a><br /></td></tr>
<tr class="separator:a4e5aaebd133c159b70f757d6ba7c4dc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba791ecf7c921e9a1c8d84baa7dd270e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml">ICLMemoryRegion</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml#aba791ecf7c921e9a1c8d84baa7dd270e">operator=</a> (const <a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml">ICLMemoryRegion</a> &amp;)=delete</td></tr>
<tr class="memdesc:aba791ecf7c921e9a1c8d84baa7dd270e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prevent instances of this class from being copied (As this class contains pointers) <a href="#aba791ecf7c921e9a1c8d84baa7dd270e">More...</a><br /></td></tr>
<tr class="separator:aba791ecf7c921e9a1c8d84baa7dd270e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad09657054c2f981a19b9ac7e4b95bd30"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml">ICLMemoryRegion</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml#ad09657054c2f981a19b9ac7e4b95bd30">operator=</a> (<a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml">ICLMemoryRegion</a> &amp;&amp;)=default</td></tr>
<tr class="memdesc:ad09657054c2f981a19b9ac7e4b95bd30"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default move assignment operator. <a href="#ad09657054c2f981a19b9ac7e4b95bd30">More...</a><br /></td></tr>
<tr class="separator:ad09657054c2f981a19b9ac7e4b95bd30"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac7e247b94ceae35db2a172961ab83df9"><td class="memItemLeft" align="right" valign="top">const cl::Buffer &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml#ac7e247b94ceae35db2a172961ab83df9">cl_data</a> () const</td></tr>
<tr class="memdesc:ac7e247b94ceae35db2a172961ab83df9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the underlying CL buffer. <a href="#ac7e247b94ceae35db2a172961ab83df9">More...</a><br /></td></tr>
<tr class="separator:ac7e247b94ceae35db2a172961ab83df9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8777d03065e8c7146157148a5355dd1"><td class="memItemLeft" align="right" valign="top">virtual void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml#ab8777d03065e8c7146157148a5355dd1">ptr</a> ()=0</td></tr>
<tr class="memdesc:ab8777d03065e8c7146157148a5355dd1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Host/SVM pointer accessor. <a href="#ab8777d03065e8c7146157148a5355dd1">More...</a><br /></td></tr>
<tr class="separator:ab8777d03065e8c7146157148a5355dd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a929af627a6a0430539998d12024d6c69"><td class="memItemLeft" align="right" valign="top">virtual void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml#a929af627a6a0430539998d12024d6c69">map</a> (cl::CommandQueue &amp;q, bool blocking)=0</td></tr>
<tr class="memdesc:a929af627a6a0430539998d12024d6c69"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enqueue a map operation of the allocated buffer on the given queue. <a href="#a929af627a6a0430539998d12024d6c69">More...</a><br /></td></tr>
<tr class="separator:a929af627a6a0430539998d12024d6c69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ee6b952accaff0f7e8e61bda7889102"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml#a0ee6b952accaff0f7e8e61bda7889102">unmap</a> (cl::CommandQueue &amp;q)=0</td></tr>
<tr class="memdesc:a0ee6b952accaff0f7e8e61bda7889102"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enqueue an unmap operation of the allocated buffer on the given queue. <a href="#a0ee6b952accaff0f7e8e61bda7889102">More...</a><br /></td></tr>
<tr class="separator:a0ee6b952accaff0f7e8e61bda7889102"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d9d196240e9b0062c953c3abd534187"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml#a3d9d196240e9b0062c953c3abd534187">buffer</a> () override</td></tr>
<tr class="memdesc:a3d9d196240e9b0062c953c3abd534187"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the pointer to the allocated data. <a href="#a3d9d196240e9b0062c953c3abd534187">More...</a><br /></td></tr>
<tr class="separator:a3d9d196240e9b0062c953c3abd534187"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acdbd1d0a6ab2898e3b75231386c43f40"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml#acdbd1d0a6ab2898e3b75231386c43f40">buffer</a> () const override</td></tr>
<tr class="memdesc:acdbd1d0a6ab2898e3b75231386c43f40"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the pointer to the allocated data. <a href="#acdbd1d0a6ab2898e3b75231386c43f40">More...</a><br /></td></tr>
<tr class="separator:acdbd1d0a6ab2898e3b75231386c43f40"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a000cbaa76e2cb0ae0aeee0b95b6470b7"><td class="memItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classarm__compute_1_1_i_memory_region.xhtml">IMemoryRegion</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml#a000cbaa76e2cb0ae0aeee0b95b6470b7">extract_subregion</a> (size_t <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>, size_t <a class="el" href="classarm__compute_1_1_i_memory_region.xhtml#a259cb5a711406a8c3e5d937eb9350cca">size</a>) override</td></tr>
<tr class="memdesc:a000cbaa76e2cb0ae0aeee0b95b6470b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Extract a sub-region from the memory. <a href="#a000cbaa76e2cb0ae0aeee0b95b6470b7">More...</a><br /></td></tr>
<tr class="separator:a000cbaa76e2cb0ae0aeee0b95b6470b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classarm__compute_1_1_i_memory_region"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classarm__compute_1_1_i_memory_region')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classarm__compute_1_1_i_memory_region.xhtml">IMemoryRegion</a></td></tr>
<tr class="memitem:a92ee6f66a47e8ba4bd3d01579ad4ef42 inherit pub_methods_classarm__compute_1_1_i_memory_region"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_memory_region.xhtml#a92ee6f66a47e8ba4bd3d01579ad4ef42">IMemoryRegion</a> (size_t <a class="el" href="classarm__compute_1_1_i_memory_region.xhtml#a259cb5a711406a8c3e5d937eb9350cca">size</a>)</td></tr>
<tr class="memdesc:a92ee6f66a47e8ba4bd3d01579ad4ef42 inherit pub_methods_classarm__compute_1_1_i_memory_region"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor. <a href="classarm__compute_1_1_i_memory_region.xhtml#a92ee6f66a47e8ba4bd3d01579ad4ef42">More...</a><br /></td></tr>
<tr class="separator:a92ee6f66a47e8ba4bd3d01579ad4ef42 inherit pub_methods_classarm__compute_1_1_i_memory_region"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa097212d2b66253335ff2dca6385b13 inherit pub_methods_classarm__compute_1_1_i_memory_region"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_memory_region.xhtml#aaa097212d2b66253335ff2dca6385b13">~IMemoryRegion</a> ()=default</td></tr>
<tr class="memdesc:aaa097212d2b66253335ff2dca6385b13 inherit pub_methods_classarm__compute_1_1_i_memory_region"><td class="mdescLeft">&#160;</td><td class="mdescRight">Virtual Destructor. <a href="classarm__compute_1_1_i_memory_region.xhtml#aaa097212d2b66253335ff2dca6385b13">More...</a><br /></td></tr>
<tr class="separator:aaa097212d2b66253335ff2dca6385b13 inherit pub_methods_classarm__compute_1_1_i_memory_region"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a259cb5a711406a8c3e5d937eb9350cca inherit pub_methods_classarm__compute_1_1_i_memory_region"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_memory_region.xhtml#a259cb5a711406a8c3e5d937eb9350cca">size</a> () const</td></tr>
<tr class="memdesc:a259cb5a711406a8c3e5d937eb9350cca inherit pub_methods_classarm__compute_1_1_i_memory_region"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classarm__compute_1_1_memory.xhtml" title="CPU implementation of memory object.">Memory</a> region size accessor. <a href="classarm__compute_1_1_i_memory_region.xhtml#a259cb5a711406a8c3e5d937eb9350cca">More...</a><br /></td></tr>
<tr class="separator:a259cb5a711406a8c3e5d937eb9350cca inherit pub_methods_classarm__compute_1_1_i_memory_region"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5c159b7d0cdca9f543019f4f47ec288 inherit pub_methods_classarm__compute_1_1_i_memory_region"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_memory_region.xhtml#ab5c159b7d0cdca9f543019f4f47ec288">set_size</a> (size_t <a class="el" href="classarm__compute_1_1_i_memory_region.xhtml#a259cb5a711406a8c3e5d937eb9350cca">size</a>)</td></tr>
<tr class="memdesc:ab5c159b7d0cdca9f543019f4f47ec288 inherit pub_methods_classarm__compute_1_1_i_memory_region"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets size of region. <a href="classarm__compute_1_1_i_memory_region.xhtml#ab5c159b7d0cdca9f543019f4f47ec288">More...</a><br /></td></tr>
<tr class="separator:ab5c159b7d0cdca9f543019f4f47ec288 inherit pub_methods_classarm__compute_1_1_i_memory_region"><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>OpenCL memory region interface. </p>
<p class="definition">Definition at line <a class="el" href="_c_l_memory_region_8h_source.xhtml#l00035">35</a> of file <a class="el" href="_c_l_memory_region_8h_source.xhtml">CLMemoryRegion.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a7cdcf7d89e4815422fcb3843e4ffbb4b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7cdcf7d89e4815422fcb3843e4ffbb4b">&#9670;&nbsp;</a></span>ICLMemoryRegion() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml">ICLMemoryRegion</a> </td>
<td>(</td>
<td class="paramtype">cl::Context&#160;</td>
<td class="paramname"><em>ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Constructor. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>OpenCL context </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Region size </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="_c_l_memory_region_8cpp_source.xhtml#l00031">31</a> of file <a class="el" href="_c_l_memory_region_8cpp_source.xhtml">CLMemoryRegion.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; : <a class="code" href="classarm__compute_1_1_i_memory_region.xhtml#a92ee6f66a47e8ba4bd3d01579ad4ef42">IMemoryRegion</a>(<a class="code" href="classarm__compute_1_1_i_memory_region.xhtml#a259cb5a711406a8c3e5d937eb9350cca">size</a>), _ctx(std::move(ctx)), _mapping(<span class="keyword">nullptr</span>), _mem()</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;}</div><div class="ttc" id="classarm__compute_1_1_i_memory_region_xhtml_a92ee6f66a47e8ba4bd3d01579ad4ef42"><div class="ttname"><a href="classarm__compute_1_1_i_memory_region.xhtml#a92ee6f66a47e8ba4bd3d01579ad4ef42">arm_compute::IMemoryRegion::IMemoryRegion</a></div><div class="ttdeci">IMemoryRegion(size_t size)</div><div class="ttdoc">Default constructor.</div><div class="ttdef"><b>Definition:</b> <a href="_i_memory_region_8h_source.xhtml#l00040">IMemoryRegion.h:40</a></div></div>
<div class="ttc" id="classarm__compute_1_1_i_memory_region_xhtml_a259cb5a711406a8c3e5d937eb9350cca"><div class="ttname"><a href="classarm__compute_1_1_i_memory_region.xhtml#a259cb5a711406a8c3e5d937eb9350cca">arm_compute::IMemoryRegion::size</a></div><div class="ttdeci">size_t size() const</div><div class="ttdoc">Memory region size accessor.</div><div class="ttdef"><b>Definition:</b> <a href="_i_memory_region_8h_source.xhtml#l00073">IMemoryRegion.h:73</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a04ae87317614a2332dea02ad30eaced5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a04ae87317614a2332dea02ad30eaced5">&#9670;&nbsp;</a></span>~ICLMemoryRegion()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual ~<a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml">ICLMemoryRegion</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span><span class="mlabel">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Default Destructor. </p>
</div>
</div>
<a id="af1759d36be2abbe1002a68ddc2255fad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af1759d36be2abbe1002a68ddc2255fad">&#9670;&nbsp;</a></span>ICLMemoryRegion() <span class="overload">[2/3]</span></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="classarm__compute_1_1_i_c_l_memory_region.xhtml">ICLMemoryRegion</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml">ICLMemoryRegion</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Prevent instances of this class from being copied (As this class contains pointers) </p>
</div>
</div>
<a id="a4e5aaebd133c159b70f757d6ba7c4dc5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4e5aaebd133c159b70f757d6ba7c4dc5">&#9670;&nbsp;</a></span>ICLMemoryRegion() <span class="overload">[3/3]</span></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="classarm__compute_1_1_i_c_l_memory_region.xhtml">ICLMemoryRegion</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml">ICLMemoryRegion</a> &amp;&amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Default move constructor. </p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a3d9d196240e9b0062c953c3abd534187"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3d9d196240e9b0062c953c3abd534187">&#9670;&nbsp;</a></span>buffer() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void * buffer </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the pointer to the allocated data. </p>
<dl class="section return"><dt>Returns</dt><dd>Pointer to the allocated data </dd></dl>
<p>Implements <a class="el" href="classarm__compute_1_1_i_memory_region.xhtml#af4cf95f81e1b269a31d2d9a7e0429a24">IMemoryRegion</a>.</p>
<p class="definition">Definition at line <a class="el" href="_c_l_memory_region_8cpp_source.xhtml#l00041">41</a> of file <a class="el" href="_c_l_memory_region_8cpp_source.xhtml">CLMemoryRegion.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> _mapping;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;}</div></div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="_c_l_memory_region_8cpp_source.xhtml#l00066">CLBufferMemoryRegion::CLBufferMemoryRegion()</a>.</p>
</div>
</div>
<a id="acdbd1d0a6ab2898e3b75231386c43f40"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acdbd1d0a6ab2898e3b75231386c43f40">&#9670;&nbsp;</a></span>buffer() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void * buffer </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">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the pointer to the allocated data. </p>
<dl class="section return"><dt>Returns</dt><dd>Pointer to the allocated data </dd></dl>
<p>Implements <a class="el" href="classarm__compute_1_1_i_memory_region.xhtml#aeb4cf01e5d74997a1994272225baeb05">IMemoryRegion</a>.</p>
<p class="definition">Definition at line <a class="el" href="_c_l_memory_region_8cpp_source.xhtml#l00046">46</a> of file <a class="el" href="_c_l_memory_region_8cpp_source.xhtml">CLMemoryRegion.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">return</span> _mapping;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ac7e247b94ceae35db2a172961ab83df9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac7e247b94ceae35db2a172961ab83df9">&#9670;&nbsp;</a></span>cl_data()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const cl::Buffer &amp; cl_data </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the underlying CL buffer. </p>
<dl class="section return"><dt>Returns</dt><dd>CL memory buffer object </dd></dl>
<p class="definition">Definition at line <a class="el" href="_c_l_memory_region_8cpp_source.xhtml#l00036">36</a> of file <a class="el" href="_c_l_memory_region_8cpp_source.xhtml">CLMemoryRegion.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">return</span> _mem;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;}</div></div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="_c_l_tensor_allocator_8cpp_source.xhtml#l00119">CLTensorAllocator::allocate()</a>, <a class="el" href="_c_l_tensor_allocator_8cpp_source.xhtml#l00114">CLTensorAllocator::cl_data()</a>, and <a class="el" href="_c_l_tensor_allocator_8cpp_source.xhtml#l00173">CLTensorAllocator::set_associated_memory_group()</a>.</p>
</div>
</div>
<a id="a000cbaa76e2cb0ae0aeee0b95b6470b7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a000cbaa76e2cb0ae0aeee0b95b6470b7">&#9670;&nbsp;</a></span>extract_subregion()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::unique_ptr&lt; <a class="el" href="classarm__compute_1_1_i_memory_region.xhtml">IMemoryRegion</a> &gt; extract_subregion </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</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">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Extract a sub-region from the memory. </p>
<dl class="section warning"><dt>Warning</dt><dd>Ownership is maintained by the parent memory, while a wrapped raw memory region is returned by this function. Thus parent memory should not be released before this.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">offset</td><td>Offset to the region </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Size of the region</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A wrapped memory sub-region with no ownership of the underlying memory </dd></dl>
<p>Implements <a class="el" href="classarm__compute_1_1_i_memory_region.xhtml#ae883a66f44b3d41635c4a75cab7dacfb">IMemoryRegion</a>.</p>
<p class="definition">Definition at line <a class="el" href="_c_l_memory_region_8cpp_source.xhtml#l00051">51</a> of file <a class="el" href="_c_l_memory_region_8cpp_source.xhtml">CLMemoryRegion.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;{</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="_error_8h.xhtml#a6dc630a6ae9cc063b3924bcea8dee9d6">ARM_COMPUTE_UNUSED</a>(<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>, <a class="code" href="classarm__compute_1_1_i_memory_region.xhtml#a259cb5a711406a8c3e5d937eb9350cca">size</a>);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;}</div><div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a009469e4d9b8fce3b6d5e97d2077827d"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a></div><div class="ttdeci">__global uchar * offset(const Image *img, int x, int y)</div><div class="ttdoc">Get the pointer position of a Image.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00328">helpers.h:328</a></div></div>
<div class="ttc" id="_error_8h_xhtml_a6dc630a6ae9cc063b3924bcea8dee9d6"><div class="ttname"><a href="_error_8h.xhtml#a6dc630a6ae9cc063b3924bcea8dee9d6">ARM_COMPUTE_UNUSED</a></div><div class="ttdeci">#define ARM_COMPUTE_UNUSED(...)</div><div class="ttdoc">To avoid unused variables warnings.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00160">Error.h:160</a></div></div>
<div class="ttc" id="classarm__compute_1_1_i_memory_region_xhtml_a259cb5a711406a8c3e5d937eb9350cca"><div class="ttname"><a href="classarm__compute_1_1_i_memory_region.xhtml#a259cb5a711406a8c3e5d937eb9350cca">arm_compute::IMemoryRegion::size</a></div><div class="ttdeci">size_t size() const</div><div class="ttdoc">Memory region size accessor.</div><div class="ttdef"><b>Definition:</b> <a href="_i_memory_region_8h_source.xhtml#l00073">IMemoryRegion.h:73</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00160">ARM_COMPUTE_UNUSED</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00328">offset()</a>, and <a class="el" href="_i_memory_region_8h_source.xhtml#l00073">IMemoryRegion::size()</a>.</p>
</div>
</div>
<a id="a929af627a6a0430539998d12024d6c69"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a929af627a6a0430539998d12024d6c69">&#9670;&nbsp;</a></span>map()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void* map </td>
<td>(</td>
<td class="paramtype">cl::CommandQueue &amp;&#160;</td>
<td class="paramname"><em>q</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>blocking</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">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Enqueue a map operation of the allocated buffer on the given queue. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">q</td><td>The CL command queue to use for the mapping operation. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">blocking</td><td>If true, then the mapping will be ready to use by the time this method returns, else it is the caller's responsibility to flush the queue and wait for the mapping operation to have completed before using the returned mapping pointer.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The mapping address. </dd></dl>
<p>Implemented in <a class="el" href="classarm__compute_1_1_c_l_fine_s_v_m_memory_region.xhtml#a518b9e7c59ddb616c098499d7c50f378">CLFineSVMMemoryRegion</a>, <a class="el" href="classarm__compute_1_1_c_l_coarse_s_v_m_memory_region.xhtml#a518b9e7c59ddb616c098499d7c50f378">CLCoarseSVMMemoryRegion</a>, and <a class="el" href="classarm__compute_1_1_c_l_buffer_memory_region.xhtml#a518b9e7c59ddb616c098499d7c50f378">CLBufferMemoryRegion</a>.</p>
<p class="reference">Referenced by <a class="el" href="_c_l_tensor_allocator_8cpp_source.xhtml#l00193">CLTensorAllocator::map()</a>.</p>
</div>
</div>
<a id="aba791ecf7c921e9a1c8d84baa7dd270e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aba791ecf7c921e9a1c8d84baa7dd270e">&#9670;&nbsp;</a></span>operator=() <span class="overload">[1/2]</span></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="classarm__compute_1_1_i_c_l_memory_region.xhtml">ICLMemoryRegion</a>&amp; operator= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml">ICLMemoryRegion</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Prevent instances of this class from being copied (As this class contains pointers) </p>
</div>
</div>
<a id="ad09657054c2f981a19b9ac7e4b95bd30"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad09657054c2f981a19b9ac7e4b95bd30">&#9670;&nbsp;</a></span>operator=() <span class="overload">[2/2]</span></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="classarm__compute_1_1_i_c_l_memory_region.xhtml">ICLMemoryRegion</a>&amp; operator= </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml">ICLMemoryRegion</a> &amp;&amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Default move assignment operator. </p>
</div>
</div>
<a id="ab8777d03065e8c7146157148a5355dd1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab8777d03065e8c7146157148a5355dd1">&#9670;&nbsp;</a></span>ptr()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void* ptr </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Host/SVM pointer accessor. </p>
<dl class="section return"><dt>Returns</dt><dd>Host/SVM pointer base </dd></dl>
<p>Implemented in <a class="el" href="classarm__compute_1_1_c_l_buffer_memory_region.xhtml#a567fad71aedc47306dbf7b0c020257d8">CLBufferMemoryRegion</a>.</p>
</div>
</div>
<a id="a0ee6b952accaff0f7e8e61bda7889102"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0ee6b952accaff0f7e8e61bda7889102">&#9670;&nbsp;</a></span>unmap()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void unmap </td>
<td>(</td>
<td class="paramtype">cl::CommandQueue &amp;&#160;</td>
<td class="paramname"><em>q</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Enqueue an unmap operation of the allocated buffer on the given queue. </p>
<dl class="section note"><dt>Note</dt><dd>This method simply enqueue the unmap operation, it is the caller's responsibility to flush the queue and make sure the unmap is finished before the memory is accessed by the device.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">q</td><td>The CL command queue to use for the mapping operation. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classarm__compute_1_1_c_l_fine_s_v_m_memory_region.xhtml#a14c7c495a1add2aec81bc886462efe89">CLFineSVMMemoryRegion</a>, <a class="el" href="classarm__compute_1_1_c_l_coarse_s_v_m_memory_region.xhtml#a14c7c495a1add2aec81bc886462efe89">CLCoarseSVMMemoryRegion</a>, and <a class="el" href="classarm__compute_1_1_c_l_buffer_memory_region.xhtml#a14c7c495a1add2aec81bc886462efe89">CLBufferMemoryRegion</a>.</p>
<p class="reference">Referenced by <a class="el" href="_c_l_tensor_allocator_8cpp_source.xhtml#l00203">CLTensorAllocator::unmap()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>arm_compute/runtime/CL/<a class="el" href="_c_l_memory_region_8h_source.xhtml">CLMemoryRegion.h</a></li>
<li>src/runtime/CL/<a class="el" href="_c_l_memory_region_8cpp_source.xhtml">CLMemoryRegion.cpp</a></li>
</ul>
</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="namespacearm__compute.xhtml">arm_compute</a></li><li class="navelem"><a class="el" href="classarm__compute_1_1_i_c_l_memory_region.xhtml">ICLMemoryRegion</a></li>
<li class="footer">Generated on Mon Sep 2 2019 11:47:35 for Compute Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
</div>
</body>
</html>