cpp_api
Conventions de l'API C++ des valeurs pour les types noyau de Nelson.
📝Syntaxe
ArrayOf::doubleScalar(value)
value.asDoubleScalar()
value.rows()
📄Description

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.

💡Exemples
Créer et inspecter une valeur scalaire.
ArrayOf value = ArrayOf::doubleScalar(3.0);
double scalar = value.asDoubleScalar();
indexType rows = value.rows();
indexType cols = value.columns();
Créer un tableau de cellules et lire des propriétés simples.
ArrayOfVector items;
items << ArrayOf::doubleScalar(1.0);
items << ArrayOf::stringArray("name");
ArrayOf cells = ArrayOf::cellArray(items);
indexType count = cells.elementCount();
🔗Voir aussi
classisa
🕔Historique des versions
Version Description
2.0.0 version initiale
Modifier cette page sur GitHub