Category : C Source Code
Archive   : PROTO217.ZIP
Filename : PROTOF.MAN

 
Output of file : PROTOF.MAN contained in archive : PROTO217.ZIP


1 Introduction et avertissements 1
1.1 Pourquoi utiliser un extracteur 1
1.1.1 Mise en service d'une librairie avec prototypes invalides 1
1.1.2 Validation implicite du fichier d'inclusion 1
1.1.3 R‚vision des clients d'un service 2
1.2 Certains compilateurs peuvent extraire les prototypes 2
1.2.1 Un compilateur peut oublier des prototypes 2
2 Limites de la version d'‚valuation 2
2.1 Production automatis‚e de sommaire alphab‚tique 3
2.2 Production d'un index permut‚ 3
2.3 Production et entretien d'un historique des fonctions 3
3 Sp‚cifications et op‚ration 3
3.1 Principes g‚n‚raux 4
3.1.1 SystŠmes, clients, et fournisseurs en programmation 4
3.1.2 D‚claration de fonction (prototypes) et d‚finition 4
3.1.2.1 Utilit‚ des d‚clarations de fonctions 5
3.1.2.2 Strat‚gie d'utilisation des prototypes 5
3.1.2.3 Composition du fichier d'inclusion 5
3.2 ANSI C et C++ support‚s 6
3.3 Mot-cl‚s ajout‚s pour automatiser l'op‚ration de 6
l'extracteur
3.3.1 D‚finition des mots cl‚s suppl‚mentaires 6
3.4 Options de la ligne de commande 6
3.4.1 @fichier : fichier contenant des paramŠtres de ligne de 7
commande
3.4.1.1 Exemple de localisation de fichiers de commandes 7
3.4.1.2 @ sp‚cifi‚ sans fichier 8
3.4.2 -a : AccŠs par d‚faut au fonctions membres (C++) 8
3.4.3 -b : Mise … jour d'un fichier C++ … partir d'un fichier .pm 8
3.4.3.1 Exemple d'utilisation de l'option -b 9
3.4.3.2 Controle de la distribution des prototypes de fonctions 9
membres
3.4.4 -c : composition de l'extraction 9
3.4.4.1 Le verbe export : extension au C 10
Ajout du verbe export au langage C 10
Utilit‚ du verbe export 10
Le verbe _export 10
3.4.4.2 Combinaison de l'option -c et -f dans une seule session 11
3.4.4.3 ParamŠtre 'i' de l'option -c: R‚f‚rence inverse 11
3.4.4.4 ParamŠtre 'd' de l'option -c: Prototypes et documentation 11
3.4.4.5 Corrections au prototypes avant la g‚n‚ration 11
Fonctions sans type de retour 12
ParamŠtres sans type 12
Fonctions sans paramŠtre 12
3.4.5 -C : Ne traite pas les commentaires imbriqu‚s 12
3.4.6 -D : D‚finition de symbole sur la ligne de commande 12
3.4.7 -e : Ferme un fichier r‚sultat 13
3.4.7.1 Protection contre le double traitement durant une session 13
Fichiers sources r‚partis dans deux r‚pertoires 13
3.4.8 -f/+f : identification d'un fichier r‚sultat 13
3.4.8.1 Combinaison de l'option -c et -f dans une seule session 14
3.4.9 -h : fichier de prototypes C++ … d‚composer 14
3.4.10 -i : Mode incr‚mental 14
3.4.11 -I : R‚pertoire de recherche pour les fichiers d'inclusion 15
3.4.12 -k : Renomme les mot-cl‚s reconnus par l'extracteur 15
3.4.13 -l : Sp‚cification d'un nom alternatif pour l'option -h 15
3.4.14 -m : S‚lectionne une m‚thodologie particuliŠre 16



1


3.4.14.1 R‚pertoires alternatifs pour l'exportation des fichiers 16
r‚sultat
3.4.15 -o : Nom alternatif pour l'option -m 16
3.4.16 -p : Activation de l'extraction pour les fichiers suivants 16
3.4.16.1 Exemple d'utilisation des options -x et -p 16
3.4.16.2 Protection contre le double traitement durant une session 17
3.4.17 -P : activation du pr‚processeur 17
3.4.17.1 Traitement des #define mˆme lorsque le pr‚processeur n'est 17
pas actif
3.4.17.2 Traitements des #if, #ifdef, ... sans -P 17
3.4.18 -s : op‚ration silencieuse 18
3.4.19 -t : lecture du source … traiter sur la console 18
3.4.20 -v : Liste des fichiers trait‚s 18
3.4.21 -x : exclusion d'un groupe de fichier 18
3.4.21.1 Exemple d'utilisation des options -x et -p 18
3.4.21.2 Protection contre le double traitement durant une session 18
3.4.22 Macros et CaractŠres sp‚ciaux 19
3.4.22.1 $ : Nom du r‚pertoire courant 19
3.5 Combinaisons invalides d'options 19
3.6 Strat‚gie d'utilisation de l'extracteur 19
3.6.1 Convention d'utilisation: Avertissement au lecteur 19
3.6.2 Le r‚pertoire (directory) est la base de l'organisation d'un 19
systŠme
3.6.3 Convention de noms pour les fichiers d'inclusion 20
3.6.4 Fichiers g‚n‚r‚s localement 20
3.6.5 Fichiers export‚s pour les clients 20
3.6.5.1 Le verbe export : extension au C 21
3.6.6 Unicit‚ du fichier d'inclusion 21



1 Introduction et avertissements

L'extracteur de prototypes automatise et agr‚mente une
partie du travail d'un programmeur en langage ANSI C et C++
2.0. Il supporte aussi la syntaxe de d‚claration de
fonctions K&R.

Une version existe pour MSDOS (PCDOS) version 3 et plus,
pour SCO XENIX version 2.3 (UNIX systŠme V.3.2) et pour SUN
SPARC (Sunos).

Ce manuel s'applique int‚gralement dans les trois
environnements. Toutefois, le s‚parateur / a ‚t‚ choisi pour
la sp‚cification de fichiers dans le manuel. La version
MSDOS du logiciel reconnaŒt le s‚parateur \ et non pas /.

1.1 Pourquoi utiliser un extracteur

L'utilisation d'un extracteur de prototypes est facultative.
On peut inscrire manuellement les prototypes dans un fichier
d'inclusion. Le langage ANSI C tolŠre l'absence de prototype
pour conserver une compatibilit‚ avec la version K&R du
langage. Le langage C++ commande l'usage de prototypes.

