Contenu du kit de Support     Index du Kit de Support

BFlattenable

Dérivée de: (aucune)

Déclarée dans: be/support/Flattenable.h

Bibliothèque: libbe.so

Sommaire

La classe BFlattenable déclare un protocole pour les objets qui peuvent être écrits dans un tampon non-typé; et charger depuis le tampon. En implémentant ce protocole, une classe donne aux autres la possibilité de manipuler cet objet de façon simplifier. Actuellement, seule la classe BMessage, par le biais des fonctions AddFlat() et FindFlat(), d&ecute;clare une API qui peut traiter avec des objets BFlattenable. La classe BPath dans le kit de Stockage dérive de BFlattenable.

Comme cette classe déclare seulement un protocole pour les autres classes à implémenter, elle n'inclue pas de constructeur et de destructeur.


Fonctions Membres


AllowsTypeCode() voir TypeCode()


Flatten() , Unflatten()

                                                         
  

virtual status_t Flatten(void *buffer, ssize_t numBytes) const = 0

virtual status_t Unflatten(type_code code, const void *buffer, ssize_t numBytes) = 0

Flatten() est implémenté par les classe dérivées pour écrire ("aplatir") l'objet dans le tampon buffer. il doit y avoir numBytes octets de mémoires disponibles à l'adresse buffer. Si il n'y a pas au moins autant de mémoire que la fonction FlattenedSize() dit être nécessaire, Flatten() retournera une erreur. Si c'est réussi, le retour est B_OK.

Unflatten() est implémenté par les classes dérivées pour positionner les valeurs de l'object depuis numBytes octets de données pris depuis buffer. Toutefois, les données ne seront lues que si le code type qui est passé indique que les données sont d'un type supporté—c'est à dire, seulement si la fonction AllowsTypeCode() retourne true pour code. Si la reconstruction de l'objet depuis des données "aplaties" est réussie, Unflatten() retournera B_OK. Sinon, elle retourne B_ERROR ou un code d'erreur plus descriptif.


FlattenedSize()

                                                         
  

virtual ssize_t FlattenedSize(void) const = 0

Implémentée par les classes dérivées pour retourner le total de mémoire nécessaire pour tenir l'objet aplati. C'est le miminimum qui doit être alloué et pass´ à Flatten().


IsFixedSize()

                                                         
  

virtual bool IsFixedSize(void) const = 0

Implémentée par les classes dérivées pour retourner true si toutes les instances de la classe prennent le même total de mémoire quand elle sont "aplaties", et false si leurs tailles aplaties diffèrent. La taille diffèra, par exemple, si une chaîne de longueur variable fait partie des données aplaties.


TypeCode() , AllowsTypeCode()

                                                         
  

virtual type_code TypeCode(void) const = 0

virtual bool AllowsTypeCode(type_code code) const

TypeCode() est implémentée par les classes dérivées pour retourner le code type qui identifie le type de classe. Ce code est utilisé pour identifier une instance d'une classe dans son &ecute;tat aplati, par exemple lorsque c'est ajouté à un BMessage.

AllowsType() retourne true si le code qui est passé correspond au code retourné par TypeCode() et false sinon. Elle peut être modifiée dans les classes dérivés pour appliquer un standard plus libéral— pour permettre plus d'un code type pour identifer l'object.

voir aussi: BMessage::AddData()


Unflatten() voir Flatten()


Contenu du kit de Support     Index du Kit de Support


The Be Book,
...in lovely HTML...
for BeOS Release 5.

Copyright © 2000 Be, Inc. All rights reserved..