Ma petite bibliothèque perso. More...
Namespaces | |
namespace | internal |
Fonctions et classes internes. | |
namespace | type_list |
Listes de types et classes associées. | |
Classes | |
struct | any |
Encapsulation d'une valeur de type quelconque. More... | |
struct | bad_any_cast |
Exception pour any_cast. More... | |
class | bool_vector_t |
Vecteurs de booléens. More... | |
struct | AbstractIterator |
Abrasure du conteneur. More... | |
struct | Collection |
Collection simple. More... | |
struct | Iterator |
Handler sur un itérateur. More... | |
class | int_vector_t |
Vecteurs d'entiers. More... | |
struct | login_t |
struct | noncopyable |
struct | Nuple |
Ex 2: N-uplet de valeurs de types différents. More... | |
struct | Nuple< type_list::NullType > |
Spécialisation pour les N-uplets vides. More... | |
struct | login_impl |
Functions | |
template<typename T > | |
bool | any_typeof (const any &a) |
Test le type de la valeur encapsulée dans un any. | |
template<typename T > | |
T | any_cast (const any &a) |
Retourne la valeur encapsulée dans un any. | |
std::ostream & | operator<< (std::ostream &o, const any &a) |
Ecriture dans un flot sortant. | |
template<typename T , typename U > | |
bool | instanceof (const U &val) |
Teste la compatibilité d'un objet avec un type. | |
void | byte_print (long l) |
Affichage d'un entier long octet par octet. | |
void | byte_swap (void *p, void *q) |
Echange le contenu des octets pointés. | |
void | big_to_little (long &l) |
Echange l'ordre des octets. |
Ma petite bibliothèque perso.
Si on crée une bibliothèque, il est conseillé de l'encapsuler dans un namespace, de même qu'en Java, elle serait dans un package. On peut créer des namespaces à l'intérieur des namespaces, de même qu'on peut avoir en Java des sous packages.
T my_lib::any_cast | ( | const any & | a | ) |
Retourne la valeur encapsulée dans un any.
any_cast doit pouvoir accéder au champ privé val
On utilise dynamic_cast pour effectuer le transtypage du undefined_type associé au any en Value<T>.
bad_cast | si la valeur n'est pas de type T |
T | le type de la valeur |
l'objet | any qui encapsule la valeur |
bool my_lib::any_typeof | ( | const any & | a | ) |
Test le type de la valeur encapsulée dans un any.
any_typeof doit pouvoir accéder au champ privé val
On utilise typeid pour effectuer ce test
T | le type à tester |
l'objet | any qui encapsule la valeur |
void my_lib::big_to_little | ( | long & | l | ) | [inline] |
Echange l'ordre des octets.
Si on inline, le code doit etre inclus il n'y a pas possibilité de se linker.
l | le long dont il faut échanger les octets |
Definition at line 42 of file long_manip.hh.
void my_lib::byte_print | ( | long | l | ) |
Affichage d'un entier long octet par octet.
l | l'entier à afficher |
Definition at line 24 of file long_manip.cc.
void my_lib::byte_swap | ( | void * | p, | |
void * | q | |||
) |
Echange le contenu des octets pointés.
p | adresse du premier octet | |
q | adresse du second octet |
Definition at line 43 of file long_manip.cc.
bool my_lib::instanceof | ( | const U & | val | ) |
Teste la compatibilité d'un objet avec un type.
Cette fonction a de l'intérêt pour les types polymorphes. On utilise l'opérateur dynamic_cast plutôt que typeid car la methode before de type_info ne reflète pas forcément l'ordre induit par l'héritage.
Lors de l'appel de la fonction, seul le premier paramètre template doit être indiqué, l'autre découle de l'argument.
T | le type à tester | |
U | le type de l'objet |
val | l'objet à tester |
Definition at line 33 of file instanceof.hh.