Nous ne tenterons pas de d‚montrer l'importance des
prototypes en programmation. Nous tenterons de d‚montrer
pourquoi une extraction automatique par un outil sp‚cialis‚
est requise.

1.1.1 Mise en service d'une librairie avec prototypes invalides

En r‚visant une librairie, on doit parfois ajouter des
fonctions, en ‚liminer et en modifier. Lorsqu'on livre une
nouvelle version d'une librairie, la fiabilit‚ des
prototypes est essentielles. Souvent des problŠmes avec la
nouvelle version seront d‚tect‚s par une autre ‚quipe de
programmeurs, qui seront confondus par le fait que leur
projet compile parfaitement mais n'ex‚cute pas bien.

En C ce problŠme peut prendre un temps consid‚rable …
r‚gler. La nouvelle version de la librairie sera la derniŠre
… ˆtre soup‡onn‚e. En C++ le problŠme sera d‚tect‚ … l'‚tape
du "link". Cela introduira une perte de temps, et surtout
une insatisfaction ‚vidente.

1.1.2 Validation implicite du fichier d'inclusion

Un truc simple permet de v‚rifier que les prototypes
inscrits dans un fichier d'inclusion sont valides. Il s'agit
d'inclure ce fichier dans chacun des sources qui d‚clarent
ces fonctions. Une simple recompilation permettra de
comparer les prototypes … la d‚claration originale.

Cette m‚thode a toutefois un lacune. Elle ne d‚tecte pas
l'absence d'un prototype, ni ne d‚tecte la pr‚sence de
prototypes de fonctions p‚rim‚es.



1


En C++, cette m‚thode est simplement inutile, car plusieurs
fonctions peuvent porter le mˆme nom et poss‚der des
arguments totalement diff‚rents.

1.1.3 R‚vision des clients d'un service

On doit parfois modifier les arguments d'une fonction
utilis‚e dans divers autre sous-systŠme. G‚n‚ralement avant
de faire cela, le programmeur localisera toutes les usages
de cette fonction et les modifiera en cons‚quence.

Cela se fera souvent … l'aide du programme GREP. Cette
m‚thode n'est toutefois pas garantie. Il se peut que
certains systŠmes client soit innaccessibles … GREP (pas sur
le mˆme ordinateur), ou simplement inconnus du programmeur.

Notez qu'en C++, la d‚tection des usages d'une fonction
membre … l'aide de GREP est pratiquement vou‚ … l'‚chec. Il
faudra utiliser des r‚f‚rences crois‚s ou autre gadgets pour
d‚terminer qui se sert d'une fonction.

Seul une recompilation de ces systŠmes clients exposera les
utilisations erron‚s. Cette recompilation pourra se faire
plusieurs semaines, et mˆme plusieurs mois aprŠs la mise en
service de la librairie. La validit‚ des prototypes est la
seule assurance.

1.2 Certains compilateurs peuvent extraire les prototypes

Certains compilateurs ont une option pour extraire les
prototypes tout en compilant. Une telle option pose
g‚n‚ralement des problŠmes de performance et n'est utilis‚e
qu'en dernier recours.

L'extraction des prototypes doit ˆtre r‚alis‚e avant la
compilation; des prototypes valides sont essentiels. Si un
compilateur est utilis‚, deux sessions de compilation seront
n‚cessaires; une pour extraire les prototypes et une autre
pour compiler.

1.2.1 Un compilateur peut oublier des prototypes

Si on utilise un compilateur pour extraire des prototypes,
on peut se retrouver avec un problŠme de taille. Le
compilateur peut stopper d‚lib‚r‚ment la compilation d'un
source parce qu'ils rencontrent trop d'erreurs. Les
prototypes des fonctions qu'il n'a pas compil‚ ne seront pas
g‚n‚r‚s.

En fait plusieurs des erreurs rencontr‚s par le compilateur
seront caus‚s par l'absence de prototypes valides.

2 Limites de la version d'‚valuation

Le pr‚sent manuel explique toutes les options de
l'extracteur.




2


Certaines options ne sont pas disponibles dans la version
d'‚valuation. La licence explique comment on peut obtenir
une version complŠte.

En plus d'obtenir la derniŠre version du logiciel, l'usager
recevra d'autres utilitaires. Ils sont document‚s ici. La
liste pr‚sent‚e ici est sujet … changement sans pr‚avis.

2.1 Production automatis‚e de sommaire alphab‚tique

Un utilitaire produit un sommaire. Pour chaque fonction, une
ligne de commentaires est extraite du source. La ligne
choisie est bas‚e sur une convention minimale.

Le fichier produit est un texte dont le format est:

fonction_a: description sommaire de fonction_a
...
fonction_z: description sommaire de fonction_z

La premiŠre ligne du bloc de commentaire pr‚c‚dant la
d‚claration d'une fonction est extraite.

2.2 Production d'un index permut‚

A partir du sommaire alphab‚tique, un index bas‚ sur les
mots cl‚s de la description est produit. Pour un sommaire
comportant les deux fonctions suivantes,

bouton_creation: cr‚ation et initialisation d'un bouton
bouton_annule: efface et ‚limine un bouton de la m‚moire

Chacun des mots significatifs de la description seront tour
… tour utilis‚s comme cl‚ de tri. Il devient possible de
localiser une fonction en utilisant diff‚rents mots cl‚s
(efface, ‚limine, bouton, m‚moire, cr‚ation, ...).

2.3 Production et entretien d'un historique des fonctions

Un fichier sera entretenu … partir du fichier de prototypes
et documentation produit par l'extracteur.

L'historique est un fichier texte. Il contient une
description de chaques fonctions accompagn‚es de sa date de
cr‚ation ou de r‚vision. A chaque fois que le systŠme est
r‚vis‚, le fichier d'historique est mis … jour en ajoutant
les fonctions qui ont ‚t‚ r‚vis‚es (bas‚ sur une comparaison
ASCII du prototype document‚ de la fonction), les nouvelles
fonctions et en notant les fonctions ‚limin‚es.

Ce fichier permet … un programmeur de localiser rapidement
les nouveaux services, les services r‚vis‚s et les services
qui ont ‚t‚ ‚limin‚s.

3 Sp‚cifications et op‚ration



3


Description des caract‚ristiques de l'extracteur de
prototypes ANSI C. Ce manuel contient un guide d'op‚ration
mais aussi des suggestions sur l'application de cet outils.

3.1 Principes g‚n‚raux

L'extracteur s'applique autant aux projets de quelques
fichiers sources qu'aux projets d'envergure: plusieurs
centaines de fichiers r‚partis en plusieurs r‚pertoires.

