<!--
SPDX-FileCopyrightText: The Apache Software Foundation

SPDX-License-Identifier: Apache-2.0
-->

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Arrow.Field.export</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <meta charset="utf-8" />

  
  <meta property="og:type" content="website"/>

  

  
  <meta priority="og:title" content="Arrow.Field.export"/>
  <meta priority="og:description" content="Reference for Arrow.Field.export"/>
  <meta name="twitter:title" content="Arrow.Field.export"/>
  <meta name="twitter:description" content="Reference for Arrow.Field.export"/>


  
  <meta name="twitter:card" content="summary"/>

  
  
  
  

  <link rel="stylesheet" href="style.css" type="text/css" />

  

  
  <script src="urlmap.js"></script>
  
  
  <script src="fzy.js"></script>
  <script src="search.js"></script>
  
  <script src="main.js"></script>
</head>

<body>
  <div id="body-wrapper" tabindex="-1">

    <nav class="sidebar devhelp-hidden">
      
      
      <div class="search section">
        <form id="search-form" autocomplete="off">
          <input id="search-input" type="text" name="do-not-autocomplete" placeholder="Click, or press 's' to search" autocomplete="off"/>
        </form>
      </div>
      
      <div class="section namespace">
        <h3><a href="index.html">Arrow</a></h3>
        <p>API Version: 1.0</p>
        
        <p>Library Version: 22.0.0</p>
        
      </div>
      
<div class="section">
  <h5>Type</h5>
  <div class="links">
    <a href="class.Field.html">Field</a>
  </div>
</div>
<div class="section">
  <h5>Methods</h5>
  <div class="links">
  
    <a class="method" href="method.Field.equal.html">equal</a>
  
    <a class="method current" href="method.Field.export.html">export</a>
  
    <a class="method" href="method.Field.get_data_type.html">get_data_type</a>
  
    <a class="method" href="method.Field.get_metadata.html">get_metadata</a>
  
    <a class="method" href="method.Field.get_name.html">get_name</a>
  
    <a class="method" href="method.Field.has_metadata.html">has_metadata</a>
  
    <a class="method" href="method.Field.is_nullable.html">is_nullable</a>
  
    <a class="method" href="method.Field.remove_metadata.html">remove_metadata</a>
  
    <a class="method" href="method.Field.to_string.html">to_string</a>
  
    <a class="method" href="method.Field.to_string_metadata.html">to_string_metadata</a>
  
    <a class="method" href="method.Field.with_merged_metadata.html">with_merged_metadata</a>
  
    <a class="method" href="method.Field.with_metadata.html">with_metadata</a>
  
  </div>
</div>

      <div class="section generator">
        <p>Generated by <a href="https://gitlab.gnome.org/GNOME/gi-docgen">gi-docgen</a> 2023.1</p>
      </div>
    </nav>

    <button id="btn-to-top" class="hidden"><span class="up-arrow"></span></button>

    
<section id="main" class="content">
  <header>
    <h3>Method</h3>
    <h1><a href="index.html">Arrow</a><span class="sep"></span><a href="class.Field.html">Field</a><span class="sep"></span>export</h1>
  </header>

  <section>
    <div class="docblock">
      <p><span class="emblem available">since: 6.0.0</span></p>
    </div>

    <div class="declaration toggle-wrapper">
      <h4 style="display:flex;" id="declaration">
        Declaration
        <a class="anchor" href="#declaration"></a>
        
        <a class="srclink" title="go to source location" href="https://github.com/apache/arrow/blob/main/c_glib/arrow-glib/field.h#L47">[src]</a>
        
      </h4>

      <div class="docblock c-decl">
        <pre><code><div class="highlight"><pre><span></span><span class="n">gpointer</span>
<span class="n">garrow_field_export</span><span class="w"> </span><span class="p">(</span>
<span class="w">  </span><span class="n">GArrowField</span><span class="o">*</span><span class="w"> </span><span class="n">field</span>
<span class="w">  </span><span class="n">GError</span><span class="o">**</span><span class="w"> </span><span class="n">error</span>
<span class="p">)</span>
</pre></div>
</code></pre>
      </div>
    </div>

    <div class="description toggle-wrapper">
      <h4 style="display:flex;" id="description">
        Description
        <a class="anchor" href="#description"></a>
        
      </h4>

      <div class="docblock">
        No description available.
      </div>

      <div class="docblock">
        
        <p>Available since: 6.0.0</p>
        
        
        
        
      </div>

      
    </div>

    

    
    <div class="return-value toggle-wrapper">
      <h4 id="return-value">
        Return value
        <a href="#return-value" class="anchor"></a>
      </h4>

      <div class="docblock">
        <div class="returns">
          <div class="arg-description">
            <p><em>Type:</em>&nbsp;<code>gpointer</code></p>
            <p><p>An exported <code>GArrowField</code> as
  <code>struct ArrowStruct *</code> on success, <code>NULL</code> on&nbsp;error.</p>
<p>It should be freed with the <code>ArrowSchema::release</code> callback then
  <code>g_free()</code> when no longer&nbsp;needed.</p></p>
          </div>
          <div>
            <table>
            
            
            
            <tr><td title="transfer: full">The caller of the method takes ownership of the data, and is responsible for freeing it.</td></tr>
            <tr><td>The return value can be <code>NULL</code>.</td></tr>
            
            </table>
          </div>
        </div>
      </div>
    </div>
    

  </section>
</section>


    

    <section id="search" class="content hidden"></section>

    <footer>
    
    </footer>
  </div>
</body>
</html>