ArrayOf::doubleScalar(value)
value.asDoubleScalar()
value.rows()
L'API C++ des valeurs est utilisée par les modules natifs, le code d'extension et les intégrations embarquées pour créer, inspecter et extraire des valeurs Nelson. Le point d'entrée principal est le header public ArrayOf.hpp, qui expose les macros NELSON_ARRAYOF_API_VERSION pour les vérifications de version.
Les fonctions de fabrique de ArrayOf décrivent directement la valeur créée. Les exemples courants incluent doubleScalar, singleScalar, logicalScalar, int32Scalar, doubleRowVector, doubleMatrix2d, cellArray, structArray, stringArray, table et handle.
Les accesseurs de propriétés simples utilisent des noms courts comme rows, columns, elementCount, dimensions, dataClass, fieldNames et referenceCount. Ces fonctions doivent rester peu coûteuses et ne doivent pas masquer d'allocation.
Les noms commençant par as extraient une valeur C++ existante depuis une valeur Nelson, par exemple asDoubleScalar, asUtf8String, asWideString, asIndexVector et asFunctionHandle.
Les noms commençant par to créent une nouvelle représentation. Les noms commençant par toAllocated, comme toAllocatedUtf8CString, rendent l'allocation et la propriété explicites.
Les mutations et les tests d'état suivent les préfixes verbaux habituels : setX modifie une propriété, isX teste un état et makeX transforme la valeur en place.
L'API conserve les chemins rapides : stockage scalaire inline, dimensions mises en cache dans Data, propriété par copy-on-write et accès pointeur sans allocation cachée. Les pointeurs retournés par les valeurs restent valides uniquement tant que la valeur propriétaire et l'état de son stockage restent valides.
ArrayOf value = ArrayOf::doubleScalar(3.0);
double scalar = value.asDoubleScalar();
indexType rows = value.rows();
indexType cols = value.columns();
ArrayOfVector items;
items << ArrayOf::doubleScalar(1.0);
items << ArrayOf::stringArray("name");
ArrayOf cells = ArrayOf::cellArray(items);
indexType count = cells.elementCount();
| Version | Description |
|---|---|
| 2.0.0 | version initiale |