/***************************************************************/
Type FluxCompresse Implemente Public : IFlux Defaut Final TailleSegment 4 ConserverObjets
/* Objet : Encapsulation du type FluxCompresse. */
/***************************************************************/
/*-------------------------------------------------------------*/
/* Heritage des proprietes d'Objet.  */
/*-------------------------------------------------------------*/
Prive :
	
	EstInstanceDe : Type Lecture Public;
/*-------------------------------------------------------------*/
/* Heritage des propriétés de IFlux.      					      */
/*-------------------------------------------------------------*/
Prive :
	
	ModeOuverture : ModeOuvertureFlux Lecture Public Trace;
	
	NomFlux : Caractere Lecture Public Trace;
	
	FinDeFlux : Booleen Lecture Public;
	
	ModeOptimisation : ModeOptimisationFlux Lecture Public;
	
	EstMultiplexe : Booleen Lecture Public;
/*-------------------------------------------------------------*/
/* Propriétés propres.                    					      */
/*-------------------------------------------------------------*/
Prive :
	
	ModeCompression : ModeCompressionFlux Lecture Public;
/*-------------------------------------------------------------*/
/* Heritage des methodes d'Objet.    					      */
/*-------------------------------------------------------------*/
Public :
	
	Fonction Optimiser(Invariant) Identique(O : Nul Ou Objet) Retourner Nul Ou Booleen;
	
	Procedure Convertir(O : Nul Ou Objet);
	
	Fonction Optimiser(Invariant) CreeParLeServeur() Retourner Entier;
	
	Fonction Optimiser(Invariant) CreeParLeProcessus() Retourner Entier;
	
	Fonction Optimiser(Invariant) CreeDansLEntrepot() Retourner Entrepot;
	
	Fonction Cloner(EntrepotCible : Nul Ou Entrepot=Nul, Profondeur : ModeClonage = ClonageObjetSeul) Retourner Nul Ou Objet;
	
	Fonction LirePropriete(NomPropriete : Caractere) Retourner Nul Ou Objet;
	
	Procedure EcrirePropriete(NomPropriete : Caractere, Valeur : Nul Ou Objet);
	
	Fonction IncrementerDecrementerPropriete(NomPropriete : Nul Ou Caractere, Incrementer : Booleen, Prefixe : Booleen) Retourner Nul Ou Objet;
	
	Procedure SupprimerPropriete(NomPropriete : Caractere);
	
	Fonction Optimiser(Invariant) EnumererProprietes(NumeroPropriete : Entier, TypePropriete : Nul Ou Type=? Sortie, PeutEtreNul : Booleen=? Sortie, Aide : Nul Ou Caractere=? Sortie, NomEnumere : Nul Ou Caractere=? Sortie) Retourner Nul Ou Caractere;
	
	Fonction Optimiser(Invariant) Adresse() Retourner Nul Ou Caractere;
Prive :
	
	Fonction Exporter(E : Nul Ou IEchangeElementaire) Retourner Boolean;
	
	Fonction Importer(E : Nul Ou IEchangeElementaire, EntrepotCible : Nul Ou Entrepot=Nul, EstFiltre : Booleen=Faux, V : Entier=0, R : Entier=0, C : Entier=0) Retourner Nul Ou Objet;
/*-------------------------------------------------------------*/
/* Heritage des methodes de IFlux.      					      */
/*-------------------------------------------------------------*/
Public :
	
	Constructeur Habilitation (); 
	
	Procedure Lire(B : Booleen Sortie);
	
	Fonction Lire(B : Binaire Sortie, Nombre : Nul Ou Entier) Retourner Nul Ou Entier;
	
	Fonction Lire(C : Caractere Sortie, Nombre : Nul Ou Entier) Retourner Nul Ou Entier;
	
	Procedure Lire(E : Entier Sortie);
	
	Procedure Lire(R : Reel Sortie);
	
	Fonction LireUneLigne(C : Caractere Sortie) Retourner Nul Ou Entier;
	
	Fonction LireUnMot(C : Caractere Sortie) Retourner Nul Ou Entier;
	
	Procedure Ecrire(B : Nul Ou Booleen);
	
	Procedure Ecrire(C : Nul Ou Binaire);
	
	Procedure Ecrire(C : Nul Ou Caractere);
	
	Procedure Ecrire(E : Nul Ou Entier);
	
	Procedure Ecrire(R : Nul Ou Reel);
	
	Procedure Fermer();
	
   Fonction Optimiser(Invariant) LirePageDeCode() Retourner PagesDeCodesSupportees;
	
   Procedure ChangerPageDeCode(P : PagesDeCodesSupportees);
	
	Fonction LirePosition() Retourner Entier;
	
	Procedure FixerPosition(Position : Entier, PositionReference : PositionFlux=PositionFluxDebut);
	
	Procedure Vider();
	
	Procedure Tronquer();
/*-------------------------------------------------------------*/
/* Methodes propres.                                           */
/*-------------------------------------------------------------*/
Public :
	
   Constructeur Habilitation Optimiser(NulAbsorbant) (F:Nul Ou IFlux);
	
   Procedure ChangerModeCompressionAucun();
	
   Procedure ChangerModeCompressionDeflate(ModeRapide:Booleen, TailleFenetre : Entier=32768);
	
   Procedure ChangerModeCompressionHuffman(ModeTelecopie : Booleen, InitialiserTableStatistiques : Nul Ou Fonction(EstBlanc : Booleen, Index : Entier, EstTerminateur : Booleen Sortie, Longueur : Entier Sortie) Retourner Nul Ou Caractere=Nul);
	
   Procedure ChangerModeCompressionLzw(NbBitsMin : Entier, NbBitsMax : Entier);
	
   Procedure ChangerModeCompressionRle(
   
      LireModeCompression : Nul Ou Fonction(ModeCompresse : Booleen Sortie, Modele : Entier Sortie) Retourner Entier=Nul,
      EncoderCompresse : Nul Ou Fonction(Modele : Entier, NbRepetitions : Entier) Retourner Binaire=Nul,
      EncoderDecompresse : Nul Ou Fonction(NbOccurrences : Entier) Retourner Binaire=Nul,
      LireNbOccurrencesMax : Nul Ou Fonction(ModeCompresse : Booleen, Modele : Entier) Retourner Entier=Nul);
   
Prive :
	
   Destructeur(MettreEnAnteMemoire : Booleen) Retourner Booleen;
Fin Type
Le type FluxCompresse possède un constructeur explicite permettant de transformer un flux quelconque en un flux compressé.
Variable
/******/
	FichesPatients : IFlux;
	FichesPatientsCompresses : FluxCompresse;
	/* 'FichesPatients' est une variable de type flux compressé. Elle est toujours renseignée. */
	FichesProspectsCompresses : Nul Ou FluxCompresse;
	/* 'FichesProspects' est une variable de type flux compressé. Elle n'est pas toujours renseignee. */
Principal
/*******/
Debut
FichesPatientsCompresse=FluxCompresse(FichesPatients);
...
Si FichesPatientsCompresses==FichesProspectsCompresses Alors
/* Egalité entre deux flux compressés. */
	...
Fin Si
Si FichesPatientsCompresses!=FichesProspectsCompresses Alors
/* Inégalité entre deux flux compressés. */
	...
Fin Si
Fin Principal
| - | - | - | - | - | - | - | - | - |