Skip to content

Latest commit

 

History

History
129 lines (88 loc) · 4.31 KB

tutorial_cpp_numeric.rst

File metadata and controls

129 lines (88 loc) · 4.31 KB

Accessing Numeric Data

Accessing Scalars and Arrays

You can access leaf types (numeric scalars or arrays) using Node's as_{type} methods.

../../tests/docs/t_conduit_docs_tutorial_numeric.cpp

t_conduit_docs_tutorial_numeric_out.txt

Or you can use Node::value(), which can infer the correct return type via a cast.

../../tests/docs/t_conduit_docs_tutorial_numeric.cpp

t_conduit_docs_tutorial_numeric_out.txt

Accessing array data via pointers works the same way, using Node's as_{type} methods.

../../tests/docs/t_conduit_docs_tutorial_numeric.cpp

t_conduit_docs_tutorial_numeric_out.txt

Or using Node::value():

../../tests/docs/t_conduit_docs_tutorial_numeric.cpp

t_conduit_docs_tutorial_numeric_out.txt

For non-contiguous arrays, direct pointer access is complex due to the indexing required. Conduit provides a simple DataArray class that handles per-element indexing for all types of arrays.

../../tests/docs/t_conduit_docs_tutorial_numeric.cpp

t_conduit_docs_tutorial_numeric_out.txt

C++11 Initializer Lists

You can set Node values using C++11 style initializer lists of numeric literals.

../../tests/docs/t_conduit_docs_tutorial_numeric.cpp

t_conduit_docs_tutorial_numeric_out.txt

Using Introspection and Conversion

In this example, we have an array in a node that we are interested in processing using an existing function that only handles doubles. We ensure the node is compatible with the function, or transform it to a contiguous double array.

../../tests/docs/t_conduit_docs_tutorial_numeric.cpp

t_conduit_docs_tutorial_numeric_out.txt