blob: a9754132ef3296bd980e013bf0c450aee6fa9b58 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en" data-content_root="" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
<title>Memory (management) &#8212; Apache Arrow v17.0.0.dev52</title>
<script data-cfasync="false">
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
</script>
<!-- Loaded before other Sphinx assets -->
<link href="../../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link href="../../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link href="../../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../../_static/copybutton.css" />
<link rel="stylesheet" type="text/css" href="../../_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css" />
<link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css" />
<!-- Pre-loaded scripts that we'll load fully later -->
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
<script src="../../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/sphinx_highlight.js"></script>
<script src="../../_static/clipboard.min.js"></script>
<script src="../../_static/copybutton.js"></script>
<script src="../../_static/design-tabs.js"></script>
<script>DOCUMENTATION_OPTIONS.pagename = 'cpp/api/memory';</script>
<script>
DOCUMENTATION_OPTIONS.theme_version = '0.15.2';
DOCUMENTATION_OPTIONS.theme_switcher_json_url = '/docs/_static/versions.json';
DOCUMENTATION_OPTIONS.theme_switcher_version_match = 'dev/';
DOCUMENTATION_OPTIONS.show_version_warning_banner = true;
</script>
<link rel="canonical" href="https://arrow.apache.org/docs/cpp/api/memory.html" />
<link rel="icon" href="../../_static/favicon.ico"/>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Thread (management)" href="thread.html" />
<link rel="prev" title="Programming Support" href="support.html" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="docsearch:language" content="en"/>
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
/* We explicitly disable cookie tracking to avoid privacy issues */
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://analytics.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '20']);
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 data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
<div id="pst-scroll-pixel-helper"></div>
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
<i class="fa-solid fa-arrow-up"></i>
Back to top
</button>
<input type="checkbox"
class="sidebar-toggle"
name="__primary"
id="__primary"/>
<label class="overlay overlay-primary" for="__primary"></label>
<input type="checkbox"
class="sidebar-toggle"
name="__secondary"
id="__secondary"/>
<label class="overlay overlay-secondary" for="__secondary"></label>
<div class="search-button__wrapper">
<div class="search-button__overlay"></div>
<div class="search-button__search-container">
<form class="bd-search d-flex align-items-center"
action="../../search.html"
method="get">
<i class="fa-solid fa-magnifying-glass"></i>
<input type="search"
class="form-control"
name="q"
id="search-input"
placeholder="Search the docs ..."
aria-label="Search the docs ..."
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"/>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
</form></div>
</div>
<header class="bd-header navbar navbar-expand-lg bd-navbar">
<div class="bd-header__inner bd-page-width">
<label class="sidebar-toggle primary-toggle" for="__primary">
<span class="fa-solid fa-bars"></span>
</label>
<div class="col-lg-3 navbar-header-items__start">
<div class="navbar-item">
<a class="navbar-brand logo" href="../../index.html">
<img src="../../_static/arrow.png" class="logo__image only-light" alt="Apache Arrow v17.0.0.dev52 - Home"/>
<script>document.write(`<img src="../../_static/arrow-dark.png" class="logo__image only-dark" alt="Apache Arrow v17.0.0.dev52 - Home"/>`);</script>
</a></div>
</div>
<div class="col-lg-9 navbar-header-items">
<div class="me-auto navbar-header-items__center">
<div class="navbar-item">
<nav class="navbar-nav">
<ul class="bd-navbar-elements navbar-nav">
<li class="nav-item">
<a class="nav-link nav-internal" href="../../format/index.html">
Specifications
</a>
</li>
<li class="nav-item">
<a class="nav-link nav-internal" href="../../developers/index.html">
Development
</a>
</li>
<li class="nav-item dropdown">
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
Implementations
</button>
<ul id="pst-nav-more-links" class="dropdown-menu">
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../c_glib/index.html">
C/GLib
</a>
</li>
<li class="nav-item current active">
<a class="nav-link dropdown-item nav-internal" href="../index.html">
C++
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/csharp/README.md">
C#
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://pkg.go.dev/github.com/apache/arrow/go/v17">
Go
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../java/index.html">
Java
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../js/index.html">
JavaScript
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/julia/">
Julia
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/matlab/README.md">
MATLAB
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/nanoarrow/">
nanoarrow
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../python/index.html">
Python
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../r/index.html">
R
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/ruby/README.md">
Ruby
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://docs.rs/crate/arrow/">
Rust
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../status.html">
Implementation Status
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/cpp/">
C++ cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/java/">
Java cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/py/">
Python cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/r/">
R cookbook
</a>
</li>
</ul>
</li>
</ul>
</nav></div>
</div>
<div class="navbar-header-items__end">
<div class="navbar-item navbar-persistent--container">
<script>
document.write(`
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="fa-solid fa-magnifying-glass"></i>
<span class="search-button__default-text">Search</span>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
</button>
`);
</script>
</div>
<div class="navbar-item">
<script>
document.write(`
<div class="version-switcher__container dropdown">
<button id="pst-version-switcher-button-2"
type="button"
class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle"
data-bs-toggle="dropdown"
aria-haspopup="listbox"
aria-controls="pst-version-switcher-list-2"
aria-label="Version switcher list"
>
Choose version <!-- this text may get changed later by javascript -->
<span class="caret"></span>
</button>
<div id="pst-version-switcher-list-2"
class="version-switcher__menu dropdown-menu list-group-flush py-0"
role="listbox" aria-labelledby="pst-version-switcher-button-2">
<!-- dropdown will be populated by javascript on page load -->
</div>
</div>
`);
</script></div>
<div class="navbar-item">
<script>
document.write(`
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
</button>
`);
</script></div>
<div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
aria-label="Icon Links">
<li class="nav-item">
<a href="https://github.com/apache/arrow" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">GitHub</span></a>
</li>
<li class="nav-item">
<a href="https://twitter.com/ApacheArrow" title="X" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-x-twitter fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">X</span></a>
</li>
</ul></div>
</div>
</div>
<div class="navbar-persistent--mobile">
<script>
document.write(`
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="fa-solid fa-magnifying-glass"></i>
<span class="search-button__default-text">Search</span>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
</button>
`);
</script>
</div>
<label class="sidebar-toggle secondary-toggle" for="__secondary" tabindex="0">
<span class="fa-solid fa-outdent"></span>
</label>
</div>
</header>
<div class="bd-container">
<div class="bd-container__inner bd-page-width">
<div class="bd-sidebar-primary bd-sidebar">
<div class="sidebar-header-items sidebar-primary__section">
<div class="sidebar-header-items__center">
<div class="navbar-item">
<nav class="navbar-nav">
<ul class="bd-navbar-elements navbar-nav">
<li class="nav-item">
<a class="nav-link nav-internal" href="../../format/index.html">
Specifications
</a>
</li>
<li class="nav-item">
<a class="nav-link nav-internal" href="../../developers/index.html">
Development
</a>
</li>
<li class="nav-item dropdown">
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
Implementations
</button>
<ul id="pst-nav-more-links-2" class="dropdown-menu">
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../c_glib/index.html">
C/GLib
</a>
</li>
<li class="nav-item current active">
<a class="nav-link dropdown-item nav-internal" href="../index.html">
C++
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/csharp/README.md">
C#
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://pkg.go.dev/github.com/apache/arrow/go/v17">
Go
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../java/index.html">
Java
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../js/index.html">
JavaScript
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/julia/">
Julia
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/matlab/README.md">
MATLAB
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/nanoarrow/">
nanoarrow
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../python/index.html">
Python
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../r/index.html">
R
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/ruby/README.md">
Ruby
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://docs.rs/crate/arrow/">
Rust
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../status.html">
Implementation Status
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/cpp/">
C++ cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/java/">
Java cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/py/">
Python cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/r/">
R cookbook
</a>
</li>
</ul>
</li>
</ul>
</nav></div>
</div>
<div class="sidebar-header-items__end">
<div class="navbar-item">
<script>
document.write(`
<div class="version-switcher__container dropdown">
<button id="pst-version-switcher-button-3"
type="button"
class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle"
data-bs-toggle="dropdown"
aria-haspopup="listbox"
aria-controls="pst-version-switcher-list-3"
aria-label="Version switcher list"
>
Choose version <!-- this text may get changed later by javascript -->
<span class="caret"></span>
</button>
<div id="pst-version-switcher-list-3"
class="version-switcher__menu dropdown-menu list-group-flush py-0"
role="listbox" aria-labelledby="pst-version-switcher-button-3">
<!-- dropdown will be populated by javascript on page load -->
</div>
</div>
`);
</script></div>
<div class="navbar-item">
<script>
document.write(`
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
</button>
`);
</script></div>
<div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
aria-label="Icon Links">
<li class="nav-item">
<a href="https://github.com/apache/arrow" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">GitHub</span></a>
</li>
<li class="nav-item">
<a href="https://twitter.com/ApacheArrow" title="X" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-x-twitter fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">X</span></a>
</li>
</ul></div>
</div>
</div>
<div class="sidebar-primary-items__start sidebar-primary__section">
<div class="sidebar-primary-item">
<nav class="bd-docs-nav bd-links"
aria-label="Section Navigation">
<p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p>
<div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav">
<li class="toctree-l1 has-children"><a class="reference internal" href="../getting_started.html">Getting Started</a><input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-1"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../build_system.html">Using Arrow C++ in your own project</a></li>
<li class="toctree-l2"><a class="reference internal" href="../conventions.html">Conventions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tutorials/basic_arrow.html">Basic Arrow Data Structures</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tutorials/io_tutorial.html">Arrow File I/O</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tutorials/compute_tutorial.html">Arrow Compute</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tutorials/datasets_tutorial.html">Arrow Datasets</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../user_guide.html">User Guide</a><input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-2"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../overview.html">High-Level Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="../memory.html">Memory Management</a></li>
<li class="toctree-l2"><a class="reference internal" href="../arrays.html">Arrays</a></li>
<li class="toctree-l2"><a class="reference internal" href="../datatypes.html">Data Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tables.html">Tabular Data</a></li>
<li class="toctree-l2"><a class="reference internal" href="../compute.html">Compute Functions</a></li>
<li class="toctree-l2 has-children"><a class="reference internal" href="../gandiva.html">The Gandiva Expression Compiler</a><input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-3"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="../gandiva/expr_projector_filter.html">Gandiva Expression, Projector, and Filter</a></li>
<li class="toctree-l3"><a class="reference internal" href="../gandiva/external_func.html">Gandiva External Functions Development Guide</a></li>
</ul>
</li>
<li class="toctree-l2 has-children"><a class="reference internal" href="../streaming_execution.html">Acero: A C++ streaming execution engine</a><input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-4"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="../acero/overview.html">Acero Overview</a></li>
<li class="toctree-l3"><a class="reference internal" href="../acero/user_guide.html">Acero User’s Guide</a></li>
<li class="toctree-l3"><a class="reference internal" href="../acero/substrait.html">Using Acero with Substrait</a></li>
<li class="toctree-l3"><a class="reference internal" href="../acero/developer_guide.html">Developer’s Guide</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../io.html">Input / output and filesystems</a></li>
<li class="toctree-l2"><a class="reference internal" href="../ipc.html">Reading and writing the Arrow IPC format</a></li>
<li class="toctree-l2"><a class="reference internal" href="../orc.html">Reading and Writing ORC files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../parquet.html">Reading and writing Parquet files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../csv.html">Reading and Writing CSV files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../json.html">Reading JSON files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../dataset.html">Tabular Datasets</a></li>
<li class="toctree-l2"><a class="reference internal" href="../flight.html">Arrow Flight RPC</a></li>
<li class="toctree-l2"><a class="reference internal" href="../gdb.html">Debugging code using Arrow</a></li>
<li class="toctree-l2"><a class="reference internal" href="../threading.html">Thread Management</a></li>
<li class="toctree-l2"><a class="reference internal" href="../opentelemetry.html">OpenTelemetry</a></li>
<li class="toctree-l2"><a class="reference internal" href="../env_vars.html">Environment Variables</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../examples/index.html">Examples</a><input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-5"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../examples/cmake_minimal_build.html">Minimal build using CMake</a></li>
<li class="toctree-l2"><a class="reference internal" href="../examples/compute_and_write_example.html">Compute and Write CSV Example</a></li>
<li class="toctree-l2"><a class="reference internal" href="../examples/dataset_documentation_example.html">Arrow Datasets example</a></li>
<li class="toctree-l2"><a class="reference internal" href="../examples/dataset_skyhook_scan_example.html">Arrow Skyhook example</a></li>
<li class="toctree-l2"><a class="reference internal" href="../examples/row_columnar_conversion.html">Row to columnar conversion</a></li>
<li class="toctree-l2"><a class="reference internal" href="../examples/tuple_range_conversion.html">std::tuple-like ranges to Arrow</a></li>
<li class="toctree-l2"><a class="reference internal" href="../examples/converting_recordbatch_to_tensor.html">Converting RecordBatch to Tensor</a></li>
</ul>
</li>
<li class="toctree-l1 current active has-children"><a class="reference internal" href="../api.html">API Reference</a><input checked="" class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-6"><i class="fa-solid fa-chevron-down"></i></label><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="support.html">Programming Support</a></li>
<li class="toctree-l2 current active"><a class="current reference internal" href="#">Memory (management)</a></li>
<li class="toctree-l2"><a class="reference internal" href="thread.html">Thread (management)</a></li>
<li class="toctree-l2"><a class="reference internal" href="datatype.html">Data Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="array.html">Arrays</a></li>
<li class="toctree-l2"><a class="reference internal" href="scalar.html">Scalars</a></li>
<li class="toctree-l2"><a class="reference internal" href="builder.html">Array Builders</a></li>
<li class="toctree-l2"><a class="reference internal" href="table.html">Two-dimensional Datasets</a></li>
<li class="toctree-l2"><a class="reference internal" href="c_abi.html">C Interfaces</a></li>
<li class="toctree-l2"><a class="reference internal" href="compute.html">Compute Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="acero.html">Streaming Execution (Acero)</a></li>
<li class="toctree-l2"><a class="reference internal" href="gandiva.html">Gandiva Expression Compiler</a></li>
<li class="toctree-l2"><a class="reference internal" href="tensor.html">Tensors</a></li>
<li class="toctree-l2"><a class="reference internal" href="utilities.html">Utilities</a></li>
<li class="toctree-l2"><a class="reference internal" href="async.html">Asynchronous programming</a></li>
<li class="toctree-l2"><a class="reference internal" href="io.html">Input / output</a></li>
<li class="toctree-l2"><a class="reference internal" href="ipc.html">Arrow IPC</a></li>
<li class="toctree-l2"><a class="reference internal" href="formats.html">File Formats</a></li>
<li class="toctree-l2"><a class="reference internal" href="cuda.html">CUDA support</a></li>
<li class="toctree-l2"><a class="reference internal" href="flight.html">Arrow Flight RPC</a></li>
<li class="toctree-l2"><a class="reference internal" href="flightsql.html">Arrow Flight SQL</a></li>
<li class="toctree-l2"><a class="reference internal" href="filesystem.html">Filesystems</a></li>
<li class="toctree-l2"><a class="reference internal" href="dataset.html">Dataset</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference external" href="https://arrow.apache.org/cookbook/cpp/">C++ cookbook</a></li>
</ul>
</div>
</nav></div>
</div>
<div class="sidebar-primary-items__end sidebar-primary__section">
</div>
<div id="rtd-footer-container"></div>
</div>
<main id="main-content" class="bd-main">
<div class="bd-content">
<div class="bd-article-container">
<div class="bd-header-article">
<div class="header-article-items header-article__inner">
<div class="header-article-items__start">
<div class="header-article-item">
<nav aria-label="Breadcrumb">
<ul class="bd-breadcrumbs">
<li class="breadcrumb-item breadcrumb-home">
<a href="../../index.html" class="nav-link" aria-label="Home">
<i class="fa-solid fa-home"></i>
</a>
</li>
<li class="breadcrumb-item"><a href="../index.html" class="nav-link">C++ Implementation</a></li>
<li class="breadcrumb-item"><a href="../api.html" class="nav-link">API Reference</a></li>
<li class="breadcrumb-item active" aria-current="page">Memory (management)</li>
</ul>
</nav>
</div>
</div>
</div>
</div>
<div id="searchbox"></div>
<article class="bd-article">
<section id="memory-management">
<h1>Memory (management)<a class="headerlink" href="#memory-management" title="Permalink to this heading">#</a></h1>
<section id="devices">
<h2>Devices<a class="headerlink" href="#devices" title="Permalink to this heading">#</a></h2>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow6DeviceE">
<span id="_CPPv3N5arrow6DeviceE"></span><span id="_CPPv2N5arrow6DeviceE"></span><span id="arrow::Device"></span><span class="target" id="classarrow_1_1_device"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Device</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">enable_shared_from_this</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6DeviceE" title="arrow::Device"><span class="n"><span class="pre">Device</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">util</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">EqualityComparable</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6DeviceE" title="arrow::Device"><span class="n"><span class="pre">Device</span></span></a><span class="p"><span class="pre">&gt;</span></span><a class="headerlink" href="#_CPPv4N5arrow6DeviceE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>EXPERIMENTAL: Abstract interface for hardware devices. </p>
<p>This object represents a device with access to some memory spaces. When handling a <a class="reference internal" href="#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a> or raw memory address, it allows deciding in which context the raw memory address should be interpreted (e.g. CPU-accessible memory, or embedded memory on some particular GPU). </p>
<p>Subclassed by <a class="reference internal" href="#classarrow_1_1_c_p_u_device"><span class="std std-ref">arrow::CPUDevice</span></a>, <a class="reference internal" href="cuda.html#classarrow_1_1cuda_1_1_cuda_device"><span class="std std-ref">arrow::cuda::CudaDevice</span></a></p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow6Device9type_nameEv">
<span id="_CPPv3NK5arrow6Device9type_nameEv"></span><span id="_CPPv2NK5arrow6Device9type_nameEv"></span><span id="arrow::Device::type_nameC"></span><span class="target" id="classarrow_1_1_device_1a64fa6c42b0237fab3002c0da05be613d"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">type_name</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4NK5arrow6Device9type_nameEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>A shorthand for this device’s type. </p>
<p>The returned value is different for each device class, but is the same for all instances of a given class. It can be used as a replacement for RTTI. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow6Device8ToStringEv">
<span id="_CPPv3NK5arrow6Device8ToStringEv"></span><span id="_CPPv2NK5arrow6Device8ToStringEv"></span><span id="arrow::Device::ToStringC"></span><span class="target" id="classarrow_1_1_device_1a308203da24624f8ef8df7329f214ef6f"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ToString</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4NK5arrow6Device8ToStringEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>A human-readable description of the device. </p>
<p>The returned value should be detailed enough to distinguish between different instances, where necessary. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow6Device6EqualsERK6Device">
<span id="_CPPv3NK5arrow6Device6EqualsERK6Device"></span><span id="_CPPv2NK5arrow6Device6EqualsERK6Device"></span><span id="arrow::Device::Equals__DeviceCRC"></span><span class="target" id="classarrow_1_1_device_1acaaa334c017c8e0d097918a730d8544b"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Equals</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow6DeviceE" title="arrow::Device"><span class="n"><span class="pre">Device</span></span></a><span class="p"><span class="pre">&amp;</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4NK5arrow6Device6EqualsERK6Device" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Whether this instance points to the same device as another one. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow6Device9device_idEv">
<span id="_CPPv3NK5arrow6Device9device_idEv"></span><span id="_CPPv2NK5arrow6Device9device_idEv"></span><span id="arrow::Device::device_idC"></span><span class="target" id="classarrow_1_1_device_1a8fae1635edc9c3c0fcce442103b4ad42"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">device_id</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow6Device9device_idEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>A device ID to identify this device if there are multiple of this type. </p>
<p>If there is no “device_id” equivalent (such as for the main CPU device on non-numa systems) returns -1. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow6Device6is_cpuEv">
<span id="_CPPv3NK5arrow6Device6is_cpuEv"></span><span id="_CPPv2NK5arrow6Device6is_cpuEv"></span><span id="arrow::Device::is_cpuC"></span><span class="target" id="classarrow_1_1_device_1acd6a82de24ea679e2041159b18cfe294"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">is_cpu</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow6Device6is_cpuEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Whether this device is the main CPU device. </p>
<p>This shorthand method is very useful when deciding whether a memory address is CPU-accessible. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow6Device22default_memory_managerEv">
<span id="_CPPv3N5arrow6Device22default_memory_managerEv"></span><span id="_CPPv2N5arrow6Device22default_memory_managerEv"></span><span id="arrow::Device::default_memory_manager"></span><span class="target" id="classarrow_1_1_device_1a9615d7d1f5136d43bcf1061782197412"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow13MemoryManagerE" title="arrow::MemoryManager"><span class="n"><span class="pre">MemoryManager</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">default_memory_manager</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow6Device22default_memory_managerEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return a <a class="reference internal" href="#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a> instance tied to this device. </p>
<p>The returned instance uses default parameters for this device type’s <a class="reference internal" href="#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a> implementation. Some devices also allow constructing <a class="reference internal" href="#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a> instances with non-default parameters. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow6Device11device_typeEv">
<span id="_CPPv3NK5arrow6Device11device_typeEv"></span><span id="_CPPv2NK5arrow6Device11device_typeEv"></span><span id="arrow::Device::device_typeC"></span><span class="target" id="classarrow_1_1_device_1a92956811b8c4543b645dd831418d0975"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">DeviceAllocationType</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">device_type</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4NK5arrow6Device11device_typeEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the DeviceAllocationType of this device. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow6Device10MakeStreamEj">
<span id="_CPPv3N5arrow6Device10MakeStreamEj"></span><span id="_CPPv2N5arrow6Device10MakeStreamEj"></span><span id="arrow::Device::MakeStream__unsigned-i"></span><span class="target" id="classarrow_1_1_device_1ad1508fb8bc3120ab4d6e615f2c648f29"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6Device6StreamE" title="arrow::Device::Stream"><span class="n"><span class="pre">Stream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">MakeStream</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">flags</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow6Device10MakeStreamEj" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create a new device stream. </p>
<p>This should create the appropriate stream type for the device, derived from <a class="reference internal" href="#classarrow_1_1_device_1_1_stream"><span class="std std-ref">Device::Stream</span></a> to allow for stream ordered events and memory allocations. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow6Device10WrapStreamEPvN6Stream12release_fn_tE">
<span id="_CPPv3N5arrow6Device10WrapStreamEPvN6Stream12release_fn_tE"></span><span id="_CPPv2N5arrow6Device10WrapStreamEPvN6Stream12release_fn_tE"></span><span id="arrow::Device::WrapStream__voidP.Stream::release_fn_t"></span><span class="target" id="classarrow_1_1_device_1ad2f785d55729661522ca80062ae3e0c1"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6Device6StreamE" title="arrow::Device::Stream"><span class="n"><span class="pre">Stream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WrapStream</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">device_stream</span></span>, <a class="reference internal" href="#_CPPv4N5arrow6Device6StreamE" title="arrow::Device::Stream"><span class="n"><span class="pre">Stream</span></span></a><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">release_fn_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">release_fn</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow6Device10WrapStreamEPvN6Stream12release_fn_tE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Wrap an existing device stream alongside a release function. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>device_stream</strong> – a pointer to the stream to wrap </p></li>
<li><p><strong>release_fn</strong> – a function to call during destruction, <code class="docutils literal notranslate"><span class="pre">nullptr</span></code> or a no-op function can be passed to indicate ownership is maintained externally </p></li>
</ul>
</dd>
</dl>
</dd></dl>
</div>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow6Device6StreamE">
<span id="_CPPv3N5arrow6Device6StreamE"></span><span id="_CPPv2N5arrow6Device6StreamE"></span><span id="arrow::Device::Stream"></span><span class="target" id="classarrow_1_1_device_1_1_stream"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Stream</span></span></span><a class="headerlink" href="#_CPPv4N5arrow6Device6StreamE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>EXPERIMENTAL: An opaque wrapper for Device-specific streams. </p>
<p>In essence this is just a wrapper around a void* to represent the standard concept of a stream/queue on a device. Derived classes should be trivially constructible from it’s device-specific counterparts. </p>
<p>Subclassed by <a class="reference internal" href="cuda.html#classarrow_1_1cuda_1_1_cuda_device_1_1_stream"><span class="std std-ref">arrow::cuda::CudaDevice::Stream</span></a></p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow6Device6Stream9WaitEventERK9SyncEvent">
<span id="_CPPv3N5arrow6Device6Stream9WaitEventERK9SyncEvent"></span><span id="_CPPv2N5arrow6Device6Stream9WaitEventERK9SyncEvent"></span><span id="arrow::Device::Stream::WaitEvent__SyncEventCR"></span><span class="target" id="classarrow_1_1_device_1_1_stream_1a27bdf3accd18d90ae0cc7937dd80b8e7"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WaitEvent</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow6Device9SyncEventE" title="arrow::Device::SyncEvent"><span class="n"><span class="pre">SyncEvent</span></span></a><span class="p"><span class="pre">&amp;</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow6Device6Stream9WaitEventERK9SyncEvent" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Make the stream wait on the provided event. </p>
<p>Tells the stream that it should wait until the synchronization event is completed without blocking the CPU. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow6Device6Stream11SynchronizeEv">
<span id="_CPPv3NK5arrow6Device6Stream11SynchronizeEv"></span><span id="_CPPv2NK5arrow6Device6Stream11SynchronizeEv"></span><span id="arrow::Device::Stream::SynchronizeC"></span><span class="target" id="classarrow_1_1_device_1_1_stream_1a508857699b3521079ff883a525abe333"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Synchronize</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4NK5arrow6Device6Stream11SynchronizeEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Blocks the current thread until a stream’s remaining tasks are completed. </p>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow6Device9SyncEventE">
<span id="_CPPv3N5arrow6Device9SyncEventE"></span><span id="_CPPv2N5arrow6Device9SyncEventE"></span><span id="arrow::Device::SyncEvent"></span><span class="target" id="classarrow_1_1_device_1_1_sync_event"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SyncEvent</span></span></span><a class="headerlink" href="#_CPPv4N5arrow6Device9SyncEventE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>EXPERIMENTAL: An object that provides event/stream sync primitives. </p>
<p>Subclassed by <a class="reference internal" href="cuda.html#classarrow_1_1cuda_1_1_cuda_device_1_1_sync_event"><span class="std std-ref">arrow::cuda::CudaDevice::SyncEvent</span></a></p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow6Device9SyncEvent4WaitEv">
<span id="_CPPv3N5arrow6Device9SyncEvent4WaitEv"></span><span id="_CPPv2N5arrow6Device9SyncEvent4WaitEv"></span><span id="arrow::Device::SyncEvent::Wait"></span><span class="target" id="classarrow_1_1_device_1_1_sync_event_1a0cc740de466a17e136e9dcb42bb1ec2f"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Wait</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow6Device9SyncEvent4WaitEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Block until sync event is completed. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow6Device9SyncEvent6RecordERK6Stream">
<span id="_CPPv3N5arrow6Device9SyncEvent6RecordERK6Stream"></span><span id="_CPPv2N5arrow6Device9SyncEvent6RecordERK6Stream"></span><span id="arrow::Device::SyncEvent::Record__StreamCR"></span><span class="target" id="classarrow_1_1_device_1_1_sync_event_1a4343b6ec61f294a1dbd223dcad439439"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Record</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow6Device6StreamE" title="arrow::Device::Stream"><span class="n"><span class="pre">Stream</span></span></a><span class="p"><span class="pre">&amp;</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow6Device9SyncEvent6RecordERK6Stream" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Record the wrapped event on the stream so it triggers the event when the stream gets to that point in its queue. </p>
</dd></dl>
</div>
</dd></dl>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow9CPUDeviceE">
<span id="_CPPv3N5arrow9CPUDeviceE"></span><span id="_CPPv2N5arrow9CPUDeviceE"></span><span id="arrow::CPUDevice"></span><span class="target" id="classarrow_1_1_c_p_u_device"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CPUDevice</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N5arrow6DeviceE" title="arrow::Device"><span class="n"><span class="pre">Device</span></span></a><a class="headerlink" href="#_CPPv4N5arrow9CPUDeviceE" title="Permalink to this definition">#</a><br /></dt>
<dd><div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow9CPUDevice9type_nameEv">
<span id="_CPPv3NK5arrow9CPUDevice9type_nameEv"></span><span id="_CPPv2NK5arrow9CPUDevice9type_nameEv"></span><span id="arrow::CPUDevice::type_nameC"></span><span class="target" id="classarrow_1_1_c_p_u_device_1a56de6467569661983bf89cca4e23e313"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">type_name</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow9CPUDevice9type_nameEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>A shorthand for this device’s type. </p>
<p>The returned value is different for each device class, but is the same for all instances of a given class. It can be used as a replacement for RTTI. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow9CPUDevice8ToStringEv">
<span id="_CPPv3NK5arrow9CPUDevice8ToStringEv"></span><span id="_CPPv2NK5arrow9CPUDevice8ToStringEv"></span><span id="arrow::CPUDevice::ToStringC"></span><span class="target" id="classarrow_1_1_c_p_u_device_1af136696c33197fac051e3cca0688f31e"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ToString</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow9CPUDevice8ToStringEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>A human-readable description of the device. </p>
<p>The returned value should be detailed enough to distinguish between different instances, where necessary. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow9CPUDevice6EqualsERK6Device">
<span id="_CPPv3NK5arrow9CPUDevice6EqualsERK6Device"></span><span id="_CPPv2NK5arrow9CPUDevice6EqualsERK6Device"></span><span id="arrow::CPUDevice::Equals__DeviceCRC"></span><span class="target" id="classarrow_1_1_c_p_u_device_1a23a4f5100acda607a63371a89e5bb7e5"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Equals</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow6DeviceE" title="arrow::Device"><span class="n"><span class="pre">Device</span></span></a><span class="p"><span class="pre">&amp;</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow9CPUDevice6EqualsERK6Device" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Whether this instance points to the same device as another one. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow9CPUDevice11device_typeEv">
<span id="_CPPv3NK5arrow9CPUDevice11device_typeEv"></span><span id="_CPPv2NK5arrow9CPUDevice11device_typeEv"></span><span id="arrow::CPUDevice::device_typeC"></span><span class="target" id="classarrow_1_1_c_p_u_device_1a7b60c30cbaf9994348d6f46fcd1f6e37"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">DeviceAllocationType</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">device_type</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow9CPUDevice11device_typeEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the DeviceAllocationType of this device. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow9CPUDevice22default_memory_managerEv">
<span id="_CPPv3N5arrow9CPUDevice22default_memory_managerEv"></span><span id="_CPPv2N5arrow9CPUDevice22default_memory_managerEv"></span><span id="arrow::CPUDevice::default_memory_manager"></span><span class="target" id="classarrow_1_1_c_p_u_device_1ab5acfa03ea867c7b7fe4f903e8b19547"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow13MemoryManagerE" title="arrow::MemoryManager"><span class="n"><span class="pre">MemoryManager</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">default_memory_manager</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow9CPUDevice22default_memory_managerEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return a <a class="reference internal" href="#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a> instance tied to this device. </p>
<p>The returned instance uses default parameters for this device type’s <a class="reference internal" href="#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a> implementation. Some devices also allow constructing <a class="reference internal" href="#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a> instances with non-default parameters. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow9CPUDevice8InstanceEv">
<span id="_CPPv3N5arrow9CPUDevice8InstanceEv"></span><span id="_CPPv2N5arrow9CPUDevice8InstanceEv"></span><span id="arrow::CPUDevice::Instance"></span><span class="target" id="classarrow_1_1_c_p_u_device_1a2639c1933007a4c0b553b245c9a59896"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6DeviceE" title="arrow::Device"><span class="n"><span class="pre">Device</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Instance</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow9CPUDevice8InstanceEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the global <a class="reference internal" href="#classarrow_1_1_c_p_u_device"><span class="std std-ref">CPUDevice</span></a> instance. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow9CPUDevice14memory_managerEP10MemoryPool">
<span id="_CPPv3N5arrow9CPUDevice14memory_managerEP10MemoryPool"></span><span id="_CPPv2N5arrow9CPUDevice14memory_managerEP10MemoryPool"></span><span id="arrow::CPUDevice::memory_manager__MemoryPoolP"></span><span class="target" id="classarrow_1_1_c_p_u_device_1a477fdfe0a1f4400985dd0efe1da6ad34"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow13MemoryManagerE" title="arrow::MemoryManager"><span class="n"><span class="pre">MemoryManager</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">memory_manager</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv4N5arrow10MemoryPoolE" title="arrow::MemoryPool"><span class="n"><span class="pre">MemoryPool</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">pool</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow9CPUDevice14memory_managerEP10MemoryPool" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create a <a class="reference internal" href="#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a>. </p>
<p>The returned <a class="reference internal" href="#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a> will use the given <a class="reference internal" href="#classarrow_1_1_memory_pool"><span class="std std-ref">MemoryPool</span></a> for allocations. </p>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow26default_cpu_memory_managerEv">
<span id="_CPPv3N5arrow26default_cpu_memory_managerEv"></span><span id="_CPPv2N5arrow26default_cpu_memory_managerEv"></span><span id="arrow::default_cpu_memory_manager"></span><span class="target" id="namespacearrow_1a6945ae85a9bf9faebabefcb308098cc8"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow13MemoryManagerE" title="arrow::MemoryManager"><span class="n"><span class="pre">MemoryManager</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">default_cpu_memory_manager</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow26default_cpu_memory_managerEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the default CPU <a class="reference internal" href="#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a> instance. </p>
<p>The returned singleton instance uses the default <a class="reference internal" href="#classarrow_1_1_memory_pool"><span class="std std-ref">MemoryPool</span></a>. This function is a faster spelling of <code class="docutils literal notranslate"><a class="reference internal" href="#classarrow_1_1_c_p_u_device_1a2639c1933007a4c0b553b245c9a59896"><span class="std std-ref"><span class="pre">CPUDevice::Instance()</span></span></a><span class="pre">-&gt;default_memory_manager()</span></code>. </p>
</dd></dl>
</section>
<section id="memory-managers">
<h2>Memory Managers<a class="headerlink" href="#memory-managers" title="Permalink to this heading">#</a></h2>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow13MemoryManagerE">
<span id="_CPPv3N5arrow13MemoryManagerE"></span><span id="_CPPv2N5arrow13MemoryManagerE"></span><span id="arrow::MemoryManager"></span><span class="target" id="classarrow_1_1_memory_manager"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">MemoryManager</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">enable_shared_from_this</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow13MemoryManagerE" title="arrow::MemoryManager"><span class="n"><span class="pre">MemoryManager</span></span></a><span class="p"><span class="pre">&gt;</span></span><a class="headerlink" href="#_CPPv4N5arrow13MemoryManagerE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>EXPERIMENTAL: An object that provides memory management primitives. </p>
<p>A <a class="reference internal" href="#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a> is always tied to a particular <a class="reference internal" href="#classarrow_1_1_device"><span class="std std-ref">Device</span></a> instance. It can also have additional parameters (such as a <a class="reference internal" href="#classarrow_1_1_memory_pool"><span class="std std-ref">MemoryPool</span></a> to allocate CPU memory). </p>
<p>Subclassed by <a class="reference internal" href="#classarrow_1_1_c_p_u_memory_manager"><span class="std std-ref">arrow::CPUMemoryManager</span></a>, <a class="reference internal" href="cuda.html#classarrow_1_1cuda_1_1_cuda_memory_manager"><span class="std std-ref">arrow::cuda::CudaMemoryManager</span></a></p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow13MemoryManager6deviceEv">
<span id="_CPPv3NK5arrow13MemoryManager6deviceEv"></span><span id="_CPPv2NK5arrow13MemoryManager6deviceEv"></span><span id="arrow::MemoryManager::deviceC"></span><span class="target" id="classarrow_1_1_memory_manager_1a5b5e7539c2b6a3dcec4ed283a314d4a1"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6DeviceE" title="arrow::Device"><span class="n"><span class="pre">Device</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="sig-name descname"><span class="n"><span class="pre">device</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow13MemoryManager6deviceEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>The device this <a class="reference internal" href="#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a> is tied to. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow13MemoryManager6is_cpuEv">
<span id="_CPPv3NK5arrow13MemoryManager6is_cpuEv"></span><span id="_CPPv2NK5arrow13MemoryManager6is_cpuEv"></span><span id="arrow::MemoryManager::is_cpuC"></span><span class="target" id="classarrow_1_1_memory_manager_1abfed9ff4dc52b5952f43c1c43a830372"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">is_cpu</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow13MemoryManager6is_cpuEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Whether this <a class="reference internal" href="#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a> is tied to the main CPU device. </p>
<p>This shorthand method is very useful when deciding whether a memory address is CPU-accessible. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow13MemoryManager15GetBufferReaderENSt10shared_ptrI6BufferEE">
<span id="_CPPv3N5arrow13MemoryManager15GetBufferReaderENSt10shared_ptrI6BufferEE"></span><span id="_CPPv2N5arrow13MemoryManager15GetBufferReaderENSt10shared_ptrI6BufferEE"></span><span id="arrow::MemoryManager::GetBufferReader__std::shared_ptr:Buffer:"></span><span class="target" id="classarrow_1_1_memory_manager_1a95ff2d7345e5892f6f0750fc1b9543a5"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="io.html#_CPPv4N5arrow2io16RandomAccessFileE" title="arrow::io::RandomAccessFile"><span class="n"><span class="pre">RandomAccessFile</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">GetBufferReader</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">buf</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow13MemoryManager15GetBufferReaderENSt10shared_ptrI6BufferEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create a RandomAccessFile to read a particular buffer. </p>
<p>The given buffer must be tied to this <a class="reference internal" href="#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a>.</p>
<p>See also the <a class="reference internal" href="#classarrow_1_1_buffer_1ae2eded44b1379542966cd441a49fe953"><span class="std std-ref">Buffer::GetReader</span></a> shorthand. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow13MemoryManager15GetBufferWriterENSt10shared_ptrI6BufferEE">
<span id="_CPPv3N5arrow13MemoryManager15GetBufferWriterENSt10shared_ptrI6BufferEE"></span><span id="_CPPv2N5arrow13MemoryManager15GetBufferWriterENSt10shared_ptrI6BufferEE"></span><span id="arrow::MemoryManager::GetBufferWriter__std::shared_ptr:Buffer:"></span><span class="target" id="classarrow_1_1_memory_manager_1a7888256d7a122d4bbda0b1c6d36efc08"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="io.html#_CPPv4N5arrow2io12OutputStreamE" title="arrow::io::OutputStream"><span class="n"><span class="pre">OutputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">GetBufferWriter</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">buf</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow13MemoryManager15GetBufferWriterENSt10shared_ptrI6BufferEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create a OutputStream to write to a particular buffer. </p>
<p>The given buffer must be mutable and tied to this <a class="reference internal" href="#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a>. The returned stream object writes into the buffer’s underlying memory (but it won’t resize it).</p>
<p>See also the <a class="reference internal" href="#classarrow_1_1_buffer_1a3131f10cde81c53e4d6615eb5e4850ec"><span class="std std-ref">Buffer::GetWriter</span></a> shorthand. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow13MemoryManager14AllocateBufferE7int64_t">
<span id="_CPPv3N5arrow13MemoryManager14AllocateBufferE7int64_t"></span><span id="_CPPv2N5arrow13MemoryManager14AllocateBufferE7int64_t"></span><span id="arrow::MemoryManager::AllocateBuffer__int64_t"></span><span class="target" id="classarrow_1_1_memory_manager_1a9c1a82505267604131b0ec18cb8e6ba1"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">unique_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">AllocateBuffer</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow13MemoryManager14AllocateBufferE7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Allocate a (mutable) <a class="reference internal" href="#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a>. </p>
<p>The buffer will be allocated in the device’s memory. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow13MemoryManager19MakeDeviceSyncEventEv">
<span id="_CPPv3N5arrow13MemoryManager19MakeDeviceSyncEventEv"></span><span id="_CPPv2N5arrow13MemoryManager19MakeDeviceSyncEventEv"></span><span id="arrow::MemoryManager::MakeDeviceSyncEvent"></span><span class="target" id="classarrow_1_1_memory_manager_1a51b4530c0269229a5d74a16d0f83d082"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6DeviceE" title="arrow::Device"><span class="n"><span class="pre">Device</span></span></a><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N5arrow6Device9SyncEventE" title="arrow::Device::SyncEvent"><span class="n"><span class="pre">SyncEvent</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">MakeDeviceSyncEvent</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow13MemoryManager19MakeDeviceSyncEventEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create a new SyncEvent. </p>
<p>This version should construct the appropriate event for the device and provide the unique_ptr with the correct deleter for the event type. If the device does not require or work with any synchronization, it is allowed for it to return a nullptr. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow13MemoryManager19WrapDeviceSyncEventEPvN6Device9SyncEvent12release_fn_tE">
<span id="_CPPv3N5arrow13MemoryManager19WrapDeviceSyncEventEPvN6Device9SyncEvent12release_fn_tE"></span><span id="_CPPv2N5arrow13MemoryManager19WrapDeviceSyncEventEPvN6Device9SyncEvent12release_fn_tE"></span><span id="arrow::MemoryManager::WrapDeviceSyncEvent__voidP.Device::SyncEvent::release_fn_t"></span><span class="target" id="classarrow_1_1_memory_manager_1a6125dd11bc83736c4b2f230d15a0bb14"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6DeviceE" title="arrow::Device"><span class="n"><span class="pre">Device</span></span></a><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N5arrow6Device9SyncEventE" title="arrow::Device::SyncEvent"><span class="n"><span class="pre">SyncEvent</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WrapDeviceSyncEvent</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">sync_event</span></span>, <a class="reference internal" href="#_CPPv4N5arrow6DeviceE" title="arrow::Device"><span class="n"><span class="pre">Device</span></span></a><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N5arrow6Device9SyncEventE" title="arrow::Device::SyncEvent"><span class="n"><span class="pre">SyncEvent</span></span></a><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">release_fn_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">release_sync_event</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow13MemoryManager19WrapDeviceSyncEventEPvN6Device9SyncEvent12release_fn_tE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Wrap an event into a SyncEvent. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>sync_event</strong> – passed in sync_event (should be a pointer to the appropriate type) </p></li>
<li><p><strong>release_sync_event</strong> – destructor to free sync_event. <code class="docutils literal notranslate"><span class="pre">nullptr</span></code> may be passed to indicate that no destruction/freeing is necessary </p></li>
</ul>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow13MemoryManager10CopyBufferERKNSt10shared_ptrI6BufferEERKNSt10shared_ptrI13MemoryManagerEE">
<span id="_CPPv3N5arrow13MemoryManager10CopyBufferERKNSt10shared_ptrI6BufferEERKNSt10shared_ptrI13MemoryManagerEE"></span><span id="_CPPv2N5arrow13MemoryManager10CopyBufferERKNSt10shared_ptrI6BufferEERKNSt10shared_ptrI13MemoryManagerEE"></span><span id="arrow::MemoryManager::CopyBuffer__std::shared_ptr:Buffer:CR.std::shared_ptr:MemoryManager:CR"></span><span class="target" id="classarrow_1_1_memory_manager_1ade50a93d074fd3ccbddad215371784c2"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CopyBuffer</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">source</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow13MemoryManagerE" title="arrow::MemoryManager"><span class="n"><span class="pre">MemoryManager</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">to</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow13MemoryManager10CopyBufferERKNSt10shared_ptrI6BufferEERKNSt10shared_ptrI13MemoryManagerEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Copy a <a class="reference internal" href="#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a> to a destination <a class="reference internal" href="#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a>. </p>
<p>See also the <a class="reference internal" href="#classarrow_1_1_buffer_1a9dcc66ada966d56a9294531e72a0e1d9"><span class="std std-ref">Buffer::Copy</span></a> shorthand. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow13MemoryManager12CopyNonOwnedERK6BufferRKNSt10shared_ptrI13MemoryManagerEE">
<span id="_CPPv3N5arrow13MemoryManager12CopyNonOwnedERK6BufferRKNSt10shared_ptrI13MemoryManagerEE"></span><span id="_CPPv2N5arrow13MemoryManager12CopyNonOwnedERK6BufferRKNSt10shared_ptrI13MemoryManagerEE"></span><span id="arrow::MemoryManager::CopyNonOwned__BufferCR.std::shared_ptr:MemoryManager:CR"></span><span class="target" id="classarrow_1_1_memory_manager_1a6bb6d463db8b0d15400910318f2fb027"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">unique_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CopyNonOwned</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">source</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow13MemoryManagerE" title="arrow::MemoryManager"><span class="n"><span class="pre">MemoryManager</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">to</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow13MemoryManager12CopyNonOwnedERK6BufferRKNSt10shared_ptrI13MemoryManagerEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Copy a non-owned <a class="reference internal" href="#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a> to a destination <a class="reference internal" href="#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a>. </p>
<p>This is useful for cases where the source memory area is externally managed (its lifetime not tied to the source <a class="reference internal" href="#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a>), otherwise please use <a class="reference internal" href="#classarrow_1_1_memory_manager_1ade50a93d074fd3ccbddad215371784c2"><span class="std std-ref">CopyBuffer()</span></a>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow13MemoryManager10ViewBufferERKNSt10shared_ptrI6BufferEERKNSt10shared_ptrI13MemoryManagerEE">
<span id="_CPPv3N5arrow13MemoryManager10ViewBufferERKNSt10shared_ptrI6BufferEERKNSt10shared_ptrI13MemoryManagerEE"></span><span id="_CPPv2N5arrow13MemoryManager10ViewBufferERKNSt10shared_ptrI6BufferEERKNSt10shared_ptrI13MemoryManagerEE"></span><span id="arrow::MemoryManager::ViewBuffer__std::shared_ptr:Buffer:CR.std::shared_ptr:MemoryManager:CR"></span><span class="target" id="classarrow_1_1_memory_manager_1ab53a4d3f8077ca1df66a49f904b3ce43"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ViewBuffer</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">source</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow13MemoryManagerE" title="arrow::MemoryManager"><span class="n"><span class="pre">MemoryManager</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">to</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow13MemoryManager10ViewBufferERKNSt10shared_ptrI6BufferEERKNSt10shared_ptrI13MemoryManagerEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Make a no-copy <a class="reference internal" href="#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a> view in a destination <a class="reference internal" href="#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a>. </p>
<p>See also the <a class="reference internal" href="#classarrow_1_1_buffer_1ac4b959d7080e383ab0a9ff54d8dd9fa3"><span class="std std-ref">Buffer::View</span></a> shorthand. </p>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow16CPUMemoryManagerE">
<span id="_CPPv3N5arrow16CPUMemoryManagerE"></span><span id="_CPPv2N5arrow16CPUMemoryManagerE"></span><span id="arrow::CPUMemoryManager"></span><span class="target" id="classarrow_1_1_c_p_u_memory_manager"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CPUMemoryManager</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N5arrow13MemoryManagerE" title="arrow::MemoryManager"><span class="n"><span class="pre">MemoryManager</span></span></a><a class="headerlink" href="#_CPPv4N5arrow16CPUMemoryManagerE" title="Permalink to this definition">#</a><br /></dt>
<dd><div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow16CPUMemoryManager15GetBufferReaderENSt10shared_ptrI6BufferEE">
<span id="_CPPv3N5arrow16CPUMemoryManager15GetBufferReaderENSt10shared_ptrI6BufferEE"></span><span id="_CPPv2N5arrow16CPUMemoryManager15GetBufferReaderENSt10shared_ptrI6BufferEE"></span><span id="arrow::CPUMemoryManager::GetBufferReader__std::shared_ptr:Buffer:"></span><span class="target" id="classarrow_1_1_c_p_u_memory_manager_1a07924a8c0461e97e98e98c846af8c36c"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="io.html#_CPPv4N5arrow2io16RandomAccessFileE" title="arrow::io::RandomAccessFile"><span class="n"><span class="pre">RandomAccessFile</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">GetBufferReader</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">buf</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow16CPUMemoryManager15GetBufferReaderENSt10shared_ptrI6BufferEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create a RandomAccessFile to read a particular buffer. </p>
<p>The given buffer must be tied to this <a class="reference internal" href="#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a>.</p>
<p>See also the <a class="reference internal" href="#classarrow_1_1_buffer_1ae2eded44b1379542966cd441a49fe953"><span class="std std-ref">Buffer::GetReader</span></a> shorthand. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow16CPUMemoryManager15GetBufferWriterENSt10shared_ptrI6BufferEE">
<span id="_CPPv3N5arrow16CPUMemoryManager15GetBufferWriterENSt10shared_ptrI6BufferEE"></span><span id="_CPPv2N5arrow16CPUMemoryManager15GetBufferWriterENSt10shared_ptrI6BufferEE"></span><span id="arrow::CPUMemoryManager::GetBufferWriter__std::shared_ptr:Buffer:"></span><span class="target" id="classarrow_1_1_c_p_u_memory_manager_1a9e1fcfe610697191b005d836ffce0fcb"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="io.html#_CPPv4N5arrow2io12OutputStreamE" title="arrow::io::OutputStream"><span class="n"><span class="pre">OutputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">GetBufferWriter</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">buf</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow16CPUMemoryManager15GetBufferWriterENSt10shared_ptrI6BufferEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create a OutputStream to write to a particular buffer. </p>
<p>The given buffer must be mutable and tied to this <a class="reference internal" href="#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a>. The returned stream object writes into the buffer’s underlying memory (but it won’t resize it).</p>
<p>See also the <a class="reference internal" href="#classarrow_1_1_buffer_1a3131f10cde81c53e4d6615eb5e4850ec"><span class="std std-ref">Buffer::GetWriter</span></a> shorthand. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow16CPUMemoryManager14AllocateBufferE7int64_t">
<span id="_CPPv3N5arrow16CPUMemoryManager14AllocateBufferE7int64_t"></span><span id="_CPPv2N5arrow16CPUMemoryManager14AllocateBufferE7int64_t"></span><span id="arrow::CPUMemoryManager::AllocateBuffer__int64_t"></span><span class="target" id="classarrow_1_1_c_p_u_memory_manager_1ae9430fa2b320c641aa41cf41ba23c91e"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">unique_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">AllocateBuffer</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow16CPUMemoryManager14AllocateBufferE7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Allocate a (mutable) <a class="reference internal" href="#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a>. </p>
<p>The buffer will be allocated in the device’s memory. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow16CPUMemoryManager4poolEv">
<span id="_CPPv3NK5arrow16CPUMemoryManager4poolEv"></span><span id="_CPPv2NK5arrow16CPUMemoryManager4poolEv"></span><span id="arrow::CPUMemoryManager::poolC"></span><span class="target" id="classarrow_1_1_c_p_u_memory_manager_1a9e2959997a429add03ba6d58f364d1be"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow10MemoryPoolE" title="arrow::MemoryPool"><span class="n"><span class="pre">MemoryPool</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">pool</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow16CPUMemoryManager4poolEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the <a class="reference internal" href="#classarrow_1_1_memory_pool"><span class="std std-ref">MemoryPool</span></a> associated with this <a class="reference internal" href="#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a>. </p>
</dd></dl>
</div>
</dd></dl>
</section>
<section id="buffers">
<h2>Buffers<a class="headerlink" href="#buffers" title="Permalink to this heading">#</a></h2>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow6BufferE">
<span id="_CPPv3N5arrow6BufferE"></span><span id="_CPPv2N5arrow6BufferE"></span><span id="arrow::Buffer"></span><span class="target" id="classarrow_1_1_buffer"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Buffer</span></span></span><a class="headerlink" href="#_CPPv4N5arrow6BufferE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Object containing a pointer to a piece of contiguous memory with a particular size. </p>
<p>Buffers have two related notions of length: size and capacity. Size is the number of bytes that might have valid data. Capacity is the number of bytes that were allocated for the buffer in total.</p>
<p>The <a class="reference internal" href="#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a> base class does not own its memory, but subclasses often do.</p>
<p>The following invariant is always true: Size &lt;= Capacity </p>
<p>Subclassed by <a class="reference internal" href="#classarrow_1_1_mutable_buffer"><span class="std std-ref">arrow::MutableBuffer</span></a>, <a class="reference internal" href="cuda.html#classarrow_1_1cuda_1_1_cuda_buffer"><span class="std std-ref">arrow::cuda::CudaBuffer</span></a></p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow6Buffer6BufferEPK7uint8_t7int64_t">
<span id="_CPPv3N5arrow6Buffer6BufferEPK7uint8_t7int64_t"></span><span id="_CPPv2N5arrow6Buffer6BufferEPK7uint8_t7int64_t"></span><span id="arrow::Buffer::Buffer__uint8_tCP.int64_t"></span><span class="target" id="classarrow_1_1_buffer_1a801078c559b0c351f1ca5a6b6a04488f"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Buffer</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow6Buffer6BufferEPK7uint8_t7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Construct from buffer and size without copying memory. </p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The passed memory must be kept alive through some other means </p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>data</strong><strong>[in]</strong> a memory buffer </p></li>
<li><p><strong>size</strong><strong>[in]</strong> buffer size</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow6Buffer6BufferENSt11string_viewE">
<span id="_CPPv3N5arrow6Buffer6BufferENSt11string_viewE"></span><span id="_CPPv2N5arrow6Buffer6BufferENSt11string_viewE"></span><span id="arrow::Buffer::Buffer__std::string_view"></span><span class="target" id="classarrow_1_1_buffer_1ac0696470a69fb1cacc4894ecbbe2a006"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">explicit</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Buffer</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string_view</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">data</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow6Buffer6BufferENSt11string_viewE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Construct from string_view without copying memory. </p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The memory viewed by data must not be deallocated in the lifetime of the <a class="reference internal" href="#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a>; temporary rvalue strings must be stored in an lvalue somewhere </p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>data</strong><strong>[in]</strong> a string_view object</p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow6Buffer6BufferERKNSt10shared_ptrI6BufferEEK7int64_tK7int64_t">
<span id="_CPPv3N5arrow6Buffer6BufferERKNSt10shared_ptrI6BufferEEK7int64_tK7int64_t"></span><span id="_CPPv2N5arrow6Buffer6BufferERKNSt10shared_ptrI6BufferEEK7int64_tK7int64_t"></span><span id="arrow::Buffer::Buffer__std::shared_ptr:Buffer:CR.int64_tC.int64_tC"></span><span class="target" id="classarrow_1_1_buffer_1af694696afedb9313cf5dc874ffa9a453"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Buffer</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6Buffer6BufferERKNSt10shared_ptrI6BufferEEK7int64_tK7int64_t" title="arrow::Buffer::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">parent</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">offset</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow6Buffer6BufferERKNSt10shared_ptrI6BufferEEK7int64_tK7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>An offset into data that is owned by another buffer, but we want to be able to retain a valid pointer to it even after other shared_ptr’s to the parent buffer have been destroyed. </p>
<p>This method makes no assertions about alignment or padding of the buffer but in general we expected buffers to be aligned and padded to 64 bytes. In the future we might add utility methods to help determine if a buffer satisfies this contract. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow6Buffer11ToHexStringEv">
<span id="_CPPv3N5arrow6Buffer11ToHexStringEv"></span><span id="_CPPv2N5arrow6Buffer11ToHexStringEv"></span><span id="arrow::Buffer::ToHexString"></span><span class="target" id="classarrow_1_1_buffer_1adf6316bf6733c0f308dfa8f6db540b19"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ToHexString</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow6Buffer11ToHexStringEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Construct a new std::string with a hexadecimal representation of the buffer. </p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>std::string </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow6Buffer6EqualsERK6Buffer7int64_t">
<span id="_CPPv3NK5arrow6Buffer6EqualsERK6Buffer7int64_t"></span><span id="_CPPv2NK5arrow6Buffer6EqualsERK6Buffer7int64_t"></span><span id="arrow::Buffer::Equals__BufferCR.int64_tC"></span><span class="target" id="classarrow_1_1_buffer_1a94918db73183b750716a07133dd8384d"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Equals</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">other</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow6Buffer6EqualsERK6Buffer7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return true if both buffers are the same size and contain the same bytes up to the number of compared bytes. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow6Buffer6EqualsERK6Buffer">
<span id="_CPPv3NK5arrow6Buffer6EqualsERK6Buffer"></span><span id="_CPPv2NK5arrow6Buffer6EqualsERK6Buffer"></span><span id="arrow::Buffer::Equals__BufferCRC"></span><span class="target" id="classarrow_1_1_buffer_1a0d3d3bd95a3297046a6ab24f5e957bfd"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Equals</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">other</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow6Buffer6EqualsERK6Buffer" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return true if both buffers are the same size and contain the same bytes. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow6Buffer9CopySliceEK7int64_tK7int64_tP10MemoryPool">
<span id="_CPPv3NK5arrow6Buffer9CopySliceEK7int64_tK7int64_tP10MemoryPool"></span><span id="_CPPv2NK5arrow6Buffer9CopySliceEK7int64_tK7int64_tP10MemoryPool"></span><span id="arrow::Buffer::CopySlice__int64_tC.int64_tC.MemoryPoolPC"></span><span class="target" id="classarrow_1_1_buffer_1a8e6500a2eb6667f2e7ebf0277627d435"></span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CopySlice</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">start</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span>, <a class="reference internal" href="#_CPPv4N5arrow10MemoryPoolE" title="arrow::MemoryPool"><span class="n"><span class="pre">MemoryPool</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">pool</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow19default_memory_poolEv" title="arrow::default_memory_pool"><span class="n"><span class="pre">default_memory_pool</span></span></a><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow6Buffer9CopySliceEK7int64_tK7int64_tP10MemoryPool" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Copy a section of the buffer into a new <a class="reference internal" href="#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow6Buffer11ZeroPaddingEv">
<span id="_CPPv3N5arrow6Buffer11ZeroPaddingEv"></span><span id="_CPPv2N5arrow6Buffer11ZeroPaddingEv"></span><span id="arrow::Buffer::ZeroPadding"></span><span class="target" id="classarrow_1_1_buffer_1a885f7b3329f3adb43a826e9403732a15"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ZeroPadding</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow6Buffer11ZeroPaddingEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Zero bytes in padding, i.e. bytes between size_ and capacity_. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow6Buffer8ToStringEv">
<span id="_CPPv3NK5arrow6Buffer8ToStringEv"></span><span id="_CPPv2NK5arrow6Buffer8ToStringEv"></span><span id="arrow::Buffer::ToStringC"></span><span class="target" id="classarrow_1_1_buffer_1a90034bddee753d83af07e97cdd252b8f"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ToString</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow6Buffer8ToStringEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Copy buffer contents into a new std::string. </p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Can throw std::bad_alloc if buffer is large </p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>std::string </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow6BuffercvNSt11string_viewEEv">
<span id="_CPPv3NK5arrow6BuffercvNSt11string_viewEEv"></span><span id="_CPPv2NK5arrow6BuffercvNSt11string_viewEEv"></span><span id="arrow::Buffer::castto-std::string_view-operatorC"></span><span class="target" id="classarrow_1_1_buffer_1a7bef733098885b0c88d8dbf4acadfe02"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">explicit</span></span><span class="w"> </span><span class="sig-name descname"><span class="k"><span class="pre">operator</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string_view</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow6BuffercvNSt11string_viewEEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>View buffer contents as a std::string_view. </p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>std::string_view </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow6Buffer4dataEv">
<span id="_CPPv3NK5arrow6Buffer4dataEv"></span><span id="_CPPv2NK5arrow6Buffer4dataEv"></span><span id="arrow::Buffer::dataC"></span><span class="target" id="classarrow_1_1_buffer_1a81c3dd8c11dd804be2ada6df5ce8fad2"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">data</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow6Buffer4dataEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return a pointer to the buffer’s data. </p>
<p>The buffer has to be a CPU buffer (<code class="docutils literal notranslate"><a class="reference internal" href="#classarrow_1_1_buffer_1ad349be0b3ddf33c20e96501ad64e1ff6"><span class="std std-ref"><span class="pre">is_cpu()</span></span></a></code> is true). Otherwise, an assertion may be thrown or a null pointer may be returned.</p>
<p>To get the buffer’s data address regardless of its device, call <code class="docutils literal notranslate"><a class="reference internal" href="#classarrow_1_1_buffer_1a48683d9fd81454ba10ea0046775f38f3"><span class="std std-ref"><span class="pre">address()</span></span></a></code>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4I0ENK5arrow6Buffer7data_asEPK1Tv">
<span id="_CPPv3I0ENK5arrow6Buffer7data_asEv"></span><span id="_CPPv2I0ENK5arrow6Buffer7data_asEv"></span><span class="k"><span class="pre">template</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">typename</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">T</span></span></span><span class="p"><span class="pre">&gt;</span></span><br /><span class="target" id="classarrow_1_1_buffer_1ad474eaf12dde64281dcca79a75fbac1c"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4I0ENK5arrow6Buffer7data_asEPK1Tv" title="arrow::Buffer::data_as::T"><span class="n"><span class="pre">T</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">data_as</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4I0ENK5arrow6Buffer7data_asEPK1Tv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return a pointer to the buffer’s data cast to a specific type. </p>
<p>The buffer has to be a CPU buffer (<code class="docutils literal notranslate"><a class="reference internal" href="#classarrow_1_1_buffer_1ad349be0b3ddf33c20e96501ad64e1ff6"><span class="std std-ref"><span class="pre">is_cpu()</span></span></a></code> is true). Otherwise, an assertion may be thrown or a null pointer may be returned. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4I0ENK5arrow6Buffer7span_asEN4util4spanIK1TEEv">
<span id="_CPPv3I0ENK5arrow6Buffer7span_asEv"></span><span id="_CPPv2I0ENK5arrow6Buffer7span_asEv"></span><span class="k"><span class="pre">template</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">typename</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">T</span></span></span><span class="p"><span class="pre">&gt;</span></span><br /><span class="target" id="classarrow_1_1_buffer_1a295a56dd6b92fd648aeb9f87ad189747"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">util</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">span</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4I0ENK5arrow6Buffer7span_asEN4util4spanIK1TEEv" title="arrow::Buffer::span_as::T"><span class="n"><span class="pre">T</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">span_as</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4I0ENK5arrow6Buffer7span_asEN4util4spanIK1TEEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the buffer’s data as a span. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow6Buffer12mutable_dataEv">
<span id="_CPPv3N5arrow6Buffer12mutable_dataEv"></span><span id="_CPPv2N5arrow6Buffer12mutable_dataEv"></span><span id="arrow::Buffer::mutable_data"></span><span class="target" id="classarrow_1_1_buffer_1a5a9cb9324d3f7e323eb070b553c925aa"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">mutable_data</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow6Buffer12mutable_dataEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return a writable pointer to the buffer’s data. </p>
<p>The buffer has to be a mutable CPU buffer (<code class="docutils literal notranslate"><a class="reference internal" href="#classarrow_1_1_buffer_1ad349be0b3ddf33c20e96501ad64e1ff6"><span class="std std-ref"><span class="pre">is_cpu()</span></span></a></code> and <code class="docutils literal notranslate"><a class="reference internal" href="#classarrow_1_1_buffer_1a8244f9c354364788161f11bedc6f2ab9"><span class="std std-ref"><span class="pre">is_mutable()</span></span></a></code> are true). Otherwise, an assertion may be thrown or a null pointer may be returned.</p>
<p>To get the buffer’s mutable data address regardless of its device, call <code class="docutils literal notranslate"><a class="reference internal" href="#classarrow_1_1_buffer_1ab7a69ac4d88bd02c39fbe57225ff387a"><span class="std std-ref"><span class="pre">mutable_address()</span></span></a></code>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4I0EN5arrow6Buffer15mutable_data_asEP1Tv">
<span id="_CPPv3I0EN5arrow6Buffer15mutable_data_asEv"></span><span id="_CPPv2I0EN5arrow6Buffer15mutable_data_asEv"></span><span class="k"><span class="pre">template</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">typename</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">T</span></span></span><span class="p"><span class="pre">&gt;</span></span><br /><span class="target" id="classarrow_1_1_buffer_1a5632842824563ae23ec4349c94d4237e"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4I0EN5arrow6Buffer15mutable_data_asEP1Tv" title="arrow::Buffer::mutable_data_as::T"><span class="n"><span class="pre">T</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">mutable_data_as</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5arrow6Buffer15mutable_data_asEP1Tv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return a writable pointer to the buffer’s data cast to a specific type. </p>
<p>The buffer has to be a mutable CPU buffer (<code class="docutils literal notranslate"><a class="reference internal" href="#classarrow_1_1_buffer_1ad349be0b3ddf33c20e96501ad64e1ff6"><span class="std std-ref"><span class="pre">is_cpu()</span></span></a></code> and <code class="docutils literal notranslate"><a class="reference internal" href="#classarrow_1_1_buffer_1a8244f9c354364788161f11bedc6f2ab9"><span class="std std-ref"><span class="pre">is_mutable()</span></span></a></code> are true). Otherwise, an assertion may be thrown or a null pointer may be returned. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4I0EN5arrow6Buffer15mutable_span_asEN4util4spanI1TEEv">
<span id="_CPPv3I0EN5arrow6Buffer15mutable_span_asEv"></span><span id="_CPPv2I0EN5arrow6Buffer15mutable_span_asEv"></span><span class="k"><span class="pre">template</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">typename</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">T</span></span></span><span class="p"><span class="pre">&gt;</span></span><br /><span class="target" id="classarrow_1_1_buffer_1ad672c7bc4c22380d97c998fc3cc1d15b"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">util</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">span</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4I0EN5arrow6Buffer15mutable_span_asEN4util4spanI1TEEv" title="arrow::Buffer::mutable_span_as::T"><span class="n"><span class="pre">T</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">mutable_span_as</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5arrow6Buffer15mutable_span_asEN4util4spanI1TEEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the buffer’s mutable data as a span. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow6Buffer7addressEv">
<span id="_CPPv3NK5arrow6Buffer7addressEv"></span><span id="_CPPv2NK5arrow6Buffer7addressEv"></span><span id="arrow::Buffer::addressC"></span><span class="target" id="classarrow_1_1_buffer_1a48683d9fd81454ba10ea0046775f38f3"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">uintptr_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">address</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow6Buffer7addressEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the device address of the buffer’s data. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow6Buffer15mutable_addressEv">
<span id="_CPPv3NK5arrow6Buffer15mutable_addressEv"></span><span id="_CPPv2NK5arrow6Buffer15mutable_addressEv"></span><span id="arrow::Buffer::mutable_addressC"></span><span class="target" id="classarrow_1_1_buffer_1ab7a69ac4d88bd02c39fbe57225ff387a"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">uintptr_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">mutable_address</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow6Buffer15mutable_addressEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return a writable device address to the buffer’s data. </p>
<p>The buffer has to be a mutable buffer (<code class="docutils literal notranslate"><a class="reference internal" href="#classarrow_1_1_buffer_1a8244f9c354364788161f11bedc6f2ab9"><span class="std std-ref"><span class="pre">is_mutable()</span></span></a></code> is true). Otherwise, an assertion may be thrown or 0 may be returned. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow6Buffer4sizeEv">
<span id="_CPPv3NK5arrow6Buffer4sizeEv"></span><span id="_CPPv2NK5arrow6Buffer4sizeEv"></span><span id="arrow::Buffer::sizeC"></span><span class="target" id="classarrow_1_1_buffer_1a2a49871341c300996a39145d22aa8054"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">size</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow6Buffer4sizeEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the buffer’s size in bytes. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow6Buffer8capacityEv">
<span id="_CPPv3NK5arrow6Buffer8capacityEv"></span><span id="_CPPv2NK5arrow6Buffer8capacityEv"></span><span id="arrow::Buffer::capacityC"></span><span class="target" id="classarrow_1_1_buffer_1a4c75902129b5f2fb471fd166907361dc"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">capacity</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow6Buffer8capacityEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the buffer’s capacity (number of allocated bytes) </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow6Buffer6is_cpuEv">
<span id="_CPPv3NK5arrow6Buffer6is_cpuEv"></span><span id="_CPPv2NK5arrow6Buffer6is_cpuEv"></span><span id="arrow::Buffer::is_cpuC"></span><span class="target" id="classarrow_1_1_buffer_1ad349be0b3ddf33c20e96501ad64e1ff6"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">is_cpu</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow6Buffer6is_cpuEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Whether the buffer is directly CPU-accessible. </p>
<p>If this function returns true, you can read directly from the buffer’s <code class="docutils literal notranslate"><a class="reference internal" href="#classarrow_1_1_buffer_1a81c3dd8c11dd804be2ada6df5ce8fad2"><span class="std std-ref"><span class="pre">data()</span></span></a></code> pointer. Otherwise, you’ll have to <code class="docutils literal notranslate"><a class="reference internal" href="#classarrow_1_1_buffer_1ac4b959d7080e383ab0a9ff54d8dd9fa3"><span class="std std-ref"><span class="pre">View()</span></span></a></code> or <code class="docutils literal notranslate"><a class="reference internal" href="#classarrow_1_1_buffer_1a9dcc66ada966d56a9294531e72a0e1d9"><span class="std std-ref"><span class="pre">Copy()</span></span></a></code> it. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow6Buffer10is_mutableEv">
<span id="_CPPv3NK5arrow6Buffer10is_mutableEv"></span><span id="_CPPv2NK5arrow6Buffer10is_mutableEv"></span><span id="arrow::Buffer::is_mutableC"></span><span class="target" id="classarrow_1_1_buffer_1a8244f9c354364788161f11bedc6f2ab9"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">is_mutable</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow6Buffer10is_mutableEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Whether the buffer is mutable. </p>
<p>If this function returns true, you are allowed to modify buffer contents using the pointer returned by <code class="docutils literal notranslate"><a class="reference internal" href="#classarrow_1_1_buffer_1a5a9cb9324d3f7e323eb070b553c925aa"><span class="std std-ref"><span class="pre">mutable_data()</span></span></a></code> or <code class="docutils literal notranslate"><a class="reference internal" href="#classarrow_1_1_buffer_1ab7a69ac4d88bd02c39fbe57225ff387a"><span class="std std-ref"><span class="pre">mutable_address()</span></span></a></code>. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow6Buffer10FromStringENSt6stringE">
<span id="_CPPv3N5arrow6Buffer10FromStringENSt6stringE"></span><span id="_CPPv2N5arrow6Buffer10FromStringENSt6stringE"></span><span id="arrow::Buffer::FromString__ss"></span><span class="target" id="classarrow_1_1_buffer_1aa88d832230101259ad4f06cbb4c27582"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">FromString</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">data</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow6Buffer10FromStringENSt6stringE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Construct an immutable buffer that takes ownership of the contents of an std::string (without copying it). </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>data</strong><strong>[in]</strong> a string to own </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>a new <a class="reference internal" href="#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a> instance </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4I0EN5arrow6Buffer10FromVectorENSt10shared_ptrI6BufferEENSt6vectorI1TEE">
<span id="_CPPv3I0EN5arrow6Buffer10FromVectorENSt6vectorI1TEE"></span><span id="_CPPv2I0EN5arrow6Buffer10FromVectorENSt6vectorI1TEE"></span><span class="k"><span class="pre">template</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">typename</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">T</span></span></span><span class="p"><span class="pre">&gt;</span></span><br /><span class="target" id="classarrow_1_1_buffer_1a5c26bc4740832643dc63bd1bbc58adbd"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">FromVector</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4I0EN5arrow6Buffer10FromVectorENSt10shared_ptrI6BufferEENSt6vectorI1TEE" title="arrow::Buffer::FromVector::T"><span class="n"><span class="pre">T</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">vec</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5arrow6Buffer10FromVectorENSt10shared_ptrI6BufferEENSt6vectorI1TEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Construct an immutable buffer that takes ownership of the contents of an std::vector (without copying it). </p>
<p>Only vectors of TrivialType objects (integers, floating point numbers, …) can be wrapped by this function.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>vec</strong><strong>[in]</strong> a vector to own </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>a new <a class="reference internal" href="#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a> instance </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4I00EN5arrow6Buffer4WrapENSt10shared_ptrI6BufferEEPK1T8SizeType">
<span id="_CPPv3I00EN5arrow6Buffer4WrapEPK1T8SizeType"></span><span id="_CPPv2I00EN5arrow6Buffer4WrapEPK1T8SizeType"></span><span class="k"><span class="pre">template</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">typename</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">T</span></span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">typename</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SizeType</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="p"><span class="pre">&gt;</span></span><br /><span class="target" id="classarrow_1_1_buffer_1abd877e4c900427798762d0abaa92b679"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Wrap</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4I00EN5arrow6Buffer4WrapENSt10shared_ptrI6BufferEEPK1T8SizeType" title="arrow::Buffer::Wrap::T"><span class="n"><span class="pre">T</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <a class="reference internal" href="#_CPPv4I00EN5arrow6Buffer4WrapENSt10shared_ptrI6BufferEEPK1T8SizeType" title="arrow::Buffer::Wrap::SizeType"><span class="n"><span class="pre">SizeType</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I00EN5arrow6Buffer4WrapENSt10shared_ptrI6BufferEEPK1T8SizeType" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create buffer referencing typed memory with some length without copying. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>data</strong><strong>[in]</strong> the typed memory as C array </p></li>
<li><p><strong>length</strong><strong>[in]</strong> the number of values in the array </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>a new shared_ptr&lt;Buffer&gt; </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4I0EN5arrow6Buffer4WrapENSt10shared_ptrI6BufferEERKNSt6vectorI1TEE">
<span id="_CPPv3I0EN5arrow6Buffer4WrapERKNSt6vectorI1TEE"></span><span id="_CPPv2I0EN5arrow6Buffer4WrapERKNSt6vectorI1TEE"></span><span class="k"><span class="pre">template</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">typename</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">T</span></span></span><span class="p"><span class="pre">&gt;</span></span><br /><span class="target" id="classarrow_1_1_buffer_1a62d1926a69dd12ce6821dd8c96eafea2"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Wrap</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4I0EN5arrow6Buffer4WrapENSt10shared_ptrI6BufferEERKNSt6vectorI1TEE" title="arrow::Buffer::Wrap::T"><span class="n"><span class="pre">T</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">data</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5arrow6Buffer4WrapENSt10shared_ptrI6BufferEERKNSt6vectorI1TEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create buffer referencing std::vector with some length without copying. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>data</strong><strong>[in]</strong> the vector to be referenced. If this vector is changed, the buffer may become invalid </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>a new shared_ptr&lt;Buffer&gt; </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow6Buffer9GetReaderENSt10shared_ptrI6BufferEE">
<span id="_CPPv3N5arrow6Buffer9GetReaderENSt10shared_ptrI6BufferEE"></span><span id="_CPPv2N5arrow6Buffer9GetReaderENSt10shared_ptrI6BufferEE"></span><span id="arrow::Buffer::GetReader__std::shared_ptr:Buffer:"></span><span class="target" id="classarrow_1_1_buffer_1ae2eded44b1379542966cd441a49fe953"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="io.html#_CPPv4N5arrow2io16RandomAccessFileE" title="arrow::io::RandomAccessFile"><span class="n"><span class="pre">RandomAccessFile</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">GetReader</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow6Buffer9GetReaderENSt10shared_ptrI6BufferEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Get a RandomAccessFile for reading a buffer. </p>
<p>The returned file object reads from this buffer’s underlying memory. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow6Buffer9GetWriterENSt10shared_ptrI6BufferEE">
<span id="_CPPv3N5arrow6Buffer9GetWriterENSt10shared_ptrI6BufferEE"></span><span id="_CPPv2N5arrow6Buffer9GetWriterENSt10shared_ptrI6BufferEE"></span><span id="arrow::Buffer::GetWriter__std::shared_ptr:Buffer:"></span><span class="target" id="classarrow_1_1_buffer_1a3131f10cde81c53e4d6615eb5e4850ec"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="io.html#_CPPv4N5arrow2io12OutputStreamE" title="arrow::io::OutputStream"><span class="n"><span class="pre">OutputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">GetWriter</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow6Buffer9GetWriterENSt10shared_ptrI6BufferEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Get a OutputStream for writing to a buffer. </p>
<p>The buffer must be mutable. The returned stream object writes into the buffer’s underlying memory (but it won’t resize it). </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow6Buffer4CopyENSt10shared_ptrI6BufferEERKNSt10shared_ptrI13MemoryManagerEE">
<span id="_CPPv3N5arrow6Buffer4CopyENSt10shared_ptrI6BufferEERKNSt10shared_ptrI13MemoryManagerEE"></span><span id="_CPPv2N5arrow6Buffer4CopyENSt10shared_ptrI6BufferEERKNSt10shared_ptrI13MemoryManagerEE"></span><span id="arrow::Buffer::Copy__std::shared_ptr:Buffer:.std::shared_ptr:MemoryManager:CR"></span><span class="target" id="classarrow_1_1_buffer_1a9dcc66ada966d56a9294531e72a0e1d9"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Copy</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">source</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow13MemoryManagerE" title="arrow::MemoryManager"><span class="n"><span class="pre">MemoryManager</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">to</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow6Buffer4CopyENSt10shared_ptrI6BufferEERKNSt10shared_ptrI13MemoryManagerEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Copy buffer. </p>
<p>The buffer contents will be copied into a new buffer allocated by the given <a class="reference internal" href="#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a>. This function supports cross-device copies. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow6Buffer12CopyNonOwnedERK6BufferRKNSt10shared_ptrI13MemoryManagerEE">
<span id="_CPPv3N5arrow6Buffer12CopyNonOwnedERK6BufferRKNSt10shared_ptrI13MemoryManagerEE"></span><span id="_CPPv2N5arrow6Buffer12CopyNonOwnedERK6BufferRKNSt10shared_ptrI13MemoryManagerEE"></span><span id="arrow::Buffer::CopyNonOwned__BufferCR.std::shared_ptr:MemoryManager:CR"></span><span class="target" id="classarrow_1_1_buffer_1ace296f95fd0704f05d9b48dd840126fe"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">unique_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CopyNonOwned</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">source</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow13MemoryManagerE" title="arrow::MemoryManager"><span class="n"><span class="pre">MemoryManager</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">to</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow6Buffer12CopyNonOwnedERK6BufferRKNSt10shared_ptrI13MemoryManagerEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Copy a non-owned buffer. </p>
<p>This is useful for cases where the source memory area is externally managed (its lifetime not tied to the source <a class="reference internal" href="#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a>), otherwise please use <a class="reference internal" href="#classarrow_1_1_buffer_1a9dcc66ada966d56a9294531e72a0e1d9"><span class="std std-ref">Copy()</span></a>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow6Buffer4ViewENSt10shared_ptrI6BufferEERKNSt10shared_ptrI13MemoryManagerEE">
<span id="_CPPv3N5arrow6Buffer4ViewENSt10shared_ptrI6BufferEERKNSt10shared_ptrI13MemoryManagerEE"></span><span id="_CPPv2N5arrow6Buffer4ViewENSt10shared_ptrI6BufferEERKNSt10shared_ptrI13MemoryManagerEE"></span><span id="arrow::Buffer::View__std::shared_ptr:Buffer:.std::shared_ptr:MemoryManager:CR"></span><span class="target" id="classarrow_1_1_buffer_1ac4b959d7080e383ab0a9ff54d8dd9fa3"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">View</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">source</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow13MemoryManagerE" title="arrow::MemoryManager"><span class="n"><span class="pre">MemoryManager</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">to</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow6Buffer4ViewENSt10shared_ptrI6BufferEERKNSt10shared_ptrI13MemoryManagerEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>View buffer. </p>
<p>Return a <a class="reference internal" href="#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a> that reflects this buffer, seen potentially from another device, without making an explicit copy of the contents. The underlying mechanism is typically implemented by the kernel or device driver, and may involve lazy caching of parts of the buffer contents on the destination device’s memory.</p>
<p>If a non-copy view is unsupported for the buffer on the given device, nullptr is returned. An error can be returned if some low-level operation fails (such as an out-of-memory condition). </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow6Buffer10ViewOrCopyENSt10shared_ptrI6BufferEERKNSt10shared_ptrI13MemoryManagerEE">
<span id="_CPPv3N5arrow6Buffer10ViewOrCopyENSt10shared_ptrI6BufferEERKNSt10shared_ptrI13MemoryManagerEE"></span><span id="_CPPv2N5arrow6Buffer10ViewOrCopyENSt10shared_ptrI6BufferEERKNSt10shared_ptrI13MemoryManagerEE"></span><span id="arrow::Buffer::ViewOrCopy__std::shared_ptr:Buffer:.std::shared_ptr:MemoryManager:CR"></span><span class="target" id="classarrow_1_1_buffer_1ac54ad71b05ab0d1847bc6b8921399752"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ViewOrCopy</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">source</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow13MemoryManagerE" title="arrow::MemoryManager"><span class="n"><span class="pre">MemoryManager</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">to</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow6Buffer10ViewOrCopyENSt10shared_ptrI6BufferEERKNSt10shared_ptrI13MemoryManagerEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>View or copy buffer. </p>
<p>Try to view buffer contents on the given <a class="reference internal" href="#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a>’s device, but fall back to copying if a no-copy view isn’t supported. </p>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow13MutableBufferE">
<span id="_CPPv3N5arrow13MutableBufferE"></span><span id="_CPPv2N5arrow13MutableBufferE"></span><span id="arrow::MutableBuffer"></span><span class="target" id="classarrow_1_1_mutable_buffer"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">MutableBuffer</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><a class="headerlink" href="#_CPPv4N5arrow13MutableBufferE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>A <a class="reference internal" href="#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a> whose contents can be mutated. </p>
<p>May or may not own its data. </p>
<p>Subclassed by <a class="reference internal" href="#classarrow_1_1_resizable_buffer"><span class="std std-ref">arrow::ResizableBuffer</span></a>, <a class="reference internal" href="cuda.html#classarrow_1_1cuda_1_1_cuda_host_buffer"><span class="std std-ref">arrow::cuda::CudaHostBuffer</span></a></p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4I00EN5arrow13MutableBuffer4WrapENSt10shared_ptrI6BufferEEP1T8SizeType">
<span id="_CPPv3I00EN5arrow13MutableBuffer4WrapEP1T8SizeType"></span><span id="_CPPv2I00EN5arrow13MutableBuffer4WrapEP1T8SizeType"></span><span class="k"><span class="pre">template</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">typename</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">T</span></span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">typename</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SizeType</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="p"><span class="pre">&gt;</span></span><br /><span class="target" id="classarrow_1_1_mutable_buffer_1ae06e3a980614bc6db4239e337f721b33"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Wrap</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv4I00EN5arrow13MutableBuffer4WrapENSt10shared_ptrI6BufferEEP1T8SizeType" title="arrow::MutableBuffer::Wrap::T"><span class="n"><span class="pre">T</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <a class="reference internal" href="#_CPPv4I00EN5arrow13MutableBuffer4WrapENSt10shared_ptrI6BufferEEP1T8SizeType" title="arrow::MutableBuffer::Wrap::SizeType"><span class="n"><span class="pre">SizeType</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I00EN5arrow13MutableBuffer4WrapENSt10shared_ptrI6BufferEEP1T8SizeType" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create buffer referencing typed memory with some length. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>data</strong><strong>[in]</strong> the typed memory as C array </p></li>
<li><p><strong>length</strong><strong>[in]</strong> the number of values in the array </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>a new shared_ptr&lt;Buffer&gt; </p>
</dd>
</dl>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow15ResizableBufferE">
<span id="_CPPv3N5arrow15ResizableBufferE"></span><span id="_CPPv2N5arrow15ResizableBufferE"></span><span id="arrow::ResizableBuffer"></span><span class="target" id="classarrow_1_1_resizable_buffer"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ResizableBuffer</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N5arrow13MutableBufferE" title="arrow::MutableBuffer"><span class="n"><span class="pre">MutableBuffer</span></span></a><a class="headerlink" href="#_CPPv4N5arrow15ResizableBufferE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>A mutable buffer that can be resized. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow15ResizableBuffer6ResizeEK7int64_tb">
<span id="_CPPv3N5arrow15ResizableBuffer6ResizeEK7int64_tb"></span><span id="_CPPv2N5arrow15ResizableBuffer6ResizeEK7int64_tb"></span><span id="arrow::ResizableBuffer::Resize__int64_tC.b"></span><span class="target" id="classarrow_1_1_resizable_buffer_1a6b9f6cd2a6d08a74d9175f0badc34b2c"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Resize</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">new_size</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">shrink_to_fit</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow15ResizableBuffer6ResizeEK7int64_tb" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Change buffer reported size to indicated size, allocating memory if necessary. </p>
<p>This will ensure that the capacity of the buffer is a multiple of 64 bytes as defined in Layout.md. Consider using ZeroPadding afterwards, to conform to the Arrow layout specification.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>new_size</strong> – The new size for the buffer. </p></li>
<li><p><strong>shrink_to_fit</strong> – Whether to shrink the capacity if new size &lt; current size </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow15ResizableBuffer7ReserveEK7int64_t">
<span id="_CPPv3N5arrow15ResizableBuffer7ReserveEK7int64_t"></span><span id="_CPPv2N5arrow15ResizableBuffer7ReserveEK7int64_t"></span><span id="arrow::ResizableBuffer::Reserve__int64_tC"></span><span class="target" id="classarrow_1_1_resizable_buffer_1ae3e4b7569105c6cd980ab2d10b5bbf73"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Reserve</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">new_capacity</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow15ResizableBuffer7ReserveEK7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Ensure that buffer has enough memory allocated to fit the indicated capacity (and meets the 64 byte padding requirement in Layout.md). </p>
<p>It does not change buffer’s reported size and doesn’t zero the padding. </p>
</dd></dl>
</div>
</dd></dl>
</section>
<section id="memory-pools">
<h2>Memory Pools<a class="headerlink" href="#memory-pools" title="Permalink to this heading">#</a></h2>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow19default_memory_poolEv">
<span id="_CPPv3N5arrow19default_memory_poolEv"></span><span id="_CPPv2N5arrow19default_memory_poolEv"></span><span id="arrow::default_memory_pool"></span><span class="target" id="namespacearrow_1aebe81d544faaf827b8f32c5a80b99820"></span><a class="reference internal" href="#_CPPv4N5arrow10MemoryPoolE" title="arrow::MemoryPool"><span class="n"><span class="pre">MemoryPool</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-prename descclassname"><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">default_memory_pool</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow19default_memory_poolEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the process-wide default memory pool. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow20jemalloc_memory_poolEPP10MemoryPool">
<span id="_CPPv3N5arrow20jemalloc_memory_poolEPP10MemoryPool"></span><span id="_CPPv2N5arrow20jemalloc_memory_poolEPP10MemoryPool"></span><span id="arrow::jemalloc_memory_pool__MemoryPoolPP"></span><span class="target" id="namespacearrow_1a07e44d557d9f98ba7a42bbcba1fb7698"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">jemalloc_memory_pool</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv4N5arrow10MemoryPoolE" title="arrow::MemoryPool"><span class="n"><span class="pre">MemoryPool</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">out</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow20jemalloc_memory_poolEPP10MemoryPool" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return a process-wide memory pool based on jemalloc. </p>
<p>May return NotImplemented if jemalloc is not available. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow20mimalloc_memory_poolEPP10MemoryPool">
<span id="_CPPv3N5arrow20mimalloc_memory_poolEPP10MemoryPool"></span><span id="_CPPv2N5arrow20mimalloc_memory_poolEPP10MemoryPool"></span><span id="arrow::mimalloc_memory_pool__MemoryPoolPP"></span><span class="target" id="namespacearrow_1af03def88fd1ab05b0df699df9c3b9754"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">mimalloc_memory_pool</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv4N5arrow10MemoryPoolE" title="arrow::MemoryPool"><span class="n"><span class="pre">MemoryPool</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">out</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow20mimalloc_memory_poolEPP10MemoryPool" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return a process-wide memory pool based on mimalloc. </p>
<p>May return NotImplemented if mimalloc is not available. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow18system_memory_poolEv">
<span id="_CPPv3N5arrow18system_memory_poolEv"></span><span id="_CPPv2N5arrow18system_memory_poolEv"></span><span id="arrow::system_memory_pool"></span><span class="target" id="namespacearrow_1aab2dcf4f3003c334c3a337d65657e4c5"></span><a class="reference internal" href="#_CPPv4N5arrow10MemoryPoolE" title="arrow::MemoryPool"><span class="n"><span class="pre">MemoryPool</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-prename descclassname"><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">system_memory_pool</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow18system_memory_poolEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return a process-wide memory pool based on the system allocator. </p>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow10MemoryPoolE">
<span id="_CPPv3N5arrow10MemoryPoolE"></span><span id="_CPPv2N5arrow10MemoryPoolE"></span><span id="arrow::MemoryPool"></span><span class="target" id="classarrow_1_1_memory_pool"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">MemoryPool</span></span></span><a class="headerlink" href="#_CPPv4N5arrow10MemoryPoolE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Base class for memory allocation on the CPU. </p>
<p>Besides tracking the number of allocated bytes, the allocator also should take care of the required 64-byte alignment. </p>
<p>Subclassed by <a class="reference internal" href="#classarrow_1_1_logging_memory_pool"><span class="std std-ref">arrow::LoggingMemoryPool</span></a>, <a class="reference internal" href="#classarrow_1_1_proxy_memory_pool"><span class="std std-ref">arrow::ProxyMemoryPool</span></a>, <a class="reference internal" href="#classarrow_1_1stl_1_1_s_t_l_memory_pool"><span class="std std-ref">arrow::stl::STLMemoryPool&lt; Allocator &gt;</span></a></p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow10MemoryPool8AllocateE7int64_tPP7uint8_t">
<span id="_CPPv3N5arrow10MemoryPool8AllocateE7int64_tPP7uint8_t"></span><span id="_CPPv2N5arrow10MemoryPool8AllocateE7int64_tPP7uint8_t"></span><span id="arrow::MemoryPool::Allocate__int64_t.uint8_tPP"></span><span class="target" id="classarrow_1_1_memory_pool_1a7a12a0f971500d8216b07058e812d442"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Allocate</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">out</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow10MemoryPool8AllocateE7int64_tPP7uint8_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Allocate a new memory region of at least size bytes. </p>
<p>The allocated region shall be 64-byte aligned. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow10MemoryPool8AllocateE7int64_t7int64_tPP7uint8_t">
<span id="_CPPv3N5arrow10MemoryPool8AllocateE7int64_t7int64_tPP7uint8_t"></span><span id="_CPPv2N5arrow10MemoryPool8AllocateE7int64_t7int64_tPP7uint8_t"></span><span id="arrow::MemoryPool::Allocate__int64_t.int64_t.uint8_tPP"></span><span class="target" id="classarrow_1_1_memory_pool_1add96cc49c1a19e0ae9e5d71275eb0602"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Allocate</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">alignment</span></span>, <span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">out</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow10MemoryPool8AllocateE7int64_t7int64_tPP7uint8_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Allocate a new memory region of at least size bytes aligned to alignment. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow10MemoryPool10ReallocateE7int64_t7int64_t7int64_tPP7uint8_t">
<span id="_CPPv3N5arrow10MemoryPool10ReallocateE7int64_t7int64_t7int64_tPP7uint8_t"></span><span id="_CPPv2N5arrow10MemoryPool10ReallocateE7int64_t7int64_t7int64_tPP7uint8_t"></span><span id="arrow::MemoryPool::Reallocate__int64_t.int64_t.int64_t.uint8_tPP"></span><span class="target" id="classarrow_1_1_memory_pool_1ac2489714eef31ba5c65e3e4c6a3bfa62"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Reallocate</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">old_size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">new_size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">alignment</span></span>, <span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">ptr</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow10MemoryPool10ReallocateE7int64_t7int64_t7int64_tPP7uint8_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Resize an already allocated memory section. </p>
<p>As by default most default allocators on a platform don’t support aligned reallocation, this function can involve a copy of the underlying data. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow10MemoryPool4FreeEP7uint8_t7int64_t7int64_t">
<span id="_CPPv3N5arrow10MemoryPool4FreeEP7uint8_t7int64_t7int64_t"></span><span id="_CPPv2N5arrow10MemoryPool4FreeEP7uint8_t7int64_t7int64_t"></span><span id="arrow::MemoryPool::Free__uint8_tP.int64_t.int64_t"></span><span class="target" id="classarrow_1_1_memory_pool_1ac7c1192373f38c7f8fac79e8c29e2018"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Free</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">buffer</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">alignment</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow10MemoryPool4FreeEP7uint8_t7int64_t7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Free an allocated region. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>buffer</strong> – Pointer to the start of the allocated memory region </p></li>
<li><p><strong>size</strong> – Allocated size located at buffer. An allocator implementation may use this for tracking the amount of allocated bytes as well as for faster deallocation if supported by its backend. </p></li>
<li><p><strong>alignment</strong> – The alignment of the allocation. Defaults to 64 bytes. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow10MemoryPool13ReleaseUnusedEv">
<span id="_CPPv3N5arrow10MemoryPool13ReleaseUnusedEv"></span><span id="_CPPv2N5arrow10MemoryPool13ReleaseUnusedEv"></span><span id="arrow::MemoryPool::ReleaseUnused"></span><span class="target" id="classarrow_1_1_memory_pool_1afa9db3edb9e822f286ba669d1f345eb8"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReleaseUnused</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow10MemoryPool13ReleaseUnusedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return unused memory to the OS. </p>
<p>Only applies to allocators that hold onto unused memory. This will be best effort, a memory pool may not implement this feature or may be unable to fulfill the request due to fragmentation. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow10MemoryPool15bytes_allocatedEv">
<span id="_CPPv3NK5arrow10MemoryPool15bytes_allocatedEv"></span><span id="_CPPv2NK5arrow10MemoryPool15bytes_allocatedEv"></span><span id="arrow::MemoryPool::bytes_allocatedC"></span><span class="target" id="classarrow_1_1_memory_pool_1abd12cd4bfb8ce8afcfc7a25d0293cd85"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">bytes_allocated</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4NK5arrow10MemoryPool15bytes_allocatedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>The number of bytes that were allocated and not yet free’d through this allocator. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow10MemoryPool10max_memoryEv">
<span id="_CPPv3NK5arrow10MemoryPool10max_memoryEv"></span><span id="_CPPv2NK5arrow10MemoryPool10max_memoryEv"></span><span id="arrow::MemoryPool::max_memoryC"></span><span class="target" id="classarrow_1_1_memory_pool_1a4d1fe541389b4afd4d49d727dc3088f0"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">max_memory</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow10MemoryPool10max_memoryEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return peak memory allocation in this memory pool. </p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>Maximum bytes allocated. If not known (or not implemented), returns -1 </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow10MemoryPool21total_bytes_allocatedEv">
<span id="_CPPv3NK5arrow10MemoryPool21total_bytes_allocatedEv"></span><span id="_CPPv2NK5arrow10MemoryPool21total_bytes_allocatedEv"></span><span id="arrow::MemoryPool::total_bytes_allocatedC"></span><span class="target" id="classarrow_1_1_memory_pool_1acb1e124cdd7bdcaa18008eee2609d788"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">total_bytes_allocated</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4NK5arrow10MemoryPool21total_bytes_allocatedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>The number of bytes that were allocated. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow10MemoryPool15num_allocationsEv">
<span id="_CPPv3NK5arrow10MemoryPool15num_allocationsEv"></span><span id="_CPPv2NK5arrow10MemoryPool15num_allocationsEv"></span><span id="arrow::MemoryPool::num_allocationsC"></span><span class="target" id="classarrow_1_1_memory_pool_1ae6718ebddbc56202548a4bfd1a95b0bd"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">num_allocations</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4NK5arrow10MemoryPool15num_allocationsEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>The number of allocations or reallocations that were requested. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow10MemoryPool12backend_nameEv">
<span id="_CPPv3NK5arrow10MemoryPool12backend_nameEv"></span><span id="_CPPv2NK5arrow10MemoryPool12backend_nameEv"></span><span id="arrow::MemoryPool::backend_nameC"></span><span class="target" id="classarrow_1_1_memory_pool_1a60f07985878503603da92c64ab4ba03c"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">backend_name</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4NK5arrow10MemoryPool12backend_nameEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>The name of the backend used by this <a class="reference internal" href="#classarrow_1_1_memory_pool"><span class="std std-ref">MemoryPool</span></a> (e.g. “system” or “jemalloc”). </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow10MemoryPool13CreateDefaultEv">
<span id="_CPPv3N5arrow10MemoryPool13CreateDefaultEv"></span><span id="_CPPv2N5arrow10MemoryPool13CreateDefaultEv"></span><span id="arrow::MemoryPool::CreateDefault"></span><span class="target" id="classarrow_1_1_memory_pool_1a844c3276d2f14daf186ceb9585fe3581"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">unique_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow10MemoryPoolE" title="arrow::MemoryPool"><span class="n"><span class="pre">MemoryPool</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CreateDefault</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow10MemoryPool13CreateDefaultEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>EXPERIMENTAL. Create a new instance of the default <a class="reference internal" href="#classarrow_1_1_memory_pool"><span class="std std-ref">MemoryPool</span></a>. </p>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow17LoggingMemoryPoolE">
<span id="_CPPv3N5arrow17LoggingMemoryPoolE"></span><span id="_CPPv2N5arrow17LoggingMemoryPoolE"></span><span id="arrow::LoggingMemoryPool"></span><span class="target" id="classarrow_1_1_logging_memory_pool"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">LoggingMemoryPool</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N5arrow10MemoryPoolE" title="arrow::MemoryPool"><span class="n"><span class="pre">MemoryPool</span></span></a><a class="headerlink" href="#_CPPv4N5arrow17LoggingMemoryPoolE" title="Permalink to this definition">#</a><br /></dt>
<dd><div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow17LoggingMemoryPool8AllocateE7int64_t7int64_tPP7uint8_t">
<span id="_CPPv3N5arrow17LoggingMemoryPool8AllocateE7int64_t7int64_tPP7uint8_t"></span><span id="_CPPv2N5arrow17LoggingMemoryPool8AllocateE7int64_t7int64_tPP7uint8_t"></span><span id="arrow::LoggingMemoryPool::Allocate__int64_t.int64_t.uint8_tPP"></span><span class="target" id="classarrow_1_1_logging_memory_pool_1a604e55441ce1573026c22d93e3bca628"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Allocate</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">alignment</span></span>, <span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">out</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow17LoggingMemoryPool8AllocateE7int64_t7int64_tPP7uint8_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Allocate a new memory region of at least size bytes aligned to alignment. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow17LoggingMemoryPool10ReallocateE7int64_t7int64_t7int64_tPP7uint8_t">
<span id="_CPPv3N5arrow17LoggingMemoryPool10ReallocateE7int64_t7int64_t7int64_tPP7uint8_t"></span><span id="_CPPv2N5arrow17LoggingMemoryPool10ReallocateE7int64_t7int64_t7int64_tPP7uint8_t"></span><span id="arrow::LoggingMemoryPool::Reallocate__int64_t.int64_t.int64_t.uint8_tPP"></span><span class="target" id="classarrow_1_1_logging_memory_pool_1af2668076e37faec6d9634ce110fea7f5"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Reallocate</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">old_size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">new_size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">alignment</span></span>, <span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">ptr</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow17LoggingMemoryPool10ReallocateE7int64_t7int64_t7int64_tPP7uint8_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Resize an already allocated memory section. </p>
<p>As by default most default allocators on a platform don’t support aligned reallocation, this function can involve a copy of the underlying data. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow17LoggingMemoryPool4FreeEP7uint8_t7int64_t7int64_t">
<span id="_CPPv3N5arrow17LoggingMemoryPool4FreeEP7uint8_t7int64_t7int64_t"></span><span id="_CPPv2N5arrow17LoggingMemoryPool4FreeEP7uint8_t7int64_t7int64_t"></span><span id="arrow::LoggingMemoryPool::Free__uint8_tP.int64_t.int64_t"></span><span class="target" id="classarrow_1_1_logging_memory_pool_1adb52457542ec22668ac109f8b565d45a"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Free</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">buffer</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">alignment</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow17LoggingMemoryPool4FreeEP7uint8_t7int64_t7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Free an allocated region. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>buffer</strong> – Pointer to the start of the allocated memory region </p></li>
<li><p><strong>size</strong> – Allocated size located at buffer. An allocator implementation may use this for tracking the amount of allocated bytes as well as for faster deallocation if supported by its backend. </p></li>
<li><p><strong>alignment</strong> – The alignment of the allocation. Defaults to 64 bytes. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow17LoggingMemoryPool15bytes_allocatedEv">
<span id="_CPPv3NK5arrow17LoggingMemoryPool15bytes_allocatedEv"></span><span id="_CPPv2NK5arrow17LoggingMemoryPool15bytes_allocatedEv"></span><span id="arrow::LoggingMemoryPool::bytes_allocatedC"></span><span class="target" id="classarrow_1_1_logging_memory_pool_1aa5a4ee8ec0299fea7125d89dc8553a46"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">bytes_allocated</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow17LoggingMemoryPool15bytes_allocatedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>The number of bytes that were allocated and not yet free’d through this allocator. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow17LoggingMemoryPool10max_memoryEv">
<span id="_CPPv3NK5arrow17LoggingMemoryPool10max_memoryEv"></span><span id="_CPPv2NK5arrow17LoggingMemoryPool10max_memoryEv"></span><span id="arrow::LoggingMemoryPool::max_memoryC"></span><span class="target" id="classarrow_1_1_logging_memory_pool_1af41a546412c98aa4439b53ec4df257bf"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">max_memory</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow17LoggingMemoryPool10max_memoryEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return peak memory allocation in this memory pool. </p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>Maximum bytes allocated. If not known (or not implemented), returns -1 </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow17LoggingMemoryPool21total_bytes_allocatedEv">
<span id="_CPPv3NK5arrow17LoggingMemoryPool21total_bytes_allocatedEv"></span><span id="_CPPv2NK5arrow17LoggingMemoryPool21total_bytes_allocatedEv"></span><span id="arrow::LoggingMemoryPool::total_bytes_allocatedC"></span><span class="target" id="classarrow_1_1_logging_memory_pool_1a8e8a3bad3ae07290ae577ccc8ff3e5e3"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">total_bytes_allocated</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow17LoggingMemoryPool21total_bytes_allocatedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>The number of bytes that were allocated. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow17LoggingMemoryPool15num_allocationsEv">
<span id="_CPPv3NK5arrow17LoggingMemoryPool15num_allocationsEv"></span><span id="_CPPv2NK5arrow17LoggingMemoryPool15num_allocationsEv"></span><span id="arrow::LoggingMemoryPool::num_allocationsC"></span><span class="target" id="classarrow_1_1_logging_memory_pool_1a3232dbc7f570f78f18483eae44ded0a8"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">num_allocations</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow17LoggingMemoryPool15num_allocationsEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>The number of allocations or reallocations that were requested. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow17LoggingMemoryPool12backend_nameEv">
<span id="_CPPv3NK5arrow17LoggingMemoryPool12backend_nameEv"></span><span id="_CPPv2NK5arrow17LoggingMemoryPool12backend_nameEv"></span><span id="arrow::LoggingMemoryPool::backend_nameC"></span><span class="target" id="classarrow_1_1_logging_memory_pool_1a446cdea471c19b84c1494727f6321eaf"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">backend_name</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow17LoggingMemoryPool12backend_nameEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>The name of the backend used by this <a class="reference internal" href="#classarrow_1_1_memory_pool"><span class="std std-ref">MemoryPool</span></a> (e.g. “system” or “jemalloc”). </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow17LoggingMemoryPool8AllocateE7int64_tPP7uint8_t">
<span id="_CPPv3N5arrow17LoggingMemoryPool8AllocateE7int64_tPP7uint8_t"></span><span id="_CPPv2N5arrow17LoggingMemoryPool8AllocateE7int64_tPP7uint8_t"></span><span id="arrow::LoggingMemoryPool::Allocate__int64_t.uint8_tPP"></span><span class="target" id="classarrow_1_1_logging_memory_pool_1a7a12a0f971500d8216b07058e812d442"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Allocate</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">out</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow17LoggingMemoryPool8AllocateE7int64_tPP7uint8_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Allocate a new memory region of at least size bytes. </p>
<p>The allocated region shall be 64-byte aligned. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp">
<span class="target" id="classarrow_1_1_logging_memory_pool_1add96cc49c1a19e0ae9e5d71275eb0602"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Allocate</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">alignment</span></span>, <span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">out</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><br /></dt>
<dd><p>Allocate a new memory region of at least size bytes aligned to alignment. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp">
<span class="target" id="classarrow_1_1_logging_memory_pool_1ac7c1192373f38c7f8fac79e8c29e2018"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Free</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">buffer</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">alignment</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><br /></dt>
<dd><p>Free an allocated region. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>buffer</strong> – Pointer to the start of the allocated memory region </p></li>
<li><p><strong>size</strong> – Allocated size located at buffer. An allocator implementation may use this for tracking the amount of allocated bytes as well as for faster deallocation if supported by its backend. </p></li>
<li><p><strong>alignment</strong> – The alignment of the allocation. Defaults to 64 bytes. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp">
<span class="target" id="classarrow_1_1_logging_memory_pool_1ac2489714eef31ba5c65e3e4c6a3bfa62"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Reallocate</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">old_size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">new_size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">alignment</span></span>, <span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">ptr</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><br /></dt>
<dd><p>Resize an already allocated memory section. </p>
<p>As by default most default allocators on a platform don’t support aligned reallocation, this function can involve a copy of the underlying data. </p>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow15ProxyMemoryPoolE">
<span id="_CPPv3N5arrow15ProxyMemoryPoolE"></span><span id="_CPPv2N5arrow15ProxyMemoryPoolE"></span><span id="arrow::ProxyMemoryPool"></span><span class="target" id="classarrow_1_1_proxy_memory_pool"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ProxyMemoryPool</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N5arrow10MemoryPoolE" title="arrow::MemoryPool"><span class="n"><span class="pre">MemoryPool</span></span></a><a class="headerlink" href="#_CPPv4N5arrow15ProxyMemoryPoolE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Derived class for memory allocation. </p>
<p>Tracks the number of bytes and maximum memory allocated through its direct calls. Actual allocation is delegated to <a class="reference internal" href="#classarrow_1_1_memory_pool"><span class="std std-ref">MemoryPool</span></a> class. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow15ProxyMemoryPool8AllocateE7int64_t7int64_tPP7uint8_t">
<span id="_CPPv3N5arrow15ProxyMemoryPool8AllocateE7int64_t7int64_tPP7uint8_t"></span><span id="_CPPv2N5arrow15ProxyMemoryPool8AllocateE7int64_t7int64_tPP7uint8_t"></span><span id="arrow::ProxyMemoryPool::Allocate__int64_t.int64_t.uint8_tPP"></span><span class="target" id="classarrow_1_1_proxy_memory_pool_1a49159271519a8942dd78070bbc493114"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Allocate</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">alignment</span></span>, <span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">out</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow15ProxyMemoryPool8AllocateE7int64_t7int64_tPP7uint8_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Allocate a new memory region of at least size bytes aligned to alignment. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow15ProxyMemoryPool10ReallocateE7int64_t7int64_t7int64_tPP7uint8_t">
<span id="_CPPv3N5arrow15ProxyMemoryPool10ReallocateE7int64_t7int64_t7int64_tPP7uint8_t"></span><span id="_CPPv2N5arrow15ProxyMemoryPool10ReallocateE7int64_t7int64_t7int64_tPP7uint8_t"></span><span id="arrow::ProxyMemoryPool::Reallocate__int64_t.int64_t.int64_t.uint8_tPP"></span><span class="target" id="classarrow_1_1_proxy_memory_pool_1a3f7486c9e8a88396daa2038b73e94d36"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Reallocate</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">old_size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">new_size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">alignment</span></span>, <span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">ptr</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow15ProxyMemoryPool10ReallocateE7int64_t7int64_t7int64_tPP7uint8_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Resize an already allocated memory section. </p>
<p>As by default most default allocators on a platform don’t support aligned reallocation, this function can involve a copy of the underlying data. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow15ProxyMemoryPool4FreeEP7uint8_t7int64_t7int64_t">
<span id="_CPPv3N5arrow15ProxyMemoryPool4FreeEP7uint8_t7int64_t7int64_t"></span><span id="_CPPv2N5arrow15ProxyMemoryPool4FreeEP7uint8_t7int64_t7int64_t"></span><span id="arrow::ProxyMemoryPool::Free__uint8_tP.int64_t.int64_t"></span><span class="target" id="classarrow_1_1_proxy_memory_pool_1ab95b49e749921350f94b30565c36563c"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Free</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">buffer</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">alignment</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow15ProxyMemoryPool4FreeEP7uint8_t7int64_t7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Free an allocated region. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>buffer</strong> – Pointer to the start of the allocated memory region </p></li>
<li><p><strong>size</strong> – Allocated size located at buffer. An allocator implementation may use this for tracking the amount of allocated bytes as well as for faster deallocation if supported by its backend. </p></li>
<li><p><strong>alignment</strong> – The alignment of the allocation. Defaults to 64 bytes. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow15ProxyMemoryPool15bytes_allocatedEv">
<span id="_CPPv3NK5arrow15ProxyMemoryPool15bytes_allocatedEv"></span><span id="_CPPv2NK5arrow15ProxyMemoryPool15bytes_allocatedEv"></span><span id="arrow::ProxyMemoryPool::bytes_allocatedC"></span><span class="target" id="classarrow_1_1_proxy_memory_pool_1ae067aaf2cbe1dd6ea54ec01d835131cc"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">bytes_allocated</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow15ProxyMemoryPool15bytes_allocatedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>The number of bytes that were allocated and not yet free’d through this allocator. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow15ProxyMemoryPool10max_memoryEv">
<span id="_CPPv3NK5arrow15ProxyMemoryPool10max_memoryEv"></span><span id="_CPPv2NK5arrow15ProxyMemoryPool10max_memoryEv"></span><span id="arrow::ProxyMemoryPool::max_memoryC"></span><span class="target" id="classarrow_1_1_proxy_memory_pool_1a0369b487efeb564ff40ed1101d86e8ad"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">max_memory</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow15ProxyMemoryPool10max_memoryEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return peak memory allocation in this memory pool. </p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>Maximum bytes allocated. If not known (or not implemented), returns -1 </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow15ProxyMemoryPool21total_bytes_allocatedEv">
<span id="_CPPv3NK5arrow15ProxyMemoryPool21total_bytes_allocatedEv"></span><span id="_CPPv2NK5arrow15ProxyMemoryPool21total_bytes_allocatedEv"></span><span id="arrow::ProxyMemoryPool::total_bytes_allocatedC"></span><span class="target" id="classarrow_1_1_proxy_memory_pool_1a66ddc984b7ee7e313665d4e8182c2715"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">total_bytes_allocated</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow15ProxyMemoryPool21total_bytes_allocatedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>The number of bytes that were allocated. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow15ProxyMemoryPool15num_allocationsEv">
<span id="_CPPv3NK5arrow15ProxyMemoryPool15num_allocationsEv"></span><span id="_CPPv2NK5arrow15ProxyMemoryPool15num_allocationsEv"></span><span id="arrow::ProxyMemoryPool::num_allocationsC"></span><span class="target" id="classarrow_1_1_proxy_memory_pool_1a17b64d7d5d55b3dde0c7e517dd362365"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">num_allocations</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow15ProxyMemoryPool15num_allocationsEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>The number of allocations or reallocations that were requested. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow15ProxyMemoryPool12backend_nameEv">
<span id="_CPPv3NK5arrow15ProxyMemoryPool12backend_nameEv"></span><span id="_CPPv2NK5arrow15ProxyMemoryPool12backend_nameEv"></span><span id="arrow::ProxyMemoryPool::backend_nameC"></span><span class="target" id="classarrow_1_1_proxy_memory_pool_1ac2eefc2b95c22f393fb6212954737c3f"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">backend_name</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow15ProxyMemoryPool12backend_nameEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>The name of the backend used by this <a class="reference internal" href="#classarrow_1_1_memory_pool"><span class="std std-ref">MemoryPool</span></a> (e.g. “system” or “jemalloc”). </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow15ProxyMemoryPool8AllocateE7int64_tPP7uint8_t">
<span id="_CPPv3N5arrow15ProxyMemoryPool8AllocateE7int64_tPP7uint8_t"></span><span id="_CPPv2N5arrow15ProxyMemoryPool8AllocateE7int64_tPP7uint8_t"></span><span id="arrow::ProxyMemoryPool::Allocate__int64_t.uint8_tPP"></span><span class="target" id="classarrow_1_1_proxy_memory_pool_1a7a12a0f971500d8216b07058e812d442"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Allocate</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">out</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow15ProxyMemoryPool8AllocateE7int64_tPP7uint8_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Allocate a new memory region of at least size bytes. </p>
<p>The allocated region shall be 64-byte aligned. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp">
<span class="target" id="classarrow_1_1_proxy_memory_pool_1add96cc49c1a19e0ae9e5d71275eb0602"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Allocate</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">alignment</span></span>, <span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">out</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><br /></dt>
<dd><p>Allocate a new memory region of at least size bytes aligned to alignment. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp">
<span class="target" id="classarrow_1_1_proxy_memory_pool_1ac7c1192373f38c7f8fac79e8c29e2018"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Free</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">buffer</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">alignment</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><br /></dt>
<dd><p>Free an allocated region. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>buffer</strong> – Pointer to the start of the allocated memory region </p></li>
<li><p><strong>size</strong> – Allocated size located at buffer. An allocator implementation may use this for tracking the amount of allocated bytes as well as for faster deallocation if supported by its backend. </p></li>
<li><p><strong>alignment</strong> – The alignment of the allocation. Defaults to 64 bytes. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp">
<span class="target" id="classarrow_1_1_proxy_memory_pool_1ac2489714eef31ba5c65e3e4c6a3bfa62"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Reallocate</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">old_size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">new_size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">alignment</span></span>, <span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">ptr</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><br /></dt>
<dd><p>Resize an already allocated memory section. </p>
<p>As by default most default allocators on a platform don’t support aligned reallocation, this function can involve a copy of the underlying data. </p>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow27SupportedMemoryBackendNamesEv">
<span id="_CPPv3N5arrow27SupportedMemoryBackendNamesEv"></span><span id="_CPPv2N5arrow27SupportedMemoryBackendNamesEv"></span><span id="arrow::SupportedMemoryBackendNames"></span><span class="target" id="namespacearrow_1a1172a8e2e8fa48b904afe5ba46cc29de"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">SupportedMemoryBackendNames</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow27SupportedMemoryBackendNamesEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the names of the backends supported by this Arrow build. </p>
</dd></dl>
</section>
<section id="allocation-functions">
<h2>Allocation Functions<a class="headerlink" href="#allocation-functions" title="Permalink to this heading">#</a></h2>
<p>These functions allocate a buffer from a particular memory pool.</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv414AllocateBufferK7int64_tP10MemoryPool">
<span id="_CPPv314AllocateBufferK7int64_tP10MemoryPool"></span><span id="_CPPv214AllocateBufferK7int64_tP10MemoryPool"></span><span id="AllocateBuffer__int64_tC.MemoryPoolP"></span><span class="target" id="group__buffer-allocation-functions_1gab7eeff2b27bb71cb821a1005d1d0a9be"></span><span class="n"><span class="pre">Result</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">unique_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Buffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">AllocateBuffer</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="n"><span class="pre">MemoryPool</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">pool</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">NULLPTR</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv414AllocateBufferK7int64_tP10MemoryPool" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Allocate a fixed size mutable buffer from a memory pool, zero its padding. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>size</strong><strong>[in]</strong> size of buffer to allocate </p></li>
<li><p><strong>pool</strong><strong>[in]</strong> a memory pool </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv414AllocateBufferK7int64_t7int64_tP10MemoryPool">
<span id="_CPPv314AllocateBufferK7int64_t7int64_tP10MemoryPool"></span><span id="_CPPv214AllocateBufferK7int64_t7int64_tP10MemoryPool"></span><span id="AllocateBuffer__int64_tC.int64_t.MemoryPoolP"></span><span class="target" id="group__buffer-allocation-functions_1ga21f6a14d38c3baa0961145ab1e77d20f"></span><span class="n"><span class="pre">Result</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">unique_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Buffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">AllocateBuffer</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">alignment</span></span>, <span class="n"><span class="pre">MemoryPool</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">pool</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">NULLPTR</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv414AllocateBufferK7int64_t7int64_tP10MemoryPool" title="Permalink to this definition">#</a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv423AllocateResizableBufferK7int64_tP10MemoryPool">
<span id="_CPPv323AllocateResizableBufferK7int64_tP10MemoryPool"></span><span id="_CPPv223AllocateResizableBufferK7int64_tP10MemoryPool"></span><span id="AllocateResizableBuffer__int64_tC.MemoryPoolP"></span><span class="target" id="group__buffer-allocation-functions_1gaa44d72e6284de08b2171a710a01de2d6"></span><span class="n"><span class="pre">Result</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">unique_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">ResizableBuffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">AllocateResizableBuffer</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="n"><span class="pre">MemoryPool</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">pool</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">NULLPTR</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv423AllocateResizableBufferK7int64_tP10MemoryPool" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Allocate a resizeable buffer from a memory pool, zero its padding. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>size</strong><strong>[in]</strong> size of buffer to allocate </p></li>
<li><p><strong>pool</strong><strong>[in]</strong> a memory pool </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv423AllocateResizableBufferK7int64_tK7int64_tP10MemoryPool">
<span id="_CPPv323AllocateResizableBufferK7int64_tK7int64_tP10MemoryPool"></span><span id="_CPPv223AllocateResizableBufferK7int64_tK7int64_tP10MemoryPool"></span><span id="AllocateResizableBuffer__int64_tC.int64_tC.MemoryPoolP"></span><span class="target" id="group__buffer-allocation-functions_1ga1d5ff9221f2470792b6c742cdd8a9b5a"></span><span class="n"><span class="pre">Result</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">unique_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">ResizableBuffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">AllocateResizableBuffer</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">alignment</span></span>, <span class="n"><span class="pre">MemoryPool</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">pool</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">NULLPTR</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv423AllocateResizableBufferK7int64_tK7int64_tP10MemoryPool" title="Permalink to this definition">#</a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv414AllocateBitmap7int64_tP10MemoryPool">
<span id="_CPPv314AllocateBitmap7int64_tP10MemoryPool"></span><span id="_CPPv214AllocateBitmap7int64_tP10MemoryPool"></span><span id="AllocateBitmap__int64_t.MemoryPoolP"></span><span class="target" id="group__buffer-allocation-functions_1ga4726342b8bd298b7bf05f741076e7527"></span><span class="n"><span class="pre">Result</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Buffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">AllocateBitmap</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span>, <span class="n"><span class="pre">MemoryPool</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">pool</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">NULLPTR</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv414AllocateBitmap7int64_tP10MemoryPool" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Allocate a bitmap buffer from a memory pool no guarantee on values is provided. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>length</strong><strong>[in]</strong> size in bits of bitmap to allocate </p></li>
<li><p><strong>pool</strong><strong>[in]</strong> memory pool to allocate memory from </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv419AllocateEmptyBitmap7int64_tP10MemoryPool">
<span id="_CPPv319AllocateEmptyBitmap7int64_tP10MemoryPool"></span><span id="_CPPv219AllocateEmptyBitmap7int64_tP10MemoryPool"></span><span id="AllocateEmptyBitmap__int64_t.MemoryPoolP"></span><span class="target" id="group__buffer-allocation-functions_1ga4bdacf00a6041fa3825f419698c7c40c"></span><span class="n"><span class="pre">Result</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Buffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">AllocateEmptyBitmap</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span>, <span class="n"><span class="pre">MemoryPool</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">pool</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">NULLPTR</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv419AllocateEmptyBitmap7int64_tP10MemoryPool" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Allocate a zero-initialized bitmap buffer from a memory pool. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>length</strong><strong>[in]</strong> size in bits of bitmap to allocate </p></li>
<li><p><strong>pool</strong><strong>[in]</strong> memory pool to allocate memory from </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv419AllocateEmptyBitmap7int64_t7int64_tP10MemoryPool">
<span id="_CPPv319AllocateEmptyBitmap7int64_t7int64_tP10MemoryPool"></span><span id="_CPPv219AllocateEmptyBitmap7int64_t7int64_tP10MemoryPool"></span><span id="AllocateEmptyBitmap__int64_t.int64_t.MemoryPoolP"></span><span class="target" id="group__buffer-allocation-functions_1ga27ee5bb421b739b74cef9e30b02d870d"></span><span class="n"><span class="pre">Result</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Buffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">AllocateEmptyBitmap</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">alignment</span></span>, <span class="n"><span class="pre">MemoryPool</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">pool</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">NULLPTR</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv419AllocateEmptyBitmap7int64_t7int64_tP10MemoryPool" title="Permalink to this definition">#</a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv418ConcatenateBuffersRK12BufferVectorP10MemoryPool">
<span id="_CPPv318ConcatenateBuffersRK12BufferVectorP10MemoryPool"></span><span id="_CPPv218ConcatenateBuffersRK12BufferVectorP10MemoryPool"></span><span id="ConcatenateBuffers__BufferVectorCR.MemoryPoolP"></span><span class="target" id="group__buffer-allocation-functions_1ga614382b33dc47fa784c7a4b3be2c0f59"></span><span class="n"><span class="pre">Result</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Buffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ConcatenateBuffers</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">BufferVector</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">buffers</span></span>, <span class="n"><span class="pre">MemoryPool</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">pool</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">NULLPTR</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv418ConcatenateBuffersRK12BufferVectorP10MemoryPool" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Concatenate multiple buffers into a single buffer. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>buffers</strong><strong>[in]</strong> to be concatenated </p></li>
<li><p><strong>pool</strong><strong>[in]</strong> memory pool to allocate the new buffer from </p></li>
</ul>
</dd>
</dl>
</dd></dl>
</section>
<section id="slicing">
<h2>Slicing<a class="headerlink" href="#slicing" title="Permalink to this heading">#</a></h2>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv411SliceBufferRKNSt10shared_ptrI6BufferEEK7int64_tK7int64_t">
<span id="_CPPv311SliceBufferRKNSt10shared_ptrI6BufferEEK7int64_tK7int64_t"></span><span id="_CPPv211SliceBufferRKNSt10shared_ptrI6BufferEEK7int64_tK7int64_t"></span><span id="SliceBuffer__std::shared_ptr:Buffer:CR.int64_tC.int64_tC"></span><span class="target" id="group__buffer-slicing-functions_1ga23386d14ecaa97d5c1c93b53676c34e2"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Buffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SliceBuffer</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Buffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">buffer</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">offset</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv411SliceBufferRKNSt10shared_ptrI6BufferEEK7int64_tK7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Construct a view on a buffer at the given offset and length. </p>
<p>This function cannot fail and does not check for errors (except in debug builds) </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv411SliceBufferRKNSt10shared_ptrI6BufferEEK7int64_t">
<span id="_CPPv311SliceBufferRKNSt10shared_ptrI6BufferEEK7int64_t"></span><span id="_CPPv211SliceBufferRKNSt10shared_ptrI6BufferEEK7int64_t"></span><span id="SliceBuffer__std::shared_ptr:Buffer:CR.int64_tC"></span><span class="target" id="group__buffer-slicing-functions_1gab051c8518e0c9881042fdf8cf1416cbe"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Buffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SliceBuffer</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Buffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">buffer</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">offset</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv411SliceBufferRKNSt10shared_ptrI6BufferEEK7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Construct a view on a buffer at the given offset, up to the buffer’s end. </p>
<p>This function cannot fail and does not check for errors (except in debug builds) </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv415SliceBufferSafeRKNSt10shared_ptrI6BufferEE7int64_t">
<span id="_CPPv315SliceBufferSafeRKNSt10shared_ptrI6BufferEE7int64_t"></span><span id="_CPPv215SliceBufferSafeRKNSt10shared_ptrI6BufferEE7int64_t"></span><span id="SliceBufferSafe__std::shared_ptr:Buffer:CR.int64_t"></span><span class="target" id="group__buffer-slicing-functions_1ga41e702cd989315011f8068b2392faa11"></span><span class="n"><span class="pre">Result</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Buffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SliceBufferSafe</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Buffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">buffer</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">offset</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv415SliceBufferSafeRKNSt10shared_ptrI6BufferEE7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Input-checking version of SliceBuffer. </p>
<p>An Invalid <a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a> is returned if the requested slice falls out of bounds. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv415SliceBufferSafeRKNSt10shared_ptrI6BufferEE7int64_t7int64_t">
<span id="_CPPv315SliceBufferSafeRKNSt10shared_ptrI6BufferEE7int64_t7int64_t"></span><span id="_CPPv215SliceBufferSafeRKNSt10shared_ptrI6BufferEE7int64_t7int64_t"></span><span id="SliceBufferSafe__std::shared_ptr:Buffer:CR.int64_t.int64_t"></span><span class="target" id="group__buffer-slicing-functions_1ga4c77ebd80eeabc2efd018f670a4d29ee"></span><span class="n"><span class="pre">Result</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Buffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SliceBufferSafe</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Buffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">buffer</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">offset</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv415SliceBufferSafeRKNSt10shared_ptrI6BufferEE7int64_t7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Input-checking version of SliceBuffer. </p>
<p>An Invalid <a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a> is returned if the requested slice falls out of bounds. Note that unlike SliceBuffer, <code class="docutils literal notranslate"><span class="pre">length</span></code> isn’t clamped to the available buffer size. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv418SliceMutableBufferRKNSt10shared_ptrI6BufferEEK7int64_tK7int64_t">
<span id="_CPPv318SliceMutableBufferRKNSt10shared_ptrI6BufferEEK7int64_tK7int64_t"></span><span id="_CPPv218SliceMutableBufferRKNSt10shared_ptrI6BufferEEK7int64_tK7int64_t"></span><span id="SliceMutableBuffer__std::shared_ptr:Buffer:CR.int64_tC.int64_tC"></span><span class="target" id="group__buffer-slicing-functions_1ga44c8f98a2874248eb7d5658ccee5718e"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Buffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SliceMutableBuffer</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Buffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">buffer</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">offset</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv418SliceMutableBufferRKNSt10shared_ptrI6BufferEEK7int64_tK7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Like SliceBuffer, but construct a mutable buffer slice. </p>
<p>If the parent buffer is not mutable, behavior is undefined (it may abort in debug builds). </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv418SliceMutableBufferRKNSt10shared_ptrI6BufferEEK7int64_t">
<span id="_CPPv318SliceMutableBufferRKNSt10shared_ptrI6BufferEEK7int64_t"></span><span id="_CPPv218SliceMutableBufferRKNSt10shared_ptrI6BufferEEK7int64_t"></span><span id="SliceMutableBuffer__std::shared_ptr:Buffer:CR.int64_tC"></span><span class="target" id="group__buffer-slicing-functions_1ga5eccd6ba6b0902e9eab560b0dc960aae"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Buffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SliceMutableBuffer</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Buffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">buffer</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">offset</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv418SliceMutableBufferRKNSt10shared_ptrI6BufferEEK7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Like SliceBuffer, but construct a mutable buffer slice. </p>
<p>If the parent buffer is not mutable, behavior is undefined (it may abort in debug builds). </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv422SliceMutableBufferSafeRKNSt10shared_ptrI6BufferEE7int64_t">
<span id="_CPPv322SliceMutableBufferSafeRKNSt10shared_ptrI6BufferEE7int64_t"></span><span id="_CPPv222SliceMutableBufferSafeRKNSt10shared_ptrI6BufferEE7int64_t"></span><span id="SliceMutableBufferSafe__std::shared_ptr:Buffer:CR.int64_t"></span><span class="target" id="group__buffer-slicing-functions_1gadcdbe1ea905508543893b6f17998931e"></span><span class="n"><span class="pre">Result</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Buffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SliceMutableBufferSafe</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Buffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">buffer</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">offset</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv422SliceMutableBufferSafeRKNSt10shared_ptrI6BufferEE7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Input-checking version of SliceMutableBuffer. </p>
<p>An Invalid <a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a> is returned if the requested slice falls out of bounds. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv422SliceMutableBufferSafeRKNSt10shared_ptrI6BufferEE7int64_t7int64_t">
<span id="_CPPv322SliceMutableBufferSafeRKNSt10shared_ptrI6BufferEE7int64_t7int64_t"></span><span id="_CPPv222SliceMutableBufferSafeRKNSt10shared_ptrI6BufferEE7int64_t7int64_t"></span><span id="SliceMutableBufferSafe__std::shared_ptr:Buffer:CR.int64_t.int64_t"></span><span class="target" id="group__buffer-slicing-functions_1ga614f56abf67cf25a269f8c539636e0e3"></span><span class="n"><span class="pre">Result</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Buffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SliceMutableBufferSafe</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Buffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">buffer</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">offset</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv422SliceMutableBufferSafeRKNSt10shared_ptrI6BufferEE7int64_t7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Input-checking version of SliceMutableBuffer. </p>
<p>An Invalid <a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a> is returned if the requested slice falls out of bounds. Note that unlike SliceBuffer, <code class="docutils literal notranslate"><span class="pre">length</span></code> isn’t clamped to the available buffer size. </p>
</dd></dl>
</section>
<section id="buffer-builders">
<h2>Buffer Builders<a class="headerlink" href="#buffer-builders" title="Permalink to this heading">#</a></h2>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow13BufferBuilderE">
<span id="_CPPv3N5arrow13BufferBuilderE"></span><span id="_CPPv2N5arrow13BufferBuilderE"></span><span id="arrow::BufferBuilder"></span><span class="target" id="classarrow_1_1_buffer_builder"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">BufferBuilder</span></span></span><a class="headerlink" href="#_CPPv4N5arrow13BufferBuilderE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>A class for incrementally building a contiguous chunk of in-memory data. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow13BufferBuilder13BufferBuilderENSt10shared_ptrI15ResizableBufferEEP10MemoryPool7int64_t">
<span id="_CPPv3N5arrow13BufferBuilder13BufferBuilderENSt10shared_ptrI15ResizableBufferEEP10MemoryPool7int64_t"></span><span id="_CPPv2N5arrow13BufferBuilder13BufferBuilderENSt10shared_ptrI15ResizableBufferEEP10MemoryPool7int64_t"></span><span id="arrow::BufferBuilder::BufferBuilder__std::shared_ptr:ResizableBuffer:.MemoryPoolP.int64_t"></span><span class="target" id="classarrow_1_1_buffer_builder_1a6a8cb5448634e8c28646451cacc81500"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">explicit</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">BufferBuilder</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow15ResizableBufferE" title="arrow::ResizableBuffer"><span class="n"><span class="pre">ResizableBuffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">buffer</span></span>, <a class="reference internal" href="#_CPPv4N5arrow10MemoryPoolE" title="arrow::MemoryPool"><span class="n"><span class="pre">MemoryPool</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">pool</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow19default_memory_poolEv" title="arrow::default_memory_pool"><span class="n"><span class="pre">default_memory_pool</span></span></a><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">alignment</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">kDefaultBufferAlignment</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow13BufferBuilder13BufferBuilderENSt10shared_ptrI15ResizableBufferEEP10MemoryPool7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Constructs new Builder that will start using the provided buffer until Finish/Reset are called. </p>
<p>The buffer is not resized. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow13BufferBuilder6ResizeEK7int64_tb">
<span id="_CPPv3N5arrow13BufferBuilder6ResizeEK7int64_tb"></span><span id="_CPPv2N5arrow13BufferBuilder6ResizeEK7int64_tb"></span><span id="arrow::BufferBuilder::Resize__int64_tC.b"></span><span class="target" id="classarrow_1_1_buffer_builder_1a865e377404f5e80e3b716e654d0f3ec9"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Resize</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">new_capacity</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">shrink_to_fit</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">true</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow13BufferBuilder6ResizeEK7int64_tb" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Resize the buffer to the nearest multiple of 64 bytes. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>new_capacity</strong> – the new capacity of the of the builder. Will be rounded up to a multiple of 64 bytes for padding </p></li>
<li><p><strong>shrink_to_fit</strong> – if new capacity is smaller than the existing, reallocate internal buffer. Set to false to avoid reallocations when shrinking the builder. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow13BufferBuilder7ReserveEK7int64_t">
<span id="_CPPv3N5arrow13BufferBuilder7ReserveEK7int64_t"></span><span id="_CPPv2N5arrow13BufferBuilder7ReserveEK7int64_t"></span><span id="arrow::BufferBuilder::Reserve__int64_tC"></span><span class="target" id="classarrow_1_1_buffer_builder_1a1935ba967d1358acf6775cb4a8135640"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Reserve</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">additional_bytes</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow13BufferBuilder7ReserveEK7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Ensure that builder can accommodate the additional number of bytes without the need to perform allocations. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>additional_bytes</strong><strong>[in]</strong> number of additional bytes to make space for </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow13BufferBuilder6AppendEPKvK7int64_t">
<span id="_CPPv3N5arrow13BufferBuilder6AppendEPKvK7int64_t"></span><span id="_CPPv2N5arrow13BufferBuilder6AppendEPKvK7int64_t"></span><span id="arrow::BufferBuilder::Append__voidCP.int64_tC"></span><span class="target" id="classarrow_1_1_buffer_builder_1a9f2f25ecb063582ceaca0a5b7bd5d128"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Append</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow13BufferBuilder6AppendEPKvK7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Append the given data to the buffer. </p>
<p>The buffer is automatically expanded if necessary. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow13BufferBuilder6AppendENSt11string_viewE">
<span id="_CPPv3N5arrow13BufferBuilder6AppendENSt11string_viewE"></span><span id="_CPPv2N5arrow13BufferBuilder6AppendENSt11string_viewE"></span><span id="arrow::BufferBuilder::Append__std::string_view"></span><span class="target" id="classarrow_1_1_buffer_builder_1a4710b038ad9fbcaf52d29beaa7e01b94"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Append</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string_view</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">v</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow13BufferBuilder6AppendENSt11string_viewE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Append the given data to the buffer. </p>
<p>The buffer is automatically expanded if necessary. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow13BufferBuilder6AppendEK7int64_t7uint8_t">
<span id="_CPPv3N5arrow13BufferBuilder6AppendEK7int64_t7uint8_t"></span><span id="_CPPv2N5arrow13BufferBuilder6AppendEK7int64_t7uint8_t"></span><span id="arrow::BufferBuilder::Append__int64_tC.uint8_t"></span><span class="target" id="classarrow_1_1_buffer_builder_1a2936c8b4601d3529af547290bc5b808b"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Append</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">num_copies</span></span>, <span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow13BufferBuilder6AppendEK7int64_t7uint8_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Append copies of a value to the buffer. </p>
<p>The buffer is automatically expanded if necessary. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow13BufferBuilder6FinishEPNSt10shared_ptrI6BufferEEb">
<span id="_CPPv3N5arrow13BufferBuilder6FinishEPNSt10shared_ptrI6BufferEEb"></span><span id="_CPPv2N5arrow13BufferBuilder6FinishEPNSt10shared_ptrI6BufferEEb"></span><span id="arrow::BufferBuilder::Finish__std::shared_ptr:Buffer:P.b"></span><span class="target" id="classarrow_1_1_buffer_builder_1a1d24a7508b789222ab27939a3ac3b481"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Finish</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">out</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">shrink_to_fit</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">true</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow13BufferBuilder6FinishEPNSt10shared_ptrI6BufferEEb" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return result of builder as a <a class="reference internal" href="#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a> object. </p>
<p>The builder is reset and can be reused afterwards.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>out</strong><strong>[out]</strong> the finalized <a class="reference internal" href="#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a> object </p></li>
<li><p><strong>shrink_to_fit</strong> – if the buffer size is smaller than its capacity, reallocate to fit more tightly in memory. Set to false to avoid a reallocation, at the expense of potentially more memory consumption. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow13BufferBuilder16FinishWithLengthE7int64_tb">
<span id="_CPPv3N5arrow13BufferBuilder16FinishWithLengthE7int64_tb"></span><span id="_CPPv2N5arrow13BufferBuilder16FinishWithLengthE7int64_tb"></span><span id="arrow::BufferBuilder::FinishWithLength__int64_t.b"></span><span class="target" id="classarrow_1_1_buffer_builder_1a94a33943e9820d43676190740ddd611b"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">FinishWithLength</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">final_length</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">shrink_to_fit</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">true</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow13BufferBuilder16FinishWithLengthE7int64_tb" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Like Finish, but override the final buffer size. </p>
<p>This is useful after writing data directly into the builder memory without calling the Append methods (basically, when using <a class="reference internal" href="#classarrow_1_1_buffer_builder"><span class="std std-ref">BufferBuilder</span></a> mostly for memory allocation). </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow13BufferBuilder6RewindE7int64_t">
<span id="_CPPv3N5arrow13BufferBuilder6RewindE7int64_t"></span><span id="_CPPv2N5arrow13BufferBuilder6RewindE7int64_t"></span><span id="arrow::BufferBuilder::Rewind__int64_t"></span><span class="target" id="classarrow_1_1_buffer_builder_1adb061b4250de92be4822316b207ddcee"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Rewind</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">position</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow13BufferBuilder6RewindE7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Set size to a smaller value without modifying builder contents. </p>
<p>For reusable <a class="reference internal" href="#classarrow_1_1_buffer_builder"><span class="std std-ref">BufferBuilder</span></a> classes </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>position</strong><strong>[in]</strong> must be non-negative and less than or equal to the current length()</p>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow13BufferBuilder12GrowByFactorE7int64_t7int64_t">
<span id="_CPPv3N5arrow13BufferBuilder12GrowByFactorE7int64_t7int64_t"></span><span id="_CPPv2N5arrow13BufferBuilder12GrowByFactorE7int64_t7int64_t"></span><span id="arrow::BufferBuilder::GrowByFactor__int64_t.int64_t"></span><span class="target" id="classarrow_1_1_buffer_builder_1a289bc7d6c344eb6fb1ec7936e99b05bb"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">GrowByFactor</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">current_capacity</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">new_capacity</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow13BufferBuilder12GrowByFactorE7int64_t7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return a capacity expanded by the desired growth factor. </p>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4I00EN5arrow18TypedBufferBuilderE">
<span id="_CPPv3I00EN5arrow18TypedBufferBuilderE"></span><span id="_CPPv2I00EN5arrow18TypedBufferBuilderE"></span><span class="k"><span class="pre">template</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">typename</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">T</span></span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">typename</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Enable</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="p"><span class="pre">&gt;</span></span><br /><span class="target" id="classarrow_1_1_typed_buffer_builder"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">TypedBufferBuilder</span></span></span><a class="headerlink" href="#_CPPv4I00EN5arrow18TypedBufferBuilderE" title="Permalink to this definition">#</a><br /></dt>
<dd></dd></dl>
</section>
<section id="stl-integration">
<h2>STL Integration<a class="headerlink" href="#stl-integration" title="Permalink to this heading">#</a></h2>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4I0EN5arrow3stl9allocatorE">
<span id="_CPPv3I0EN5arrow3stl9allocatorE"></span><span id="_CPPv2I0EN5arrow3stl9allocatorE"></span><span class="k"><span class="pre">template</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">T</span></span></span><span class="p"><span class="pre">&gt;</span></span><br /><span class="target" id="classarrow_1_1stl_1_1allocator"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">allocator</span></span></span><a class="headerlink" href="#_CPPv4I0EN5arrow3stl9allocatorE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>A STL allocator delegating allocations to a Arrow <a class="reference internal" href="#classarrow_1_1_memory_pool"><span class="std std-ref">MemoryPool</span></a>. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3stl9allocator9allocatorEv">
<span id="_CPPv3N5arrow3stl9allocator9allocatorEv"></span><span id="_CPPv2N5arrow3stl9allocator9allocatorEv"></span><span id="arrow::stl::allocator::allocator"></span><span class="target" id="classarrow_1_1stl_1_1allocator_1a050d3840043ef30ec2648e7dc3b03425"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">allocator</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">noexcept</span></span><a class="headerlink" href="#_CPPv4N5arrow3stl9allocator9allocatorEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Construct an allocator from the default <a class="reference internal" href="#classarrow_1_1_memory_pool"><span class="std std-ref">MemoryPool</span></a>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3stl9allocator9allocatorEP10MemoryPool">
<span id="_CPPv3N5arrow3stl9allocator9allocatorEP10MemoryPool"></span><span id="_CPPv2N5arrow3stl9allocator9allocatorEP10MemoryPool"></span><span id="arrow::stl::allocator::allocator__MemoryPoolP"></span><span class="target" id="classarrow_1_1stl_1_1allocator_1a345b7fb4cd99930d1b606fac634e7ca3"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">explicit</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">allocator</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv4N5arrow10MemoryPoolE" title="arrow::MemoryPool"><span class="n"><span class="pre">MemoryPool</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">pool</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">noexcept</span></span><a class="headerlink" href="#_CPPv4N5arrow3stl9allocator9allocatorEP10MemoryPool" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Construct an allocator from the given <a class="reference internal" href="#classarrow_1_1_memory_pool"><span class="std std-ref">MemoryPool</span></a>. </p>
</dd></dl>
</div>
<dl class="cpp struct">
<dt class="sig sig-object cpp" id="_CPPv4I0EN5arrow3stl9allocator6rebindE">
<span id="_CPPv3I0EN5arrow3stl9allocator6rebindE"></span><span id="_CPPv2I0EN5arrow3stl9allocator6rebindE"></span><span class="k"><span class="pre">template</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">U</span></span></span><span class="p"><span class="pre">&gt;</span></span><br /><span class="target" id="structarrow_1_1stl_1_1allocator_1_1rebind"></span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">rebind</span></span></span><a class="headerlink" href="#_CPPv4I0EN5arrow3stl9allocator6rebindE" title="Permalink to this definition">#</a><br /></dt>
<dd></dd></dl>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4I0EN5arrow3stl13STLMemoryPoolE">
<span id="_CPPv3I0EN5arrow3stl13STLMemoryPoolE"></span><span id="_CPPv2I0EN5arrow3stl13STLMemoryPoolE"></span><span class="k"><span class="pre">template</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">typename</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Allocator</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">allocator</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">uint8_t</span></span><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><br /><span class="target" id="classarrow_1_1stl_1_1_s_t_l_memory_pool"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">STLMemoryPool</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N5arrow10MemoryPoolE" title="arrow::MemoryPool"><span class="n"><span class="pre">MemoryPool</span></span></a><a class="headerlink" href="#_CPPv4I0EN5arrow3stl13STLMemoryPoolE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>A <a class="reference internal" href="#classarrow_1_1_memory_pool"><span class="std std-ref">MemoryPool</span></a> implementation delegating allocations to a STL allocator. </p>
<p>Note that STL allocators don’t provide a resizing operation, and therefore any buffer resizes will do a full reallocation and copy. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3stl13STLMemoryPool13STLMemoryPoolERK9Allocator">
<span id="_CPPv3N5arrow3stl13STLMemoryPool13STLMemoryPoolERK9Allocator"></span><span id="_CPPv2N5arrow3stl13STLMemoryPool13STLMemoryPoolERK9Allocator"></span><span id="arrow::stl::STLMemoryPool::STLMemoryPool__AllocatorCR"></span><span class="target" id="classarrow_1_1stl_1_1_s_t_l_memory_pool_1a04f9e7c6b4995ffad23f3a60f8e34a9f"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">explicit</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">STLMemoryPool</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4I0EN5arrow3stl13STLMemoryPoolE" title="arrow::stl::STLMemoryPool::Allocator"><span class="n"><span class="pre">Allocator</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">alloc</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3stl13STLMemoryPool13STLMemoryPoolERK9Allocator" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Construct a memory pool from the given allocator. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3stl13STLMemoryPool8AllocateE7int64_t7int64_tPP7uint8_t">
<span id="_CPPv3N5arrow3stl13STLMemoryPool8AllocateE7int64_t7int64_tPP7uint8_t"></span><span id="_CPPv2N5arrow3stl13STLMemoryPool8AllocateE7int64_t7int64_tPP7uint8_t"></span><span id="arrow::stl::STLMemoryPool::Allocate__int64_t.int64_t.uint8_tPP"></span><span class="target" id="classarrow_1_1stl_1_1_s_t_l_memory_pool_1ae0fbd420e781c56cdad7e9ba7610b195"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Allocate</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="n"><span class="pre">int64_t</span></span>, <span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">out</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow3stl13STLMemoryPool8AllocateE7int64_t7int64_tPP7uint8_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Allocate a new memory region of at least size bytes aligned to alignment. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3stl13STLMemoryPool10ReallocateE7int64_t7int64_t7int64_tPP7uint8_t">
<span id="_CPPv3N5arrow3stl13STLMemoryPool10ReallocateE7int64_t7int64_t7int64_tPP7uint8_t"></span><span id="_CPPv2N5arrow3stl13STLMemoryPool10ReallocateE7int64_t7int64_t7int64_tPP7uint8_t"></span><span id="arrow::stl::STLMemoryPool::Reallocate__int64_t.int64_t.int64_t.uint8_tPP"></span><span class="target" id="classarrow_1_1stl_1_1_s_t_l_memory_pool_1a4aeed147e2ba430066026549a058780f"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Reallocate</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">old_size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">new_size</span></span>, <span class="n"><span class="pre">int64_t</span></span>, <span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">ptr</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow3stl13STLMemoryPool10ReallocateE7int64_t7int64_t7int64_tPP7uint8_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Resize an already allocated memory section. </p>
<p>As by default most default allocators on a platform don’t support aligned reallocation, this function can involve a copy of the underlying data. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3stl13STLMemoryPool4FreeEP7uint8_t7int64_t7int64_t">
<span id="_CPPv3N5arrow3stl13STLMemoryPool4FreeEP7uint8_t7int64_t7int64_t"></span><span id="_CPPv2N5arrow3stl13STLMemoryPool4FreeEP7uint8_t7int64_t7int64_t"></span><span id="arrow::stl::STLMemoryPool::Free__uint8_tP.int64_t.int64_t"></span><span class="target" id="classarrow_1_1stl_1_1_s_t_l_memory_pool_1abfc40ed4e1f90dc1a3b1132ce0d2ff31"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Free</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">buffer</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow3stl13STLMemoryPool4FreeEP7uint8_t7int64_t7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Free an allocated region. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>buffer</strong> – Pointer to the start of the allocated memory region </p></li>
<li><p><strong>size</strong> – Allocated size located at buffer. An allocator implementation may use this for tracking the amount of allocated bytes as well as for faster deallocation if supported by its backend. </p></li>
<li><p><strong>alignment</strong> – The alignment of the allocation. Defaults to 64 bytes. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow3stl13STLMemoryPool15bytes_allocatedEv">
<span id="_CPPv3NK5arrow3stl13STLMemoryPool15bytes_allocatedEv"></span><span id="_CPPv2NK5arrow3stl13STLMemoryPool15bytes_allocatedEv"></span><span id="arrow::stl::STLMemoryPool::bytes_allocatedC"></span><span class="target" id="classarrow_1_1stl_1_1_s_t_l_memory_pool_1a5de9db81dd9b9b6c854c7ece6d13e063"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">bytes_allocated</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow3stl13STLMemoryPool15bytes_allocatedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>The number of bytes that were allocated and not yet free’d through this allocator. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow3stl13STLMemoryPool10max_memoryEv">
<span id="_CPPv3NK5arrow3stl13STLMemoryPool10max_memoryEv"></span><span id="_CPPv2NK5arrow3stl13STLMemoryPool10max_memoryEv"></span><span id="arrow::stl::STLMemoryPool::max_memoryC"></span><span class="target" id="classarrow_1_1stl_1_1_s_t_l_memory_pool_1ab65e96df014e555fa03f7e8ba043d003"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">max_memory</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow3stl13STLMemoryPool10max_memoryEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return peak memory allocation in this memory pool. </p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>Maximum bytes allocated. If not known (or not implemented), returns -1 </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow3stl13STLMemoryPool21total_bytes_allocatedEv">
<span id="_CPPv3NK5arrow3stl13STLMemoryPool21total_bytes_allocatedEv"></span><span id="_CPPv2NK5arrow3stl13STLMemoryPool21total_bytes_allocatedEv"></span><span id="arrow::stl::STLMemoryPool::total_bytes_allocatedC"></span><span class="target" id="classarrow_1_1stl_1_1_s_t_l_memory_pool_1a6160239792ae2d97e2d4c21b3af4557a"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">total_bytes_allocated</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow3stl13STLMemoryPool21total_bytes_allocatedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>The number of bytes that were allocated. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow3stl13STLMemoryPool15num_allocationsEv">
<span id="_CPPv3NK5arrow3stl13STLMemoryPool15num_allocationsEv"></span><span id="_CPPv2NK5arrow3stl13STLMemoryPool15num_allocationsEv"></span><span id="arrow::stl::STLMemoryPool::num_allocationsC"></span><span class="target" id="classarrow_1_1stl_1_1_s_t_l_memory_pool_1a14612ac3e80e635c07cdc7a235c49819"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">num_allocations</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow3stl13STLMemoryPool15num_allocationsEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>The number of allocations or reallocations that were requested. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow3stl13STLMemoryPool12backend_nameEv">
<span id="_CPPv3NK5arrow3stl13STLMemoryPool12backend_nameEv"></span><span id="_CPPv2NK5arrow3stl13STLMemoryPool12backend_nameEv"></span><span id="arrow::stl::STLMemoryPool::backend_nameC"></span><span class="target" id="classarrow_1_1stl_1_1_s_t_l_memory_pool_1ad90be605fdb1f922aff9a4abfedfad4b"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">backend_name</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow3stl13STLMemoryPool12backend_nameEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>The name of the backend used by this <a class="reference internal" href="#classarrow_1_1_memory_pool"><span class="std std-ref">MemoryPool</span></a> (e.g. “system” or “jemalloc”). </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3stl13STLMemoryPool8AllocateE7int64_tPP7uint8_t">
<span id="_CPPv3N5arrow3stl13STLMemoryPool8AllocateE7int64_tPP7uint8_t"></span><span id="_CPPv2N5arrow3stl13STLMemoryPool8AllocateE7int64_tPP7uint8_t"></span><span id="arrow::stl::STLMemoryPool::Allocate__int64_t.uint8_tPP"></span><span class="target" id="classarrow_1_1stl_1_1_s_t_l_memory_pool_1a7a12a0f971500d8216b07058e812d442"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Allocate</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">out</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3stl13STLMemoryPool8AllocateE7int64_tPP7uint8_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Allocate a new memory region of at least size bytes. </p>
<p>The allocated region shall be 64-byte aligned. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp">
<span class="target" id="classarrow_1_1stl_1_1_s_t_l_memory_pool_1add96cc49c1a19e0ae9e5d71275eb0602"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Allocate</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">alignment</span></span>, <span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">out</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><br /></dt>
<dd><p>Allocate a new memory region of at least size bytes aligned to alignment. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp">
<span class="target" id="classarrow_1_1stl_1_1_s_t_l_memory_pool_1ac7c1192373f38c7f8fac79e8c29e2018"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Free</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">buffer</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">alignment</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><br /></dt>
<dd><p>Free an allocated region. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>buffer</strong> – Pointer to the start of the allocated memory region </p></li>
<li><p><strong>size</strong> – Allocated size located at buffer. An allocator implementation may use this for tracking the amount of allocated bytes as well as for faster deallocation if supported by its backend. </p></li>
<li><p><strong>alignment</strong> – The alignment of the allocation. Defaults to 64 bytes. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp">
<span class="target" id="classarrow_1_1stl_1_1_s_t_l_memory_pool_1ac2489714eef31ba5c65e3e4c6a3bfa62"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Reallocate</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">old_size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">new_size</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">alignment</span></span>, <span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">ptr</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><br /></dt>
<dd><p>Resize an already allocated memory section. </p>
<p>As by default most default allocators on a platform don’t support aligned reallocation, this function can involve a copy of the underlying data. </p>
</dd></dl>
</div>
</dd></dl>
</section>
</section>
</article>
<footer class="prev-next-footer">
<div class="prev-next-area">
<a class="left-prev"
href="support.html"
title="previous page">
<i class="fa-solid fa-angle-left"></i>
<div class="prev-next-info">
<p class="prev-next-subtitle">previous</p>
<p class="prev-next-title">Programming Support</p>
</div>
</a>
<a class="right-next"
href="thread.html"
title="next page">
<div class="prev-next-info">
<p class="prev-next-subtitle">next</p>
<p class="prev-next-title">Thread (management)</p>
</div>
<i class="fa-solid fa-angle-right"></i>
</a>
</div>
</footer>
</div>
<div class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner">
<div class="sidebar-secondary-item">
<div
id="pst-page-navigation-heading-2"
class="page-toc tocsection onthispage">
<i class="fa-solid fa-list"></i> On this page
</div>
<nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2">
<ul class="visible nav section-nav flex-column">
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#devices">Devices</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#memory-managers">Memory Managers</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#buffers">Buffers</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#memory-pools">Memory Pools</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#allocation-functions">Allocation Functions</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#slicing">Slicing</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#buffer-builders">Buffer Builders</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#stl-integration">STL Integration</a></li>
</ul>
</nav></div>
<div class="sidebar-secondary-item">
<div class="tocsection editthispage">
<a href="https://github.com/apache/arrow/edit/main/docs/source/cpp/api/memory.rst">
<i class="fa-solid fa-pencil"></i>
Edit on GitHub
</a>
</div>
</div>
</div></div>
</div>
<footer class="bd-footer-content">
</footer>
</main>
</div>
</div>
<!-- Scripts loaded after <body> so the DOM is not blocked -->
<script src="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
<script src="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
<footer class="bd-footer">
<div class="bd-footer__inner bd-page-width">
<div class="footer-items__start">
<div class="footer-item">
<p class="copyright">
© Copyright 2016-2024 Apache Software Foundation.
Apache Arrow, Arrow, Apache, the Apache feather logo, and the Apache Arrow project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.
<br/>
</p>
</div>
<div class="footer-item">
<p class="sphinx-version">
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 6.2.0.
<br/>
</p>
</div>
</div>
<div class="footer-items__end">
<div class="footer-item">
<p class="theme-version">
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
</p></div>
</div>
</div>
</footer>
</body>
</html>