blob: ea9996a6c1c8cf18a73a3402c4180652b23bc4fb [file]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Apache GraphAr C++ Library: src/graphar/high-level/vertices_builder.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Apache GraphAr C++ Library
</div>
<div id="projectbrief">The C++ Library for Apache GraphAr</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_360ef3ae5e4df5878fa0b8837112e0b7.html">graphar</a></li><li class="navelem"><a class="el" href="dir_37f05c718b2ac0c918080dddfde08e1d.html">high-level</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">vertices_builder.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * or more contributor license agreements. See the NOTICE file</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * distributed with this work for additional information</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * with the License. You may obtain a copy of the License at</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * software distributed under the License is distributed on an</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * KIND, either express or implied. See the License for the</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * specific language governing permissions and limitations</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * under the License.</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; </div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;any&gt;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;cassert&gt;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;cstddef&gt;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;unordered_map&gt;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &lt;unordered_set&gt;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;graphar/arrow/chunk_writer.h&quot;</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;graphar/fwd.h&quot;</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;graphar/graph_info.h&quot;</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;graphar/result.h&quot;</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;graphar/status.h&quot;</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;graphar/types.h&quot;</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &quot;graphar/writer_util.h&quot;</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; </div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment">// forward declaration</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword">namespace </span>arrow {</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">class </span>Array;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">class </span>Table;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;} <span class="comment">// namespace arrow</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; </div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keyword">namespace </span>graphar::builder {</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; </div>
<div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classgraphar_1_1builder_1_1_vertex.html"> 52</a></span>&#160;<span class="keyword">class </span><a class="code" href="classgraphar_1_1builder_1_1_vertex.html">Vertex</a> {</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="classgraphar_1_1builder_1_1_vertex.html">Vertex</a>() : empty_(<span class="keyword">true</span>) {}</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; </div>
<div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classgraphar_1_1builder_1_1_vertex.html#ad4b0c92a74322ce0be53523fd254382f"> 61</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classgraphar_1_1builder_1_1_vertex.html#ad4b0c92a74322ce0be53523fd254382f">Vertex</a>(IdType <span class="keywordtype">id</span>) : id_(id), empty_(false) {}</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; </div>
<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classgraphar_1_1builder_1_1_vertex.html#a2779cc7a62e888d2d768edcfd04e75bb"> 68</a></span>&#160; <span class="keyword">inline</span> IdType <a class="code" href="classgraphar_1_1builder_1_1_vertex.html#a2779cc7a62e888d2d768edcfd04e75bb">GetId</a>() const noexcept { <span class="keywordflow">return</span> id_; }</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; </div>
<div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classgraphar_1_1builder_1_1_vertex.html#a0e9a9b63017733934286cd99507d7268"> 75</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classgraphar_1_1builder_1_1_vertex.html#a0e9a9b63017733934286cd99507d7268">SetId</a>(IdType <span class="keywordtype">id</span>) { id_ = id; }</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; </div>
<div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classgraphar_1_1builder_1_1_vertex.html#aa548fa2b39a652afd6a85ac6b51b9547"> 82</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1builder_1_1_vertex.html#aa548fa2b39a652afd6a85ac6b51b9547">Empty</a>() const noexcept { <span class="keywordflow">return</span> empty_; }</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; </div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="comment">// TODO(@acezen): Enable the property to be a vector(list).</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classgraphar_1_1builder_1_1_vertex.html#a32f5e971b9d675f3f1b8154189994226"> 91</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classgraphar_1_1builder_1_1_vertex.html#a32f5e971b9d675f3f1b8154189994226">AddProperty</a>(<span class="keyword">const</span> std::string&amp; name, <span class="keyword">const</span> std::any&amp; val) {</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; empty_ = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; properties_[name] = val;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; </div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classgraphar_1_1builder_1_1_vertex.html#a32f5e971b9d675f3f1b8154189994226">AddProperty</a>(<span class="keyword">const</span> Cardinality cardinality,</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">const</span> std::string&amp; name, <span class="keyword">const</span> std::any&amp; val) {</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">if</span> (cardinality == Cardinality::SINGLE) {</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; cardinalities_[name] = Cardinality::SINGLE;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="classgraphar_1_1builder_1_1_vertex.html#a32f5e971b9d675f3f1b8154189994226">AddProperty</a>(name, val);</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; empty_ = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">if</span> (cardinalities_.find(name) != cardinalities_.end()) {</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">if</span> (cardinalities_[name] != cardinality) {</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Cardinality mismatch for property: &quot;</span> + name);</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keyword">auto</span> property_value_list =</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; std::any_cast&lt;std::vector&lt;std::any&gt;&gt;(properties_[name]);</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; property_value_list.push_back(val);</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; properties_[name] = property_value_list;</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">auto</span> property_value_list = std::vector&lt;std::any&gt;();</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; property_value_list.push_back(val);</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; properties_[name] = property_value_list;</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; cardinalities_[name] = cardinality;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; </div>
<div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classgraphar_1_1builder_1_1_vertex.html#a25721d8da028bae7459aef802f0964ed"> 126</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> std::any&amp; <a class="code" href="classgraphar_1_1builder_1_1_vertex.html#a25721d8da028bae7459aef802f0964ed">GetProperty</a>(<span class="keyword">const</span> std::string&amp; property)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">return</span> properties_.at(property);</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; </div>
<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classgraphar_1_1builder_1_1_vertex.html#acf252d94df3623e8fde2c86d446ebb88"> 135</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> std::unordered_map&lt;std::string, std::any&gt;&amp; <a class="code" href="classgraphar_1_1builder_1_1_vertex.html#acf252d94df3623e8fde2c86d446ebb88">GetProperties</a>()<span class="keyword"></span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">return</span> properties_;</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; </div>
<div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classgraphar_1_1builder_1_1_vertex.html#aa5a0b6642af081eea1faebe3f87d4170"> 146</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1builder_1_1_vertex.html#aa5a0b6642af081eea1faebe3f87d4170">ContainProperty</a>(<span class="keyword">const</span> std::string&amp; property) {</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">return</span> (properties_.find(property) != properties_.end());</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; </div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> IsMultiProperty(<span class="keyword">const</span> std::string&amp; property)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">return</span> (cardinalities_.find(property) != cardinalities_.end() &amp;&amp;</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; cardinalities_.at(property) != Cardinality::SINGLE);</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; </div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="classgraphar_1_1_status.html">Status</a> ValidatePropertyType(<span class="keyword">const</span> std::string&amp; property,</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">const</span> Cardinality cardinality)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">if</span> (cardinality == Cardinality::SINGLE &amp;&amp; IsMultiProperty(property)) {</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a3335cf4bf5cd222d5e29b01fe95e919a">Status::TypeError</a>(</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="stringliteral">&quot;Invalid data cardinality for property &quot;</span>, property,</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="stringliteral">&quot;, defined as SINGLE but got &quot;</span>,</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; cardinalities_.at(property) == Cardinality::LIST ? <span class="stringliteral">&quot;LIST&quot;</span> : <span class="stringliteral">&quot;SET&quot;</span>);</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span> (IsMultiProperty(property) &amp;&amp;</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; (cardinality == Cardinality::SET ||</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; cardinalities_.at(property) == Cardinality::SET)) {</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; GAR_RETURN_NOT_OK(ValidateMultiPropertySet&lt;T&gt;(property));</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">if</span> (IsMultiProperty(property)) {</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keyword">auto</span> value_list =</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; std::any_cast&lt;std::vector&lt;std::any&gt;&gt;(properties_.at(property));</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> value : value_list) {</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keyword">auto</span>&amp; value_type = value.type();</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">if</span> (value_type != <span class="keyword">typeid</span>(T)) {</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a3335cf4bf5cd222d5e29b01fe95e919a">Status::TypeError</a>(<span class="stringliteral">&quot;Invalid data type for property &quot;</span>, property,</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="stringliteral">&quot;, defined as &quot;</span>, <span class="keyword">typeid</span>(T).name(),</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="stringliteral">&quot;, but got &quot;</span>, value_type.name());</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keyword">auto</span>&amp; value_type = properties_.at(property).type();</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">if</span> (value_type != <span class="keyword">typeid</span>(T)) {</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a3335cf4bf5cd222d5e29b01fe95e919a">Status::TypeError</a>(<span class="stringliteral">&quot;Invalid data type for property &quot;</span>, property,</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="stringliteral">&quot;, defined as &quot;</span>, <span class="keyword">typeid</span>(T).name(),</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="stringliteral">&quot;, but got &quot;</span>, value_type.name());</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; }</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#ad92f5c41a661d4f468390e39da90f881">Status::OK</a>();</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; }</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; </div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; Status ValidateMultiProperty(<span class="keyword">const</span> std::string&amp; property)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">if</span> (IsMultiProperty(property) &amp;&amp;</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; cardinalities_.at(property) == Cardinality::SET) {</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; GAR_RETURN_NOT_OK(ValidateMultiPropertySet&lt;T&gt;(property));</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; }</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#ad92f5c41a661d4f468390e39da90f881">Status::OK</a>();</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; }</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; </div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; Status ValidateMultiPropertySet(<span class="keyword">const</span> std::string&amp; property)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keyword">auto</span> vec = std::any_cast&lt;std::vector&lt;std::any&gt;&gt;(properties_.at(property));</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; std::unordered_set&lt;T&gt; seen;</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; item : vec) {</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">if</span> (!seen.insert(std::any_cast&lt;T&gt;(item)).second) {</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a4ee4924ddadfc2c1effc055572084d71">Status::KeyError</a>(</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="stringliteral">&quot;Duplicate values exist in set type multi-property key: &quot;</span>, property,</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="stringliteral">&quot; value: &quot;</span>, std::any_cast&lt;T&gt;(item));</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; }</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#ad92f5c41a661d4f468390e39da90f881">Status::OK</a>();</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; }</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; </div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; IdType id_;</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordtype">bool</span> empty_;</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; std::unordered_map&lt;std::string, std::any&gt; properties_;</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; std::unordered_map&lt;std::string, Cardinality&gt; cardinalities_;</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;};</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; </div>
<div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="classgraphar_1_1builder_1_1_vertices_builder.html"> 226</a></span>&#160;<span class="keyword">class </span><a class="code" href="classgraphar_1_1builder_1_1_vertices_builder.html">VerticesBuilder</a> {</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="classgraphar_1_1builder_1_1_vertices_builder.html#acc85e675bdcdf0e0633a7871bf79bb57"> 241</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classgraphar_1_1builder_1_1_vertices_builder.html#acc85e675bdcdf0e0633a7871bf79bb57">VerticesBuilder</a>(</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keyword">const</span> std::shared_ptr&lt;VertexInfo&gt;&amp; vertex_info, <span class="keyword">const</span> std::string&amp; prefix,</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; IdType start_vertex_index = 0,</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; std::shared_ptr&lt;WriterOptions&gt; writerOptions = <span class="keyword">nullptr</span>,</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keyword">const</span> ValidateLevel&amp; validate_level = ValidateLevel::no_validate)</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; : vertex_info_(std::move(vertex_info)),</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; prefix_(prefix),</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; start_vertex_index_(start_vertex_index),</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; writer_options_(writerOptions),</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; validate_level_(validate_level) {</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">if</span> (validate_level_ == ValidateLevel::default_validate) {</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="stringliteral">&quot;default_validate is not allowed to be set as the global validate &quot;</span></div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="stringliteral">&quot;level for VerticesBuilder&quot;</span>);</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; vertices_.clear();</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; num_vertices_ = 0;</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; is_saved_ = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; }</div>
<div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="classgraphar_1_1builder_1_1_vertices_builder.html#a2f1f8f6a1a913448f1cfad5c77a752ef"> 263</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classgraphar_1_1builder_1_1_vertices_builder.html#a2f1f8f6a1a913448f1cfad5c77a752ef">Clear</a>() {</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; vertices_.clear();</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; num_vertices_ = 0;</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; is_saved_ = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; }</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; </div>
<div class="line"><a name="l00275"></a><span class="lineno"><a class="line" href="classgraphar_1_1builder_1_1_vertices_builder.html#a71995d500d250dcde4a720fc7784b4c4"> 275</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classgraphar_1_1builder_1_1_vertices_builder.html#a71995d500d250dcde4a720fc7784b4c4">SetWriterOptions</a>(std::shared_ptr&lt;WriterOptions&gt; writer_options) {</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; this-&gt;writer_options_ = writer_options;</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; </div>
<div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="classgraphar_1_1builder_1_1_vertices_builder.html#ac53141acf10d53d62cb29ddde271c37a"> 285</a></span>&#160; <span class="keyword">inline</span> std::shared_ptr&lt;WriterOptions&gt; <a class="code" href="classgraphar_1_1builder_1_1_vertices_builder.html#ac53141acf10d53d62cb29ddde271c37a">GetWriterOptions</a>() {</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">return</span> this-&gt;writer_options_;</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; }</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; </div>
<div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="classgraphar_1_1builder_1_1_vertices_builder.html#a02529b3a8cb157af616a10f546e812e3"> 294</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classgraphar_1_1builder_1_1_vertices_builder.html#a02529b3a8cb157af616a10f546e812e3">SetValidateLevel</a>(<span class="keyword">const</span> ValidateLevel&amp; validate_level) {</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">if</span> (validate_level == ValidateLevel::default_validate) {</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; }</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; validate_level_ = validate_level;</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; }</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; </div>
<div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classgraphar_1_1builder_1_1_vertices_builder.html#ac34074a92e9d48a3060a645d0b58f068"> 306</a></span>&#160; <span class="keyword">inline</span> ValidateLevel <a class="code" href="classgraphar_1_1builder_1_1_vertices_builder.html#ac34074a92e9d48a3060a645d0b58f068">GetValidateLevel</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> validate_level_; }</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; </div>
<div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="classgraphar_1_1builder_1_1_vertices_builder.html#a6ea4ec6528ca89d08e9c413dea1a06ca"> 330</a></span>&#160; <a class="code" href="classgraphar_1_1_status.html">Status</a> <a class="code" href="classgraphar_1_1builder_1_1_vertices_builder.html#a6ea4ec6528ca89d08e9c413dea1a06ca">AddVertex</a>(</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <a class="code" href="classgraphar_1_1builder_1_1_vertex.html">Vertex</a>&amp; v, IdType index = -1, <span class="comment">// NOLINT</span></div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; ValidateLevel validate_level = ValidateLevel::default_validate) {</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="comment">// validate</span></div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; GAR_RETURN_NOT_OK(validate(v, index, validate_level));</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="comment">// add a vertex</span></div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">if</span> (index == -1) {</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; v.<a class="code" href="classgraphar_1_1builder_1_1_vertex.html#a0e9a9b63017733934286cd99507d7268">SetId</a>(vertices_.size());</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; vertices_.push_back(v);</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; v.<a class="code" href="classgraphar_1_1builder_1_1_vertex.html#a0e9a9b63017733934286cd99507d7268">SetId</a>(index);</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">if</span> (index &gt;= <span class="keyword">static_cast&lt;</span>IdType<span class="keyword">&gt;</span>(vertices_.size()))</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; vertices_.resize(index + 1);</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; vertices_[index] = v;</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; num_vertices_++;</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#ad92f5c41a661d4f468390e39da90f881">Status::OK</a>();</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; }</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; </div>
<div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="classgraphar_1_1builder_1_1_vertices_builder.html#abbfa8e3626d4ba178eb242e31567b1f7"> 354</a></span>&#160; IdType <a class="code" href="classgraphar_1_1builder_1_1_vertices_builder.html#abbfa8e3626d4ba178eb242e31567b1f7">GetNum</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> num_vertices_; }</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; </div>
<div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="classgraphar_1_1builder_1_1_vertices_builder.html#acd303f1b1cba9b0c4e249695dd3b5fe9"> 361</a></span>&#160; <a class="code" href="classgraphar_1_1_status.html">Status</a> <a class="code" href="classgraphar_1_1builder_1_1_vertices_builder.html#acd303f1b1cba9b0c4e249695dd3b5fe9">Dump</a>() {</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="comment">// construct the writer</span></div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <a class="code" href="classgraphar_1_1_vertex_property_writer.html">VertexPropertyWriter</a> writer(vertex_info_, prefix_, writer_options_,</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; validate_level_);</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; IdType start_chunk_index =</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; start_vertex_index_ / vertex_info_-&gt;GetChunkSize();</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="comment">// convert to table</span></div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> input_table, convertToTable());</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="comment">// write table</span></div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; GAR_RETURN_NOT_OK(writer.<a class="code" href="classgraphar_1_1_vertex_property_writer.html#adea3f0326fad64bc061bc5b01790ab47">WriteTable</a>(input_table, start_chunk_index));</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; GAR_RETURN_NOT_OK(</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; writer.<a class="code" href="classgraphar_1_1_vertex_property_writer.html#addf40fb82fe987af091278e01995b87a">WriteVerticesNum</a>(num_vertices_ + start_vertex_index_));</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; is_saved_ = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; vertices_.clear();</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#ad92f5c41a661d4f468390e39da90f881">Status::OK</a>();</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; }</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; </div>
<div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="classgraphar_1_1builder_1_1_vertices_builder.html#a8ae83bcc25a18c4caf4774c02292ca73"> 389</a></span>&#160; <span class="keyword">static</span> Result&lt;std::shared_ptr&lt;VerticesBuilder&gt;&gt; <a class="code" href="classgraphar_1_1builder_1_1_vertices_builder.html#a8ae83bcc25a18c4caf4774c02292ca73">Make</a>(</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keyword">const</span> std::shared_ptr&lt;VertexInfo&gt;&amp; vertex_info, <span class="keyword">const</span> std::string&amp; prefix,</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; std::shared_ptr&lt;WriterOptions&gt; writer_options,</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; IdType start_vertex_index = 0,</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keyword">const</span> ValidateLevel&amp; validate_level = ValidateLevel::no_validate) {</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">return</span> std::make_shared&lt;VerticesBuilder&gt;(vertex_info, prefix,</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; start_vertex_index, writer_options,</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; validate_level);</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; </div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keyword">static</span> Result&lt;std::shared_ptr&lt;VerticesBuilder&gt;&gt; <a class="code" href="classgraphar_1_1builder_1_1_vertices_builder.html#a8ae83bcc25a18c4caf4774c02292ca73">Make</a>(</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keyword">const</span> std::shared_ptr&lt;VertexInfo&gt;&amp; vertex_info, <span class="keyword">const</span> std::string&amp; prefix,</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; IdType start_vertex_index = 0,</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keyword">const</span> ValidateLevel&amp; validate_level = ValidateLevel::no_validate) {</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">return</span> std::make_shared&lt;VerticesBuilder&gt;(</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; vertex_info, prefix, start_vertex_index, <span class="keyword">nullptr</span>, validate_level);</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; }</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; </div>
<div class="line"><a name="l00418"></a><span class="lineno"><a class="line" href="classgraphar_1_1builder_1_1_vertices_builder.html#ad110ed27ea89b51c297fdf5dc022a232"> 418</a></span>&#160; <span class="keyword">static</span> Result&lt;std::shared_ptr&lt;VerticesBuilder&gt;&gt; <a class="code" href="classgraphar_1_1builder_1_1_vertices_builder.html#ad110ed27ea89b51c297fdf5dc022a232">Make</a>(</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keyword">const</span> std::shared_ptr&lt;GraphInfo&gt;&amp; graph_info, <span class="keyword">const</span> std::string&amp; type,</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; std::shared_ptr&lt;WriterOptions&gt; writer_options,</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; IdType start_vertex_index = 0,</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keyword">const</span> ValidateLevel&amp; validate_level = ValidateLevel::no_validate) {</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> vertex_info = graph_info-&gt;GetVertexInfo(type);</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">if</span> (!vertex_info) {</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a4ee4924ddadfc2c1effc055572084d71">Status::KeyError</a>(<span class="stringliteral">&quot;The vertex type &quot;</span>, type,</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="stringliteral">&quot; doesn&#39;t exist in graph &quot;</span>, graph_info-&gt;GetName(),</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="stringliteral">&quot;.&quot;</span>);</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; }</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1builder_1_1_vertices_builder.html#a8ae83bcc25a18c4caf4774c02292ca73">Make</a>(vertex_info, graph_info-&gt;GetPrefix(), writer_options,</div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; start_vertex_index, validate_level);</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; }</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; </div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keyword">static</span> Result&lt;std::shared_ptr&lt;VerticesBuilder&gt;&gt; <a class="code" href="classgraphar_1_1builder_1_1_vertices_builder.html#a8ae83bcc25a18c4caf4774c02292ca73">Make</a>(</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keyword">const</span> std::shared_ptr&lt;GraphInfo&gt;&amp; graph_info, <span class="keyword">const</span> std::string&amp; type,</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; IdType start_vertex_index = 0,</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keyword">const</span> ValidateLevel&amp; validate_level = ValidateLevel::no_validate) {</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> vertex_info = graph_info-&gt;GetVertexInfo(type);</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">if</span> (!vertex_info) {</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a4ee4924ddadfc2c1effc055572084d71">Status::KeyError</a>(<span class="stringliteral">&quot;The vertex type &quot;</span>, type,</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="stringliteral">&quot; doesn&#39;t exist in graph &quot;</span>, graph_info-&gt;GetName(),</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="stringliteral">&quot;.&quot;</span>);</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; }</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1builder_1_1_vertices_builder.html#a8ae83bcc25a18c4caf4774c02292ca73">Make</a>(vertex_info, graph_info-&gt;GetPrefix(), <span class="keyword">nullptr</span>,</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; start_vertex_index, validate_level);</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; }</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; </div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; Status validate(<span class="keyword">const</span> Vertex&amp; v, IdType index,</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; ValidateLevel validate_level) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; </div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; Status appendToArray(<span class="keyword">const</span> std::shared_ptr&lt;DataType&gt;&amp; type,</div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keyword">const</span> std::string&amp; property_name,</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; std::shared_ptr&lt;arrow::Array&gt;&amp; array); <span class="comment">// NOLINT</span></div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; </div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keyword">template</span> &lt;Type type&gt;</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; Status tryToAppend(<span class="keyword">const</span> std::string&amp; property_name,</div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; std::shared_ptr&lt;arrow::Array&gt;&amp; array); <span class="comment">// NOLINT</span></div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; </div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; Result&lt;std::shared_ptr&lt;arrow::Table&gt;&gt; convertToTable();</div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; </div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; std::shared_ptr&lt;VertexInfo&gt; vertex_info_;</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; std::string prefix_;</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; std::vector&lt;Vertex&gt; vertices_;</div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; IdType start_vertex_index_;</div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; IdType num_vertices_;</div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordtype">bool</span> is_saved_;</div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; std::shared_ptr&lt;WriterOptions&gt; writer_options_;</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; ValidateLevel validate_level_;</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;};</div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; </div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;} <span class="comment">// namespace graphar::builder</span></div>
<div class="ttc" id="aclassgraphar_1_1_status_html"><div class="ttname"><a href="classgraphar_1_1_status.html">graphar::Status</a></div><div class="ttdoc">Status outcome object (success or error)</div><div class="ttdef"><b>Definition:</b> <a href="status_8h_source.html#l00123">status.h:123</a></div></div>
<div class="ttc" id="aclassgraphar_1_1_status_html_a3335cf4bf5cd222d5e29b01fe95e919a"><div class="ttname"><a href="classgraphar_1_1_status.html#a3335cf4bf5cd222d5e29b01fe95e919a">graphar::Status::TypeError</a></div><div class="ttdeci">static Status TypeError(Args &amp;&amp;... args)</div><div class="ttdef"><b>Definition:</b> <a href="status_8h_source.html#l00178">status.h:178</a></div></div>
<div class="ttc" id="aclassgraphar_1_1_status_html_a4ee4924ddadfc2c1effc055572084d71"><div class="ttname"><a href="classgraphar_1_1_status.html#a4ee4924ddadfc2c1effc055572084d71">graphar::Status::KeyError</a></div><div class="ttdeci">static Status KeyError(Args &amp;&amp;... args)</div><div class="ttdef"><b>Definition:</b> <a href="status_8h_source.html#l00172">status.h:172</a></div></div>
<div class="ttc" id="aclassgraphar_1_1_status_html_ad92f5c41a661d4f468390e39da90f881"><div class="ttname"><a href="classgraphar_1_1_status.html#ad92f5c41a661d4f468390e39da90f881">graphar::Status::OK</a></div><div class="ttdeci">static Status OK()</div><div class="ttdef"><b>Definition:</b> <a href="status_8h_source.html#l00157">status.h:157</a></div></div>
<div class="ttc" id="aclassgraphar_1_1_vertex_property_writer_html"><div class="ttname"><a href="classgraphar_1_1_vertex_property_writer.html">graphar::VertexPropertyWriter</a></div><div class="ttdoc">The writer for vertex property group chunks.</div><div class="ttdef"><b>Definition:</b> <a href="chunk__writer_8h_source.html#l00057">chunk_writer.h:57</a></div></div>
<div class="ttc" id="aclassgraphar_1_1_vertex_property_writer_html_addf40fb82fe987af091278e01995b87a"><div class="ttname"><a href="classgraphar_1_1_vertex_property_writer.html#addf40fb82fe987af091278e01995b87a">graphar::VertexPropertyWriter::WriteVerticesNum</a></div><div class="ttdeci">Status WriteVerticesNum(const IdType &amp;count, ValidateLevel validate_level=ValidateLevel::default_validate) const</div><div class="ttdoc">Write the number of vertices into the file.</div><div class="ttdef"><b>Definition:</b> <a href="chunk__writer_8cc_source.html#l00216">chunk_writer.cc:216</a></div></div>
<div class="ttc" id="aclassgraphar_1_1_vertex_property_writer_html_adea3f0326fad64bc061bc5b01790ab47"><div class="ttname"><a href="classgraphar_1_1_vertex_property_writer.html#adea3f0326fad64bc061bc5b01790ab47">graphar::VertexPropertyWriter::WriteTable</a></div><div class="ttdeci">Status WriteTable(const std::shared_ptr&lt; arrow::Table &gt; &amp;input_table, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, IdType start_chunk_index, ValidateLevel validate_level=ValidateLevel::default_validate) const</div><div class="ttdoc">Write a single property group for multiple vertex chunks to corresponding files.</div><div class="ttdef"><b>Definition:</b> <a href="chunk__writer_8cc_source.html#l00286">chunk_writer.cc:286</a></div></div>
<div class="ttc" id="aclassgraphar_1_1builder_1_1_vertex_html"><div class="ttname"><a href="classgraphar_1_1builder_1_1_vertex.html">graphar::builder::Vertex</a></div><div class="ttdoc">Vertex is designed for constructing vertices builder.</div><div class="ttdef"><b>Definition:</b> <a href="vertices__builder_8h_source.html#l00052">vertices_builder.h:52</a></div></div>
<div class="ttc" id="aclassgraphar_1_1builder_1_1_vertex_html_a0e9a9b63017733934286cd99507d7268"><div class="ttname"><a href="classgraphar_1_1builder_1_1_vertex.html#a0e9a9b63017733934286cd99507d7268">graphar::builder::Vertex::SetId</a></div><div class="ttdeci">void SetId(IdType id)</div><div class="ttdoc">Set id of the vertex.</div><div class="ttdef"><b>Definition:</b> <a href="vertices__builder_8h_source.html#l00075">vertices_builder.h:75</a></div></div>
<div class="ttc" id="aclassgraphar_1_1builder_1_1_vertex_html_a25721d8da028bae7459aef802f0964ed"><div class="ttname"><a href="classgraphar_1_1builder_1_1_vertex.html#a25721d8da028bae7459aef802f0964ed">graphar::builder::Vertex::GetProperty</a></div><div class="ttdeci">const std::any &amp; GetProperty(const std::string &amp;property) const</div><div class="ttdoc">Get a property of the vertex.</div><div class="ttdef"><b>Definition:</b> <a href="vertices__builder_8h_source.html#l00126">vertices_builder.h:126</a></div></div>
<div class="ttc" id="aclassgraphar_1_1builder_1_1_vertex_html_a2779cc7a62e888d2d768edcfd04e75bb"><div class="ttname"><a href="classgraphar_1_1builder_1_1_vertex.html#a2779cc7a62e888d2d768edcfd04e75bb">graphar::builder::Vertex::GetId</a></div><div class="ttdeci">IdType GetId() const noexcept</div><div class="ttdoc">Get id of the vertex.</div><div class="ttdef"><b>Definition:</b> <a href="vertices__builder_8h_source.html#l00068">vertices_builder.h:68</a></div></div>
<div class="ttc" id="aclassgraphar_1_1builder_1_1_vertex_html_a32f5e971b9d675f3f1b8154189994226"><div class="ttname"><a href="classgraphar_1_1builder_1_1_vertex.html#a32f5e971b9d675f3f1b8154189994226">graphar::builder::Vertex::AddProperty</a></div><div class="ttdeci">void AddProperty(const std::string &amp;name, const std::any &amp;val)</div><div class="ttdoc">Add a property to the vertex.</div><div class="ttdef"><b>Definition:</b> <a href="vertices__builder_8h_source.html#l00091">vertices_builder.h:91</a></div></div>
<div class="ttc" id="aclassgraphar_1_1builder_1_1_vertex_html_aa548fa2b39a652afd6a85ac6b51b9547"><div class="ttname"><a href="classgraphar_1_1builder_1_1_vertex.html#aa548fa2b39a652afd6a85ac6b51b9547">graphar::builder::Vertex::Empty</a></div><div class="ttdeci">bool Empty() const noexcept</div><div class="ttdoc">Check if the vertex is empty.</div><div class="ttdef"><b>Definition:</b> <a href="vertices__builder_8h_source.html#l00082">vertices_builder.h:82</a></div></div>
<div class="ttc" id="aclassgraphar_1_1builder_1_1_vertex_html_aa5a0b6642af081eea1faebe3f87d4170"><div class="ttname"><a href="classgraphar_1_1builder_1_1_vertex.html#aa5a0b6642af081eea1faebe3f87d4170">graphar::builder::Vertex::ContainProperty</a></div><div class="ttdeci">bool ContainProperty(const std::string &amp;property)</div><div class="ttdoc">Check if the vertex contains a property.</div><div class="ttdef"><b>Definition:</b> <a href="vertices__builder_8h_source.html#l00146">vertices_builder.h:146</a></div></div>
<div class="ttc" id="aclassgraphar_1_1builder_1_1_vertex_html_acf252d94df3623e8fde2c86d446ebb88"><div class="ttname"><a href="classgraphar_1_1builder_1_1_vertex.html#acf252d94df3623e8fde2c86d446ebb88">graphar::builder::Vertex::GetProperties</a></div><div class="ttdeci">const std::unordered_map&lt; std::string, std::any &gt; &amp; GetProperties() const</div><div class="ttdoc">Get all properties of the vertex.</div><div class="ttdef"><b>Definition:</b> <a href="vertices__builder_8h_source.html#l00135">vertices_builder.h:135</a></div></div>
<div class="ttc" id="aclassgraphar_1_1builder_1_1_vertex_html_ad4b0c92a74322ce0be53523fd254382f"><div class="ttname"><a href="classgraphar_1_1builder_1_1_vertex.html#ad4b0c92a74322ce0be53523fd254382f">graphar::builder::Vertex::Vertex</a></div><div class="ttdeci">Vertex(IdType id)</div><div class="ttdoc">Initialize the vertex with a given id.</div><div class="ttdef"><b>Definition:</b> <a href="vertices__builder_8h_source.html#l00061">vertices_builder.h:61</a></div></div>
<div class="ttc" id="aclassgraphar_1_1builder_1_1_vertices_builder_html"><div class="ttname"><a href="classgraphar_1_1builder_1_1_vertices_builder.html">graphar::builder::VerticesBuilder</a></div><div class="ttdoc">VertexBuilder is designed for building and writing a collection of vertices.</div><div class="ttdef"><b>Definition:</b> <a href="vertices__builder_8h_source.html#l00226">vertices_builder.h:226</a></div></div>
<div class="ttc" id="aclassgraphar_1_1builder_1_1_vertices_builder_html_a02529b3a8cb157af616a10f546e812e3"><div class="ttname"><a href="classgraphar_1_1builder_1_1_vertices_builder.html#a02529b3a8cb157af616a10f546e812e3">graphar::builder::VerticesBuilder::SetValidateLevel</a></div><div class="ttdeci">void SetValidateLevel(const ValidateLevel &amp;validate_level)</div><div class="ttdoc">Set the validate level.</div><div class="ttdef"><b>Definition:</b> <a href="vertices__builder_8h_source.html#l00294">vertices_builder.h:294</a></div></div>
<div class="ttc" id="aclassgraphar_1_1builder_1_1_vertices_builder_html_a2f1f8f6a1a913448f1cfad5c77a752ef"><div class="ttname"><a href="classgraphar_1_1builder_1_1_vertices_builder.html#a2f1f8f6a1a913448f1cfad5c77a752ef">graphar::builder::VerticesBuilder::Clear</a></div><div class="ttdeci">void Clear()</div><div class="ttdoc">Clear the vertices in this VerciesBuilder.</div><div class="ttdef"><b>Definition:</b> <a href="vertices__builder_8h_source.html#l00263">vertices_builder.h:263</a></div></div>
<div class="ttc" id="aclassgraphar_1_1builder_1_1_vertices_builder_html_a6ea4ec6528ca89d08e9c413dea1a06ca"><div class="ttname"><a href="classgraphar_1_1builder_1_1_vertices_builder.html#a6ea4ec6528ca89d08e9c413dea1a06ca">graphar::builder::VerticesBuilder::AddVertex</a></div><div class="ttdeci">Status AddVertex(Vertex &amp;v, IdType index=-1, ValidateLevel validate_level=ValidateLevel::default_validate)</div><div class="ttdoc">Add a vertex with the given index.</div><div class="ttdef"><b>Definition:</b> <a href="vertices__builder_8h_source.html#l00330">vertices_builder.h:330</a></div></div>
<div class="ttc" id="aclassgraphar_1_1builder_1_1_vertices_builder_html_a71995d500d250dcde4a720fc7784b4c4"><div class="ttname"><a href="classgraphar_1_1builder_1_1_vertices_builder.html#a71995d500d250dcde4a720fc7784b4c4">graphar::builder::VerticesBuilder::SetWriterOptions</a></div><div class="ttdeci">void SetWriterOptions(std::shared_ptr&lt; WriterOptions &gt; writer_options)</div><div class="ttdoc">Set the writerOptions.</div><div class="ttdef"><b>Definition:</b> <a href="vertices__builder_8h_source.html#l00275">vertices_builder.h:275</a></div></div>
<div class="ttc" id="aclassgraphar_1_1builder_1_1_vertices_builder_html_a8ae83bcc25a18c4caf4774c02292ca73"><div class="ttname"><a href="classgraphar_1_1builder_1_1_vertices_builder.html#a8ae83bcc25a18c4caf4774c02292ca73">graphar::builder::VerticesBuilder::Make</a></div><div class="ttdeci">static Result&lt; std::shared_ptr&lt; VerticesBuilder &gt; &gt; Make(const std::shared_ptr&lt; VertexInfo &gt; &amp;vertex_info, const std::string &amp;prefix, std::shared_ptr&lt; WriterOptions &gt; writer_options, IdType start_vertex_index=0, const ValidateLevel &amp;validate_level=ValidateLevel::no_validate)</div><div class="ttdoc">Construct a VertexBuilder from vertex info.</div><div class="ttdef"><b>Definition:</b> <a href="vertices__builder_8h_source.html#l00389">vertices_builder.h:389</a></div></div>
<div class="ttc" id="aclassgraphar_1_1builder_1_1_vertices_builder_html_abbfa8e3626d4ba178eb242e31567b1f7"><div class="ttname"><a href="classgraphar_1_1builder_1_1_vertices_builder.html#abbfa8e3626d4ba178eb242e31567b1f7">graphar::builder::VerticesBuilder::GetNum</a></div><div class="ttdeci">IdType GetNum() const</div><div class="ttdoc">Get the current number of vertices in the collection.</div><div class="ttdef"><b>Definition:</b> <a href="vertices__builder_8h_source.html#l00354">vertices_builder.h:354</a></div></div>
<div class="ttc" id="aclassgraphar_1_1builder_1_1_vertices_builder_html_ac34074a92e9d48a3060a645d0b58f068"><div class="ttname"><a href="classgraphar_1_1builder_1_1_vertices_builder.html#ac34074a92e9d48a3060a645d0b58f068">graphar::builder::VerticesBuilder::GetValidateLevel</a></div><div class="ttdeci">ValidateLevel GetValidateLevel() const</div><div class="ttdoc">Get the validate level.</div><div class="ttdef"><b>Definition:</b> <a href="vertices__builder_8h_source.html#l00306">vertices_builder.h:306</a></div></div>
<div class="ttc" id="aclassgraphar_1_1builder_1_1_vertices_builder_html_ac53141acf10d53d62cb29ddde271c37a"><div class="ttname"><a href="classgraphar_1_1builder_1_1_vertices_builder.html#ac53141acf10d53d62cb29ddde271c37a">graphar::builder::VerticesBuilder::GetWriterOptions</a></div><div class="ttdeci">std::shared_ptr&lt; WriterOptions &gt; GetWriterOptions()</div><div class="ttdoc">Set the writerOptions.</div><div class="ttdef"><b>Definition:</b> <a href="vertices__builder_8h_source.html#l00285">vertices_builder.h:285</a></div></div>
<div class="ttc" id="aclassgraphar_1_1builder_1_1_vertices_builder_html_acc85e675bdcdf0e0633a7871bf79bb57"><div class="ttname"><a href="classgraphar_1_1builder_1_1_vertices_builder.html#acc85e675bdcdf0e0633a7871bf79bb57">graphar::builder::VerticesBuilder::VerticesBuilder</a></div><div class="ttdeci">VerticesBuilder(const std::shared_ptr&lt; VertexInfo &gt; &amp;vertex_info, const std::string &amp;prefix, IdType start_vertex_index=0, std::shared_ptr&lt; WriterOptions &gt; writerOptions=nullptr, const ValidateLevel &amp;validate_level=ValidateLevel::no_validate)</div><div class="ttdoc">Initialize the VerticesBuilder.</div><div class="ttdef"><b>Definition:</b> <a href="vertices__builder_8h_source.html#l00241">vertices_builder.h:241</a></div></div>
<div class="ttc" id="aclassgraphar_1_1builder_1_1_vertices_builder_html_acd303f1b1cba9b0c4e249695dd3b5fe9"><div class="ttname"><a href="classgraphar_1_1builder_1_1_vertices_builder.html#acd303f1b1cba9b0c4e249695dd3b5fe9">graphar::builder::VerticesBuilder::Dump</a></div><div class="ttdeci">Status Dump()</div><div class="ttdoc">Dump the collection into files.</div><div class="ttdef"><b>Definition:</b> <a href="vertices__builder_8h_source.html#l00361">vertices_builder.h:361</a></div></div>
<div class="ttc" id="aclassgraphar_1_1builder_1_1_vertices_builder_html_ad110ed27ea89b51c297fdf5dc022a232"><div class="ttname"><a href="classgraphar_1_1builder_1_1_vertices_builder.html#ad110ed27ea89b51c297fdf5dc022a232">graphar::builder::VerticesBuilder::Make</a></div><div class="ttdeci">static Result&lt; std::shared_ptr&lt; VerticesBuilder &gt; &gt; Make(const std::shared_ptr&lt; GraphInfo &gt; &amp;graph_info, const std::string &amp;type, std::shared_ptr&lt; WriterOptions &gt; writer_options, IdType start_vertex_index=0, const ValidateLevel &amp;validate_level=ValidateLevel::no_validate)</div><div class="ttdoc">Construct a VertexBuilder from graph info and vertex type.</div><div class="ttdef"><b>Definition:</b> <a href="vertices__builder_8h_source.html#l00418">vertices_builder.h:418</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<!-- disclaimer_footer.html -->
<footer style="text-align: center; font-size: 12px;">
<div>
<p>
Apache GraphAr is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
</p>
<p>
Copyright © 2024 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. <br/>
Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries.
</p>
</div>
</footer>