3.1.1 SystŠmes, clients, et fournisseurs en programmation

Tout au long de ce manuel, nous utiliserons les mots
systŠmes, clients et fournisseurs.

Un systŠme (package) est une collection de fonctions
intimement li‚es permettant la r‚alisation d'une tƒche
sp‚cialis‚e. Un exemple de systŠme est la s‚rie de fonctions
str____() livr‚e avec la majorit‚ des compilateurs C
(strcmp, strlen, strcpy, strchr, ...). Ces fonctions
proposent g‚n‚ralement un certain nombre de conventions ou
modŠles … l'usager (le programmeur). Le systŠme est un
fournisseur, et les sources qui le composent sont des
membres du systŠme.

Le programmeur qui utilise ces fonctions pour r‚aliser une
nouvelle fonction est un client de ce systŠme. Tout au long
de ce document, c'est la relation entre ces nouvelles
fonctions et les fonctions d'un systŠme qui sera ‚tudi‚e.

Les fonctions cr‚‚es … partir d'autres fonctions, sont des
clientes. Ces "autres" fonctions sont des fournisseurs. Ces
derniŠres font g‚n‚ralement partie d'un systŠme (parfois
appel‚ librairie).

3.1.2 D‚claration de fonction (prototypes) et d‚finition

Une diff‚rence majeure entre le langage ANSI C et le C
original (K&R) est le concept de d‚claration de fonction
(function prototype). C'est la possibilit‚ de d‚crire de
fa‡on formelle l'interface d'une fonction sans fournir le
corps de cette fonction.

Soit la d‚finition de la fonction max():

