#include "Ens32.h"
#include <iostream>
#include <strstream>

void Ens32::Synopsis()
{
Ens32 A,B,C;
int n,x,i;
bool v;
ostrstream f; // flux de sortie de caractère
char t[10];   // tampon de 10 charactères
istrstream g(t, sizeof(t)); // flux d'entré de caractère de tampon t

// Conversions implicites Ens32-->int et int-->Ens32
Ens32 D;			// Déclare un ensemble D vide.
Ens32 E=i;			// Déclare un ensemble E correspondant au nombre binaire i.
A = i;				// Affecte l'ensemble A selon le nombre binaire i.

A.Put1(i);			// A = A union {i}
A.Put0(i); 		    // A = A - {i}
A.PutX(i); 		    // A = (A - {i}) union ({i} - A)
A.Put(i,v);			// Fixe le bit i de A à la valeur 0 si v=0, 1 si v=1, inversé si v=-1.
v = A.In(i); 		// v = (i appartient à A)
v = A[i];			// v = (i appartient à A)
x = A.Next(n);		// x = le plus petit élément >=n appartenant à A
A.put(f);			// Envoie l'ensemble A sur le flux de sortie f. Ex : {0,1,2,9,15,31}
A.get(g);			// Retire l'ensemble A du flux d'entré g
A = ~B;				// A = Complément de B
A = B|C;			// A = B Union C
A = B&C;			// A = B Inter C
A = B^C;			// A = (B Union C) - (B Inter C)
v = (A==B);			// v = (A==B)
v = (A<B);			// v = (A<B) Ordre lexicographique
A.Rand();           // A = un ensemble au hasard
A.Rand(B,C);		// A = un ensemble au hasard compris entre B et C compris.

Test(10);
TestPut1();
TestPut0();
TestPutX();
TestPut();
TestComp();
TestIn();
TestNext();
TestRand();
Synopsis();
}
