Table of Contents

Conventions d'API

Lors de l'utilisation de l'API d'EasyAR Sense, certaines conventions doivent être respectées, sans quoi le programme peut planter, présenter des fuites mémoire ou un comportement anormal.

Langues prises en charge

EasyAR Sense prend en charge les langages suivants :

  • C

    Prend en charge C99 et Visual C++, gcc, clang

  • C++

    Prend en charge C++17 et Visual C++, gcc, clang

    La seule fonctionnalité C++17 utilisée est std::optional. Pour une utilisation en environnement C++11, utilisez optional lite, remplacez std::optional par nonstd::optional dans les en-têtes d'interface et #include <optional> par #include "nonstd/optional.hpp"

  • Java

    Pris en charge uniquement sur Android, compatible Java SE 6+

  • Kotlin

    Pris en charge uniquement sur Android

  • Objective-C

    Pris en charge uniquement sur iOS/macOS/visionOS

  • Swift

    Prend en charge Swift 4.2+

  • C#

    Prend en charge .Net Framework 3.5+, .Net Core, .Net 5+, Mono, Unity/Mono, Unity/IL2CPP

Modèle de sécurité des threads

Par défaut, si non spécifié, les membres statiques d'une classe sont thread-safe.

Par défaut, si non spécifié, les membres d'instance d'une classe sont thread-safe avec un verrou externe, mais non thread-safe sans verrou.

Par défaut, si non spécifié, le destructeur d'une classe peut être appelé depuis n'importe quel thread après la fin des autres appels sur l'objet, et est thread-safe à ce moment.

Modèle de mémoire

EasyAR Sense utilise en interne std::shared_ptr de C++ pour le comptage de références. Il existe une incompatibilité fondamentale entre le comptage de références et le garbage collection, empêchant une conversion transparente.

  • C, C#, Java/Kotlin

    Requiert un comptage de références manuel : utilisez dispose pour libérer les références aux objets détenus, et clone pour créer une nouvelle référence à partir d'une référence existante.

    Les paramètres passés aux callbacks d'EasyAR Sense sont automatiquement libérés après le callback. Pour les conserver, clonez-les. Cette libération automatique permet de supporter les callbacks sans logique.

    L'utilisation d'objets EasyAR Sense dans les callbacks peut créer des références circulaires. Traitez-les comme des ressources (ex: fichiers, handles système) à libérer manuellement pour éviter les fuites mémoire.

  • C++, Objective-C, Swift

    Utilise le comptage de références intégré au langage.

    L'utilisation d'objets EasyAR Sense dans les callbacks peut créer des références circulaires. Utilisez judicieusement la capture de références, std::weak_ptr, etc.

Encodage des chaînes de caractères

L'encodage des chaînes dans les interfaces est :

  • C, C++

    UTF-8

  • Java, Kotlin, Objective-C, C#

    UTF-16

  • Swift

    UTF-16 ou UTF-8, voir Swift documentation