int max(int a, int b)
{
if (a return (a);
}

Soit la d‚claration de la fonction max():

int max (int a, int b);




4


3.1.2.1 Utilit‚ des d‚clarations de fonctions

La d‚claration d'une fonction permet d'informer le
compilateur sur l'interface d'une fonction, sans fournir la
fonction au complet. Cela permet de cr‚er une fonction dans
un fichier source et de l'utiliser dans un autre en toute
s‚curit‚.

Le compilateur aura toutes les informations pour d‚terminer
si l'utilisation (appel de la fonction) faite de cette
fonction est conforme. Il pourra v‚rifier le nombre
d'arguments ainsi que le type de chacun. Les appels … la
fonction max() seront tous signal‚s par le compilateur.
Evidemment un prototype de la fonction devra ˆtre fourni au
d‚but du source.

int max(int a, int b);

...
char *pt = max ("xyz","zzz"); /* arguments invalides */
int m = max (1,2,3); /* nombre d'arguments invalide */

3.1.2.2 Strat‚gie d'utilisation des prototypes

G‚n‚ralement on placera dans un fichier d'inclusion (*.h)
les prototypes de toutes les fonctions composant un systŠme
ou librairie. Plusieurs fichiers d'inclusion fournis avec le
compilateur que vous utilisez contiennent des prototypes de
fonctions.

Les fonctions clientes (utilisant cette librairie) devront
inclure ce fichier d'inclusion au d‚but du source.

exemple:

#include

...
char *pt = strlen("....."); /* strlen() est d‚clar‚ dans string.h */

3.1.2.3 Composition du fichier d'inclusion

Le fichier d'inclusion associ‚ … un systŠme ne contiendra
pas n‚cessairement les prototypes de toutes les fonctions
contenues dans ce systŠme.

Les fonctions "static" ne seront pas incluses, puisqu'elles
ne sont pas accessibles. Certaines fonctions internes non
plus, puisque souvent, elles ne sont ni document‚es, ni
utilisables ais‚ment par les sources clients d'une
librairie.





5


Un fichier d'inclusion est donc cr‚‚ avec le client en tˆte.
Un programmeur peut cr‚er deux fichiers d'inclusion pour un
systŠme. Un sera utilis‚ par les fonctions membres et
l'autre par les fonctions clientes. L'extracteur permet de
construire s‚lectivement des fichiers d'inclusion.

3.2 ANSI C et C++ support‚s

L'extracteur reconnait la syntaxe C et C++. Aucune option
n'est requise. Quelques options permettent de traiter
sp‚cifiquement certains d‚clarations tel les fonctions
membres C++.

3.3 Mot-cl‚s ajout‚s pour automatiser l'op‚ration de
l'extracteur

Le langage C++ ne permet pas d'extraire les prototypes d'une
fa‡on complŠtement automatique. Pour sa part le langage C
possŠde un concept rudimentaire de controle de l'accŠs.

Sept mot-cl‚s sont interpr‚t‚s par l'extracteur pour
complŠtement controler la g‚n‚ration des prototypes … partir
du source.

export C et C++
_export C et C++
PRIVATE C++
PUBLIC C++
PROTECTED C++
STATIC C++
VIRTUAL C++

3.3.1 D‚finition des mots cl‚s suppl‚mentaires

Les mots cl‚s export,_export,PRIVATE,PROTECTED,PUBLIC et
VIRTUAL ne sont pas support‚s par plusieurs compilateurs C
et C++. On devra fournir au pr‚processeur une d‚finition
nulle pour chacun de ces mot-cl‚s.

Un d‚finition nulle peut s'exprimer directement sur la ligne
de commande (g‚n‚ralement option -d du compilateur) ou dans
un fichier d'inclusion.

#define export
#define _export
#define PUBLIC
#define PRIVATE
#define PROTECTED
#define VIRTUAL

Notez que _export est support‚ par certain compilateurs.

3.4 Options de la ligne de commande





6


Cette section d‚crit la liste des options sp‚cifiables sur
la ligne de commande. Une option est sp‚cifi‚e par un '-'
suivie d'une lettre suivie optionnellement d'une s‚quence de
caractŠres non blancs:

-x
-ceoi
-ffichier.nar

3.4.1 @fichier : fichier contenant des paramŠtres de ligne de
commande

Si un paramŠtre de la ligne de commande d‚bute par @, il
sera interpr‚t‚ comme un nom de fichier. Ce fichier
contiendra lui-mˆme d'autres paramŠtres qui seront
interpr‚t‚s.

Le fichier peut ˆtre sp‚cifi‚ avec un r‚pertoire ou non. Si
le fichier est sp‚cifi‚ avec un r‚pertoire, ce r‚pertoire et
ses ancˆtres seront utilis‚s jusqu'… ce que le fichier soit
localis‚.

Si aucun r‚pertoire n'est sp‚cifi‚, le r‚pertoire courant
sera consult‚, et ses ancˆtres ensuite.

Ce m‚canisme de localisation permet d'‚crire un seul fichier
qui sera applicable … plusieurs r‚pertoires. Il permet aussi
d'‚crire un fichier de paramŠtres qui sera sp‚cifique … un
r‚pertoire.

3.4.1.1 Exemple de localisation de fichiers de commandes

Soit les r‚pertoires:

/usr/prj1/liba
/usr/prj1/libb
/usr/prj1/libb/libb0
/usr/prj1/libb/libb1
/usr/prj1/libc
/usr/prj2/liba
/usr/prj2/libb
/usr/prj2/libc

Si on cr‚‚ les fichiers d'option suivants.

/usr/proto.cfg
/usr/prj1/libb/proto.cfg
/usr/prj2/libc/proto.cfg

La liste suivante indique quel fichier de commande sera lu
si on applique "proto @proto.cfg" dans chaque r‚pertoire.






7


/usr/prj1/liba /usr/proto.cfg
/usr/prj1/libb/libb0 /usr/prj1/libb/proto.cfg
/usr/prj1/libb/libb1 /usr/prj1/libb/proto.cfg
/usr/prj1/libc /usr/proto.cfg
/usr/prj2/liba /usr/proto.cfg
/usr/prj2/libb /usr/proto.cfg
/usr/prj2/libc /usr/prj2/libc/proto.cfg
/lib/prjx ici la variable d'environnement PATH
sera consult‚e pour localiser proto.cfg
de la mˆme fa‡on que les programmes
sont localis‚s.

3.4.1.2 @ sp‚cifi‚ sans fichier

Si le caractŠre @ apparaŒt seul, le fichier 'proto.cfg' sera
cherch‚ par d‚faut. Il sera cherch‚ dans le r‚pertoire
courant. S'il n'est pas trouv‚, le r‚pertoire ancˆtre sera
cherch‚ (..). La recherche se poursuivra jusqu'… la racine
du disque.

Lorsque les fichiers proto.cfg requis sont cr‚‚s et plac‚s
aux bons endroits dans un systŠme de r‚pertoire, la commande
"proto @" est suffisante pour extraire les prototypes de
n'importe quel systŠme.

3.4.2 -a : AccŠs par d‚faut au fonctions membres (C++)

Les fonctions membres (d'une classe) qui ne sp‚cifient pas
d'accŠs seront d‚clar‚s "private". L'option -a permet
d'enregistrer un comportement diff‚rent.

-a0 : private
-a1 : protected
-a2 : public

L'accŠs d'une fonction membre se sp‚cifie … l'aide d'un des
mots cl‚s ajout‚s PRIVATE, PROTECTED, et PUBLIC.

3.4.3 -b : Mise … jour d'un fichier C++ … partir d'un fichier .pm

Normalement, proto regroupe tous les prototypes des
fonctions membres d'une classe C++ dans un seul fichier
(voir -m0+,-m1+ et -c+). Ce fichier porte g‚n‚ralement
l'extension ".pm". A partir de ce fichier, les prototypes
des fonctions membres sont distribu‚s dans les fichiers qui
contiennent les d‚clarations des classes. L'option -b active
cette distribution.

La syntaxe de l'option est:

-bfichier_…_r‚viser+fichier_pm=fichier_r‚sultat
-bfichier_…_r‚viser+fichier_pm
-bfichier_…_r‚viser
-b



8


Si fichier_r‚sultat n'est pas sp‚cifi‚, fichier_…_r‚viser
sera pris comme source et destination. Si fichier_pm n'est
pas sp‚cifi‚, X.pm sera choisi (X est le nom du r‚pertoire
courant). L'option -b sans arguments sera ‚quivalente …
-bX.hpp+X.pm o— -bX.h+X.pm o— X est le nom du r‚pertoire
courant. X.h sera utilis‚ si X.hpp n'existe pas.

L'option -b peut ˆtre utilis‚ plusieurs fois (pour r‚viser
plusieurs fichier d'inclusion) sur la ligne de commande. Son
action ne sera d‚clench‚e qu'aprŠs l'extraction du dernier
prototype.

3.4.3.1 Exemple d'utilisation de l'option -b

Soit la commande,

proto -c+ -fx.pm *.c -bfichier1.h+x.pm -bfichier2.h+x.pm

Le fichier x.pm sera produit. Il contiendra tous les
prototypes des fonctions membres. Ensuite les fichier
"fichier1.h" et "fichier2.h" seront ‚dit‚s et les prototypes
seront distribu‚s dans la d‚claration des classes dont ils
sont membres.

3.4.3.2 Controle de la distribution des prototypes de fonctions
membres

Les prototypes des fonctions membres doivent ˆtre distribu‚s
… l'int‚rieur de la d‚finition de la classe dont ils sont
membres. L'extracteur utilise une m‚thode simple pour
localiser l'endroit o— les prototypes sont plac‚s.

L'extracteur recherche des paires de commentaires de la
forme:

/*~PROTOBEG~ NOM_DE_LA_CLASSE */
/*~PROTOEND~ */

Les commentaires doivent ˆtre seuls sur leur ligne
respective. Tous ce qui est entre cette paire de
commentaires a ‚t‚ plac‚ l… par l'extracteur. Le programmeur
ne devra rien ajouter entre ces commentaires, puisque
l'extracteur annulera le contenu … chaque r‚vision du
fichier.

3.4.4 -c : composition de l'extraction

PROTO peut extraire plusieurs informations des fichiers
sources qu'il traite. Voici la liste des informations qu'il
peut extraire avec la lettre qui servira … sp‚cifier ces
informations.







9


e : Prototypes des fonctions export (extension au langage C).
o : Prototypes des fonctions ordinaires.
p : Prototypes des fonctions membres C++ "private".
r : Prototypes des fonctions membres C++ "protected".
s : Prototypes des fonctions static.
u : Prototypes des fonctions membres C++ "public".

+ : Prototypes des fonctions membres (C++).
d : Documentations (commentaires) autour de ces fonctions.
i : R‚f‚rence inverse fonction vs source.

La commande "proto -cod *.c" extraira les prototypes avec la
documentation qui les accompagne pour tous les fichiers *.c
du r‚pertoire courant.

3.4.4.1 Le verbe export : extension au C

Le verbe export est un ajout au langage C. A notre
connaissance aucun compilateur C ne supporte un tel verbe.
Ce verbe est pr‚sentement appliqu‚ … la d‚claration de
fonctions, mais peut aussi s'appliquer … la d‚claration de
types, de constantes, de variables, etc...

Le verbe export a un usage un peu ‚quivalent au verbe
static. Ce dernier restreint la visibilit‚ d'un objet au
source o— il apparaŒt. Le verbe export, au contraire,
indique que la visibilit‚ d'un objet d‚passe le cadre du
systŠme o— il est d‚fini. Une fonction 'export' est un
service officiel offert aux clients. Une fonction ordinaire
est local au systŠme et ne doit pas ˆtre utilis‚e
directement par une fonction cliente du systŠme.

3.4.4.1.1Ajout du verbe export au langage C

En utilisant le pr‚processeur, il est possible d'ajouter le
verbe export au language. On inscrit simplement la ligne
"#define export" dans un fichier d'inclusion. Ce fichier est
inclus dans les sources qui font usage du verbe.

On peut aussi d‚finir ce verbe sur la ligne de commande …
l'aide de l'option -d du compilateur. La plupart des
compilateurs supportent une option -d de la mˆme fa‡on que
l'extracteur.

3.4.4.1.2Utilit‚ du verbe export

Bien que non support‚ par le compilateur, ce verbe permet de
classifier les fonctions d'un systŠme. Cela simplifie la vie
des clients … la recherche d'un service. G‚n‚ralement la
liste des fonctions offertes aux clients repr‚sente moins de
la moiti‚ des fonctions du systŠme. Cela simplifie autant
l'usage que l'entretien du systŠme.

3.4.4.1.3Le verbe _export




10


Le verbe _export devient une extension populaire au language
C. Il facilite la r‚alisation de librairies dynamiques. Il a
s‚mantiquement le mˆme r“le que le verbe export d‚cris plus
haut. Les deux verbes sont accept‚ comme synonimes.

3.4.4.2 Combinaison de l'option -c et -f dans une seule session

Les options -c et -f peuvent ˆtre sp‚cifi‚es plusieurs fois
sur la ligne de commande.

L'option -c ‚tablie une composition de r‚sultat valide pour
toutes les options -f qui suivent, et ce jusqu'… la
prochaine option -c.

La commande "proto -co -fordin.h -cs -fstatic.h -cod
-finfo.h *.c" produira trois fichiers de composition
diff‚rente. On sauve du temps … g‚n‚rer plusieurs fichiers
simultan‚ment.

3.4.4.3 ParamŠtre 'i' de l'option -c: R‚f‚rence inverse

Le paramŠtre 'i' de l'option -c produit une r‚f‚rence
inverse fonction -> sources. D'un format compact, le fichier
permet de d‚terminer le source qui contient la d‚claration
d'une fonction.

Le fichier est un texte ASCII o— chaque ligne a la forme
suivante:

longueur!nom_de_la_fonction!source

Les points d'exclamation '!' sont pr‚sents dans le fichier,
comme s‚parateur. La longueur est la dimension (en octet) de
la ligne. Cette longueur est encod‚e en un seul octet. Pour
ne pas nuire … la nature 'texte' du fichier, la constante 32
est ajout‚e … cette longueur.

Un format texte a ‚t‚ choisi pour simplifier la r‚alisation
de fonction de recherche. Une telle fonction peut ˆtre cod‚e
directement … partir du langage macro de certains ‚diteurs.

3.4.4.4 ParamŠtre 'd' de l'option -c: Prototypes et documentation

Le paramŠtre 'd' commande l'extraction des prototypes ainsi
que des commentaires entourant la d‚claration de la
fonction.

Tous les commentaires contigus qui pr‚cŠdent imm‚diatement
la d‚claration ainsi que tous rencontr‚s avant la premiŠre
'{' du corps de la fonction seront extrait et plac‚s avec le
prototype.

Le format du fichier produit n'est pas compilable. Ce
fichier peut ˆtre utilis‚ comme sommaire d'un systŠme.

3.4.4.5 Corrections au prototypes avant la g‚n‚ration



11


On peut omettre certaines informations lors de la
d‚claration d'une fonction. L'extracteur ajoute ce qui
manque pour produire un prototype valide.

3.4.4.5.1Fonctions sans type de retour

Si une fonction est d‚clar‚ sans type, l'extracteur ajoute
'int' au prototype. La d‚claration suivante:

max(int a, int b){....}

produit le prototype suivant:

int max (int a, int b);

3.4.4.5.2ParamŠtres sans type

Si un paramŠtre apparait sans type, le mot-cl‚ 'int' est
ins‚r‚.

Soit la fonction suivante:

int max (a,b){ ... }

Le prototype produit sera:

int max (int a, int b);

3.4.4.5.3Fonctions sans paramŠtre

Le mot cl‚ 'void' sera automatiquement ins‚r‚ dans le
prototype d'une fonction sans paramŠtres, s'il n'est pas
d‚j… pr‚sent. La d‚claration suivante produit:

int fct (){ ... }

produit:

int fct (void);

3.4.5 -C : Ne traite pas les commentaires imbriqu‚s

Proto permet les commentaires imbriqu‚s. L'option -C annule
ce comportement.

3.4.6 -D : D‚finition de symbole sur la ligne de commande

L'option -D permet de d‚finir des symboles du pr‚processeur
directement sur la ligne de commande.





12


L'option "-Dsymxxx" est ‚quivalente … la ligne "#define
symxxx".

L'option "-Dsymxxx=yyy" est ‚quivalente … "#define symxxx
yyy".

3.4.7 -e : Ferme un fichier r‚sultat

L'option -e est utilis‚e aprŠs l'option -f (+f) et termine
l'usage de ce fichier comme fichier r‚sultat. Il est donc
possible de produire en une seule session plusieurs fichiers
qui ont des contenus complŠtement diff‚rents.

Exemple: proto -ffichier1 a*.c -efichier1 -ffichier2 *.c

Ici, "fichier1" ne contiendra que les prototypes de fonction
des fichiers "a*.c". "fichier2" contiendra pour sa part
toutes les autres fonctions. Si l'option -e n'avait pas ‚t‚
utilis‚, "fichier1" contiendrait toutes les fonctions des
fichiers "a*.c" en plus de ceux contenus dans "fichier2".

3.4.7.1 Protection contre le double traitement durant une session

L'extracteur ne retraitera pas deux fois le mˆme fichier
lors d'une session. Cela permet de traiter une s‚rie de
fichier avec une combinaison d'options et de traiter les
autres avec une autre combinaison.

La s‚quence suivante permet d'associer une combinaison
sp‚cifique au fichier xyz.c.

proto -option ... -option xyz.c -option ... -option *.c

Bien que *.c inclue xyz.c, celui-ci ne sera pas trait‚ deux
fois.

3.4.7.1.1Fichiers sources r‚partis dans deux r‚pertoires

Une m‚thodologie applicable aux projets en groupe permet de
sauver de l'espace disque. Souvent les sources d'un projet
sont plac‚s dans un r‚pertoire r‚f‚rence. Le programmeur
importe dans un r‚pertoire personnel uniquement les sources
qu'il modifie. Ce m‚canisme est souvent r‚alis‚ par
l'‚diteur qui lit les fichiers dans le r‚pertoire r‚f‚rence
et les sauve dans le r‚pertoire personnel lorsque modifi‚s.

Soit le projet X dont les sources sont plac‚s dans le
r‚pertoire /usr/src/x. Soit le programmeur 'prog' qui r‚vise
le projet. Les sources sont import‚s graduellement dans le
r‚pertoire /usr/prog/x.

La commande "proto *.c /usr/src/x/*.c" appliqu‚e dans le
r‚pertoire /usr/prog/x produira les prototypes du projet X.
La protection contre le double traitement est appliqu‚e sur
le nom des fichiers et non pas sur l'accŠs (path).

3.4.8 -f/+f : identification d'un fichier r‚sultat



13


L'option -f peut ˆtre utilis‚e plusieurs fois sur la ligne
de commande. En une seule session, proto peut produire
plusieurs fichiers.

L'option est suivi du nom du fichier qui sera produit.
L'option -f cr‚e le fichier. L'option +f ajoute … la fin du
fichier.

Le nature du fichier cr‚‚ d‚pend de la derniŠre composition
‚tablie par l'option -c.

ex : "proto -cos -ffichier.p *.c" produira "fichier.p" avec
tous les prototypes des fonctions ordinaires et static du
r‚pertoire courant.

3.4.8.1 Combinaison de l'option -c et -f dans une seule session

Les options -c et -f peuvent ˆtre sp‚cifi‚es plusieurs fois
sur la ligne de commande.

L'option -c ‚tablie une composition de r‚sultat valide pour
toutes les options -f qui suivent, et ce jusqu'… la
prochaine option -c.

La commande "proto -co -fordin.h -cs -fstatic.h -cod
-finfo.h *.c" produira trois fichiers de composition
diff‚rente. On sauve du temps … g‚n‚rer plusieurs fichiers
simultan‚ment.

3.4.9 -h : fichier de prototypes C++ … d‚composer

L'option -h commande la d‚composition d'un fichier de
prototypes C++ contenant des fonctions membres (class
member). Autant de fichier que de classes rencontr‚s seront
produits. Le nom de ces fichiers sera obtenu en utilisant le
nom de la classe (potentiellement tronqu‚) suivit de
l'extension ".pp".

Ces fichiers pourront ˆtre sous-inclus dans les fichiers
d'inclusion d‚clarant les classes.

-h est suivit sans espace par le nom du fichier …
d‚composer. -h sans argument commande la d‚composition du
fichier ".pm" ayant le mˆme nom que le r‚pertoire courant.

La d‚composition d‚marera aprŠs l'extraction du dernier
prototype.

L'option -h peut ˆtre utilis‚ plusieurs fois sur la ligne de
commande.

3.4.10 -i : Mode incr‚mental








14


Lorsque l'option -i est sp‚cifi‚e, proto v‚rifie si les
fichiers … g‚n‚rer existent d‚j…. Si oui, il les relie.
Lorsque vient le temps de g‚n‚rer les prototypes d'un
source, il v‚rifie si ce dernier a chang‚ depuis la derniŠre
g‚n‚ration. Les fichiers produits par proto contiennent la
date de chaque fichiers sources. Si les dates sont
semblables, le fichier source n'est pas trait‚.


Cela acc‚lŠre significativement le traitement.

3.4.11 -I : R‚pertoire de recherche pour les fichiers d'inclusion

L'option -I indique la liste des r‚pertoires … consulter
pour localiser les fichiers d'inclusion (directive
#include).

L'option -I peut apparaŒtre plusieurs fois sur la ligne de
commande. On peut sp‚cifier plusieurs r‚pertoires en une
seule fois, en s‚parant ces r‚pertoires avec un ':'.

ex: -I/usr/include:/include <==> -I/usr/include -I/include

3.4.12 -k : Renomme les mot-cl‚s reconnus par l'extracteur

Certains mot-cl‚s reconnus par l'extracteur ne sont pas
support‚s par tous les compilateurs (export, PUBLIC,
PRIVATE, ...). Le programmeur doit donc fournir une
d‚finition nulle au pr‚processeur pour que la pr‚sence de
ces mots cl‚s soit tol‚r‚e par le compilateur.

Ces mot-cl‚s peuvent cr‚‚s des conflits avec des noms de
variables ou de type d‚j… existant. Il est possible de
renommer ces mots cl‚s ou simplement d'en annuler le sens
vue de l'extrateur.

L'option -kxxx=yyy renomme le mot-cl‚ xxx … yyy. L'option
-kxxx annule le mot-cl‚ xxx. L'option -k peut ˆtre utilis‚e
plusieurs fois sur la ligne de commande.

Soit l'exemple suivant o— le verbe export entre en conflit
avec un typedef existant dans le programme. L'option
-kexport=EXPORT aura l'effet suivant: L'extracteur ne
reconnaitra plus le mot export comme un mot cl‚, tandis que
le mot EXPORT r‚cup‚rera le r“le attribu‚ normalement au
mot-cl‚ export. Ainsi l'‚nonc‚ suivant sera acceptable.

EXPORT export *fct (void);

3.4.13 -l : Sp‚cification d'un nom alternatif pour l'option -h

Lors de l'application de l'option -h, tous les fichiers
produits auront un nom compos‚ du nom de la classe suivit de
l'extension .pp. Le nom d'une classe pourra ˆtre tronqu‚
pour satisfaire les limites du systŠme d'exploitation. Il
est possible que deux classes entrent en conflit.





15


L'option -l force l'extracteur … utiliser un autre nom. Ce
nom pourra contenir ou pas un extension.

Ex: proto -m0+ -lCLASS_SPEC1=class1.pp
-lCLASS_SPEC2=class2.pp *.c -h

Les prototypes des fonctions membres de la classe
CLASS_SPEC1 se retrouveront dans class1.pp et ceux de
CLASS_SPEC2 dans class2.pp.

3.4.14 -m : S‚lectionne une m‚thodologie particuliŠre

-m0 : m‚thodologie pour projets … un seul r‚pertoire

"proto -m0 *.c" appliqu‚ dans le r‚pertoire X est ‚quivalent …
"proto -ceo -fX.p -ceod -fX.nap -ceoi -fX.nar *.c"

-m1 : m‚thodologie pour projets … plusieurs r‚pertoires

"proto -m1 *.c" appliqu‚ dans le r‚pertoire X est ‚quivalent …
"proto -ceo -fX.p -ce -f../include/X.p
-ceod -fX.nap -ced -f../doc/X.nap
-ceoi -fX.nar -cei -f../doc/X.nar *.c"

3.4.14.1 R‚pertoires alternatifs pour l'exportation des fichiers
r‚sultat

Par d‚faut l'option -m1 exporte vers les r‚pertoires
../include et ../doc.

Si le r‚pertoire ../include n'existe pas, le r‚pertoire ../h
est utilis‚. Au moins un des deux r‚pertoires doit exister
pour que l'option -m1 ex‚cute correctement.

3.4.15 -o : Nom alternatif pour l'option -m

L'option -m compose le nom des fichiers resultats … partir
du nom du r‚pertoire courant. L'option -o permet de
sp‚cifier un autre nom

3.4.16 -p : Activation de l'extraction pour les fichiers suivants

Cette option est utilis‚e aprŠs l'option -x. Elle r‚active
l'extraction des prototypes pour les fichiers suivants.

Par d‚faut, l'extraction est active.

3.4.16.1 Exemple d'utilisation des options -x et -p

Certains fichiers C ne comportent aucun prototypes
int‚ressants. Certains fichiers sont produit par des
g‚n‚rateurs d'‚crans, de rapports, etc ... ne comportent que
des tableaux et constantes. Ces fichiers sont souvent trŠs
gros. Il est int‚rressant de les ‚viter lors de l'extraction
dans le simple but de sauver du temps.



16


Soit les fichiers ecran1.c et ecran2.c que l'on veut ‚viter.
La commande "proto -x ecran1.c ecran2.c -p *.c" extraira les
prototypes de tous les fichiers sauf ceux-l….

3.4.16.2 Protection contre le double traitement durant une session

L'extracteur ne retraitera pas deux fois le mˆme fichier
lors d'une session. Cela permet de traiter une s‚rie de
fichier avec une combinaison d'options et de traiter les
autres avec une autre combinaison.

La s‚quence suivante permet d'associer une combinaison
sp‚cifique au fichier xyz.c.

proto -option ... -option xyz.c -option ... -option *.c

Bien que *.c inclue xyz.c, celui-ci ne sera pas trait‚ deux
fois.

3.4.17 -P : activation du pr‚processeur

Normalement proto ne fait pas l'expansion macro. Il ne fait
pas la lecture des fichiers d'inclusion. Cela permet … proto
de r‚g‚n‚rer des sources (option -g) et aussi d'extraire les
prototypes trŠs rapidement.

G‚n‚ralement, le fait d'ignorer les commandes du
pr‚processeur n'a aucun effet sur les fichiers produits. Il
existe quelques exceptions o— le pr‚processeur est essentiel
… la compr‚hension des d‚clarations.

L'option -P active un pr‚processeur complet ANSI C
(construit dans PROTO). Les options -I et -d devront ˆtre
utilis‚es en combinaison.

L'option -g (r‚g‚n‚ration du source) perdra toute
signification.

3.4.17.1 Traitement des #define mˆme lorsque le pr‚processeur n'est
pas actif

Les d‚finitions des commandes #define sont enregistr‚es mˆme
si l'expansion macro n'est pas actif (option -P). Cela
permet d'‚valuer les commandes #if, #ifdef, et #ifndef.

Les commandes #undef sont aussi interpr‚t‚es dans le mˆme
but.

3.4.17.2 Traitements des #if, #ifdef, ... sans -P

Lorsque le pr‚processeur n'est pas actif, il n'est pas
toujours possible de s‚lectionner ad‚quatement la section de
code … analyser. Comme les fichiers d'inclusion ne sont pas
lus, la valeur des macros (#define) n'est pas toujours
connue. L'option -d permet de d‚finir des macros directement
sur la ligne de commande.




17


3.4.18 -s : op‚ration silencieuse

Normalement proto pr‚sente un rapport pour chaque fichier
produit, indiquant la composition (option -c) en vigueur
pour ce fichier.

L'option -s rend proto silencieux.

3.4.19 -t : lecture du source … traiter sur la console

L'option -t force proto … lire un source sur l'entr‚e
standard (g‚n‚ralement la console). Cela permet de faire des
tests rapidement.

La commande "proto -cxxxx -t" permet de v‚rifier le
comportement de proto pour certaines combinaisons.

3.4.20 -v : Liste des fichiers trait‚s

L'option -v commande l'affichage de tous les fichiers
trait‚s par proto.

3.4.21 -x : exclusion d'un groupe de fichier

Tous les fichiers sp‚cifi‚s aprŠs l'option -x seront exclus
du traitement. L'option -p renverse cet ‚tat.

la commande "proto -x xxxx.c -p *.c" g‚nŠre les prototypes
de tous les fichiers *.c sauf le fichier xxxx.c.

3.4.21.1 Exemple d'utilisation des options -x et -p

Certains fichiers C ne comportent aucun prototypes
int‚ressants. Certains fichiers sont produit par des
g‚n‚rateurs d'‚crans, de rapports, etc ... ne comportent que
des tableaux et constantes. Ces fichiers sont souvent trŠs
gros. Il est int‚rressant de les ‚viter lors de l'extraction
dans le simple but de sauver du temps.

Soit les fichiers ecran1.c et ecran2.c que l'on veut ‚viter.
La commande "proto -x ecran1.c ecran2.c -p *.c" extraira les
prototypes de tous les fichiers sauf ceux-l….

3.4.21.2 Protection contre le double traitement durant une session

L'extracteur ne retraitera pas deux fois le mˆme fichier
lors d'une session. Cela permet de traiter une s‚rie de
fichier avec une combinaison d'options et de traiter les
autres avec une autre combinaison.

La s‚quence suivante permet d'associer une combinaison
sp‚cifique au fichier xyz.c.

proto -option ... -option xyz.c -option ... -option *.c

Bien que *.c inclue xyz.c, celui-ci ne sera pas trait‚ deux
fois.



18


3.4.22 Macros et CaractŠres sp‚ciaux

Certains caractŠres et combinaisons de caractŠres auront une
interpr‚tation particuliŠre. Cela permettra de cr‚er des
commandes g‚n‚rales dans des fichiers batch.

3.4.22.1 $ : Nom du r‚pertoire courant

Le nom du r‚pertoire courant est r‚guliŠrement utilis‚ pour
composer des noms de fichier ou de r‚pertoire. Certaines
m‚thodologies sp‚cifient que les prototypes d'un r‚pertoire
doivent ˆtre plac‚s dans un fichier portant le nom de ce
r‚pertoire plus une extension.

Si on veut cr‚er une commande g‚n‚rale, on doit pouvoir
automatis‚ la g‚n‚ration du nom.

Le caractŠre $ dans la ligne de commande sera remplac‚ par
le nom du r‚pertoire courant.

"proto -co -f$.p -cod -f$.nap -coi -f$.nar *.c" sera
‚quivalent … "proto -m0 *.c".

3.5 Combinaisons invalides d'options

Plusieurs options sont disponibles sur la ligne de commande.
Plusieurs combinaisons n'ont aucun sens.

Certaines combinaisons invalides sont d‚tect‚es et un
message d'erreur est sp‚cifi‚. Certaines combinaisons
g‚n‚reront des r‚sultats complŠtement inutiles.

3.6 Strat‚gie d'utilisation de l'extracteur

L'utilisation de l'extracteur de prototypes est relativement
simple. On applique proto sur un certain nombre de fichier
source et on obtient un ou plusieurs fichier d'inclusion.

Beaucoup d'efforts ont ‚t‚ faits pour conserver … proto un
caractŠre g‚n‚ral. Le nombre d'options disponibles en est un
t‚moin.

Nous allons sugg‚rer une approche fonctionnelle applicable
autant au petit projet (1 seul r‚pertoire de source) qu'… un
projet plus important.

3.6.1 Convention d'utilisation: Avertissement au lecteur

Les conventions qui suivent ne sont pas absolues. Nous les
jugeons acceptables et pratiques. Ces conventions
proviennent de l'exp‚rience tir‚e de plusieurs projets de
diverses dimensions.

Les suggestions et am‚liorations sont bienvenues.

3.6.2 Le r‚pertoire (directory) est la base de l'organisation d'un
systŠme



19


Un systŠme est g‚n‚ralement compos‚ de plusieurs sources (10
@ 30). Un systŠme complexe peut ˆtre compos‚ de plusieurs
r‚pertoires. En fait ce systŠme est compos‚ de
sous-systŠmes.

Vu d'un client, un systŠme qu'il soit complexe ou pas,
provient d'un seul r‚pertoire. En fait, un client ne doit
pas savoir si un systŠme est complexe ou pas.

Nous proposons donc qu'un r‚pertoire corresponde … un
systŠme. A ce r‚pertoire sera associ‚ une librairie (*.lib)
et un fichier d'inclusion.

3.6.3 Convention de noms pour les fichiers d'inclusion

Dans un but de simplicit‚ d'utilisation et de r‚alisation
nous proposons une convention pour s‚lectionner le nom des
fichiers d'inclusion.

Le nom du r‚pertoire sera choisi comme base du nom des
fichiers d'inclusion. Pour un systŠme plac‚ dans un
r‚pertoire X, le nom des fichiers d'inclusions seront "X.*".

Cette convention vise les fichiers qui sont offert aux
systŠmes clients.

3.6.4 Fichiers g‚n‚r‚s localement

L'option -m0 permet de g‚n‚rer localement 3 fichiers. Pour
un r‚pertoire X, les fichier X.p, X.nap et X.nar. L'option
-m1 g‚nŠre les mˆmes fichiers en plus d'exporter trois
autres.

X.p contient les prototypes. Ce fichier sera sous-inclus par
le fichier X.h … l'aide de la commande '#include "X.p"'. Les
prototypes sont plac‚s normalement directement dans le
fichier X.h. Ce fichier contient en plus des prototypes,
diverses d‚finitions et d‚clarations. Comme l'extracteur ne
peut pas produire les prototypes directement dans X.h sans

en d‚truire le contenu, un autre fichier doit ˆtre produit
et inclus dans X.h.

3.6.5 Fichiers export‚s pour les clients

L'option -m1 exporte trois fichiers en plus de produire
trois fichiers localement. Pour un r‚pertoire X, un fichier
X.p sera produit dans le r‚pertoire ../include et les
fichiers X.nap et X.nai seront produit dans le r‚pertoire
../doc. En fait, ces fichiers portent les mˆmes noms que les
fichiers produits localement. Ce sont des versions
restreintes (elles contiennent moins de fonctions) des
fichiers locaux.

L'utilisation du verbe 'export' au d‚but de la d‚claration
d'une fonction permet de sp‚cifier les fonctions qui doivent
ˆtre offertes aux clients.




20


3.6.5.1 Le verbe export : extension au C

Le verbe export est un ajout au langage C. A notre
connaissance aucun compilateur C ne supporte un tel verbe.
Ce verbe est pr‚sentement appliqu‚ … la d‚claration de
fonctions, mais peut aussi s'appliquer … la d‚claration de
types, de constantes, de variables, etc...

Le verbe export a un usage un peu ‚quivalent au verbe
static. Ce dernier restreint la visibilit‚ d'un objet au
source o— il apparaŒt. Le verbe export, au contraire,
indique que la visibilit‚ d'un objet d‚passe le cadre du
systŠme o— il est d‚fini. Une fonction 'export' est un
service officiel offert aux clients. Une fonction ordinaire
est local au systŠme et ne doit pas ˆtre utilis‚e
directement par une fonction cliente du systŠme.

3.6.6 Unicit‚ du fichier d'inclusion

Pour un r‚pertoire X, il existe un fichier X.h. Tous les
sources du r‚pertoire X l'inclue. Ce fichier incluant
lui-mˆme X.p, tous les sources ont accŠs aux prototypes de
toutes les fonctions du r‚pertoire X. Le fichier X.h
contient l'‚nonc‚ '#include "X.p"'.

Si le r‚pertoire X est un sous-systŠme, le fichier X.h ou
une portion de celui-ci est export‚ dans le r‚pertoire
../include. Il devient disponible aux systŠmes clients.
Lorsque qu'un source d'un systŠme client inclut
../include/X.h, celui-ci inclut ../include/X.p.

Les clients ont accŠs aux prototypes de toutes les fonctions
'export' du systŠme X. De plus, les fichier ../doc/X.nap et
../doc/X.nai peuvent ˆtre consult‚s pour obtenir plus
d'information sur le systŠme X.

Le fichier X.h conceptuellement unique offre une vision
diff‚rente aux clients et aux sources du r‚pertoire X.


  3 Responses to “Category : C Source Code
Archive   : PROTO217.ZIP
Filename : PROTOF.MAN

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/