  Manuel de mise en forme de code C/C++
  Al Dev (Alavoor Vasudevan) <alavoor@yahoo.com>
  Traduction franaise de Robert Jacolin <rjacolin@yahoo.fr>
  Relecture de Christophe Fergeau <christophe.fer
  geau@ensimag.imag.fr>
  V 6.0, 1 aot 2000

  Ce document vous aidera  mettre en forme (embellir) des programmes
  C/C++ pour qu'ils soient plus lisibles et conformes  vos standards de
  codage C/C++. Les informations prsentes dans ce document s'appliquent
   tous les systmes d'exploitation existants - les systmes
  d'exploitation GNU/Linux, MS DOS, Windows 95/NT, OS/2, IBM, tous les
  clones Unix comme Solaris, HPUX, AIX, SCO, Sinix, BSD, SCO, etc ... -
  et  tous les autres systmes d'exploitation qui possdent un compila
  teur "C" (ce qui veut dire presque tous les systmes d'exploitation de
  cette plante!).
  ______________________________________________________________________

  Table des matires


  1. Introduction
  2. Comment avoir confiance en un programme de mise en forme ??!!
  3. Embellisseurs pour d'autres langages
  4. Script de vrification
  5. Des urls sur ce sujet
  6. Autres formats de ce document
  7. Droits d'auteurs


  ______________________________________________________________________

  11..  IInnttrroodduuccttiioonn

  Les standards de codage pour le C/C++ ou d'autres langages sont
  utiliss dans le but de rendre les programmes plus
  lisibles/comprhensibles par les programmeurs. Pour cela, il existe
  des embellisseurs C/C++ (outils de formatage). Le code format
  (embelli) augmente la pprroodduuccttiivviitt des programmeurs de 110000%%!!

  Sur GNU/Linux/Unix, il existe des commandes appeles ""iinnddeenntt"" et ""ccbb"".
  Rfrez-vous aux pages de manuel par 'man indent' et 'man cb'. Notez
  que iinnddeenntt et ccbb fonctionnent uniquement pour les programmes "C".
  Pour les programmes "C++", utilisez ""bbccpppp"". Tlchargez ce programme
  de mise en forme  partir des sites suivants :


    C++ : le site de BCPP est  l'adresse
     <http://dickey.his.com/bcpp/bcpp.html> ou sur
     <http://www.clark.net/pub/dickey>

    C++ : le site ftp de BCPP est  l'adresse
     <ftp://dickey.his.com/bcpp/bcpp.tar.gz>

    C++ :  <http://www.consultix-inc.com/c++b.html>

    C :  <http://www.chips.navy.mil/oasys/c/>

     J'ai utilis BCPP pour formater les programmes C++ et il m'a
     parfaitement convenu. Vous prfrerez peut-tre essayer d'autres
     outils et utiliser celui que vous apprcierez le plus.

  BCPP a t crit par Steven De Toni



  22..  CCoommmmeenntt aavvooiirr ccoonnffiiaannccee eenn uunn pprrooggrraammmmee ddee mmiissee eenn ffoorrmmee ????!!!!

  Pour tre sur  100%, vous devez utiliser une approche SSCCIIEENNTTIIFFIIQQUUEE
  pour valider et avoir confiance en un programme de mise en forme. La
  mthode dcrite dans cette section permettra au programme de mise en
  forme d'tre agr comme tant "vraiment fiable" et srieux.  Dans le
  but de vrifier qu'un programme de mise en forme comme bbccpppp, iinnddeenntt ou
  ccbb ne provoque pas de dommage ou ne change pas le code source d'entre
  aprs formatage, vous pouvez utiliser le script shell ``Programme de
  vrification'' ou utiliser la technique suivante :

  Gnrez le code objet  partir du code source original en utilisant le
  compilateur :


  ______________________________________________________________________
    g++ -c monprogramme.cpp
  ______________________________________________________________________


  Ici g++ est le compilateur C++ GNU. Le code objet monprogramme.o sera
  gnr

  Sauvez ce fichier :

  ______________________________________________________________________
     mv monprogramme.o monprogramme_orig.o
  ______________________________________________________________________



  Maintenant, lancez bcpp :

  ______________________________________________________________________
     bcpp monprogramme.cpp
  ______________________________________________________________________


  Le fichier contenant le programme format monprogramme.cpp sera gnr
  et le fichier initial sera dplac dans monprogramme.cpp.orig. Com
  pilez le nouveau fichier :

  ______________________________________________________________________
     g++ -c monprogramme.cpp
  ______________________________________________________________________


  Maintenant utilisez la commande unix 'diff' pour comparer les 2
  fichiers objets :

  ______________________________________________________________________
     diff monprogramme.o monprogramme_orig.o
  ______________________________________________________________________


  Les deux fichiers DDOOIIVVEENNTT TTRREE IIDDEENNTTIIQQUUEESS. Cette commande vrifie que
  bcpp fonctionne parfaitement. Sous DOS ou sous Windows 95, vous devrez
  utiliser les utilitaires 'diff' ou 'MKS' de Cygwin fournis sur le site
  de Cygnus <http://www.cygnus.com>.  De plus, vous pouvez utiliser la
  sortie en assembleur  la place de la sortie objet du compilateur. En
  faisant :

  ______________________________________________________________________
      g++ -S monprogramme.cpp
  ______________________________________________________________________

  monprogramme.s sera cr. Vrifiez-le avec :


  ______________________________________________________________________
      diff monprogramme.s monprogramme_orig.s
  ______________________________________________________________________


  Cette tape vous garantit  100% que votre prcieux code source reste
  intact et que bcpp fait UNIQUEMENT du formatage et NE change PAS ou
  n'endommage pas votre code de quelque manire que ce soit. Cette
  mthode vous assure  100 % de sa qualit et une GGAARRAANNTTIIEE  vie ou 
  long terme pour ces programmes de mise en forme comme 'bcpp', 'cb' ou
  'indent'.

  Il est fortement recommand de faire ces deux tapes chaque fois que
  vous lancerez un programme de mise en forme comme bbccpppp, iinnddeenntt ou ccbb.


  33..  EEmmbbeelllliisssseeuurrss ppoouurr dd''aauuttrreess llaannggaaggeess

  Visitez les sites suivants pour obtenir des embellisseurs pour
  d'autres langages comme HTML, SQL, Java, Perl, Fortran.


    HTML :  <http://www.digital-mines.com/htb/>

    HTML :
     <http://www.datacomm.ch/mwoog/software/perl/beautifier.html>

    HTML :  <http://www.watson-net.com/free/perl/s_fhtml.asp>

    SQL :  <http://www.netbula.com/products/sqlb>

    Java :  <http://home.wtal.de/software-
     solutions/jindent/frameset.html>

    Java JPretty :  <http://www.mmsindia.com/index.html>

    Perl :  <http://www.consultix-inc.com/www.consultix-
     inc.com/talk.htm>

    Perl :  <http://www.consultix-inc.com/www.consultix-
     inc.com/perl_beautifier.html>

    Embellisseur Fortran  :
     <http://www.aeem.iastate.edu/Fortran/tools.html>

    C++ : Le site de BCPP est  l'adresse
     <http://www.clark.net/pub/dickey/bcpp/bcpp.html>

    C++ :  <http://www.consultix-inc.com/www.consultix-
     inc.com/c++b.html>

    C :  <http://www.chips.navy.mil/oasys/c/>


    Livre blanc sur les embellisseurs :  <http://www.consultix-
     inc.com/www.consultix-inc.com/talk.htm>

  Pour prsenter du code sous format HTML :


    Prsentation (C, C++, Java) en html :
     <http://www.perlstudio.de/cbindex.html>

     Recherchez aussi dans les moteurs de recherches comme
     <http://www.yahoo.com> ou  <http://www.lycos.com> et cherchez avec
     le mot-cl "embellisseur" (ou "beautifier" pour le terme anglais,
     NDT).


  44..  SSccrriipptt ddee vvrriiffiiccaattiioonn

  Ceci est un script pour le shell Korn pour vrifier les programmes de
  mise en forme.  Il a besoin de "pdksh*.rpm"  partir du cdrom
  'contrib' de Linux. Sauvez ce fichier en tant que fichier 'texte' et
  appliquez sur ce fichier la commande chmod a+rx.  Vous pouvez rcrire
  ce script shell en Perl pour pouvoir l'utiliser sous Windows 95/NT ou
  MSDOS. Enlevez les commentaires de la variable PRGM pour le faire
  pointer sur bbccpppp, ccbb ou iinnddeenntt.



  ______________________________________________________________________
  #!/bin/ksh

  # Programme de vrification pour contrler des embellisseurs C++ comme 'bcpp', 'indent' ou 'cb'
  ############################################################
  # Copyright
  # Les droits d'auteurs sont sous les termes de la GNU/GPL.
  # Auteur: Al Dev (Alavoor Vasudevan) alavoor@yahoo.com
  # Traducteur : Robert Jacolin rjacolin@yahoo.fr
  ############################################################

  check_beautify_now()
  {
          # Efface tous les fichiers temporaires ...
          \rm -f ${TMP_FILE}
          \rm -f ${TMP_CPPFILE}*.*

          FNAME=$1
          if [ ! -f ${FNAME} ]; then
                  print "\nErreur : Le fichier ${FNAME} n'existe pas!!. Arrt immdiat ...."
                  exit
          fi
          \cp  -f ${FNAME} ${TMP_CPPFILE}.cpp
          ${COMPILER} -c ${TMP_CPPFILE}.cpp
          if [ ! -f ${TMP_CPPFILE}.o ]; then
                  print "Erreur Fatale : Impossible de compiler ${FNAME}. Arrt immdiat ... "
                  exit
          fi
          \mv -f ${TMP_CPPFILE}.o ${TMP_CPPFILE}_orig.o

          aa=`basename $PRGM`
          print "\nEn cours, vrification de $aa sur ${FNAME}"
          ${PRGM} ${TMP_CPPFILE}.cpp
          ${COMPILER} -c ${TMP_CPPFILE}.cpp
          \rm -f $TMP_FILE
          diff ${TMP_CPPFILE}.o ${TMP_CPPFILE}_orig.o 1> $TMP_FILE 2>> $TMP_FILE
          result=""
          result=`wc -c $TMP_FILE | awk '{print $1}' `
          if [ "$result" = "0" ]; then
                  print "Succs!! La mise en forme de $aa fonctionne proprement!!\n"
          else
                  print "Erreur Fatale : Quelque chose ne va pas!! La mise en forme ne fonctionne pas!!"
                  exit
          fi
  #       ${COMPILER} -S ${TMP_CPPFILE}.cpp
  #       diff ${TMP_CPPFILE}.s ${TMP_CPPFILE}_orig.s

          # Efface tous les fichiers temporaires ....
          \rm -f ${TMP_FILE}
          \rm -f ${TMP_CPPFILE}*.*
  }

  ########## La partie principale du programme commence ici ##################
  #PRGM=/usr/bin/bcpp
  #PRGM=/usr/bin/cb
  PRGM=/usr/bin/indent
  COMPILER=/usr/bin/g++

  TMP_FILE=beautify.tmp
  TMP_CPPFILE=beautify-tmp_cppfile

  print -n "Entrez le nom du fichier C++ <valeur par dfaut *.cpp> : "
  read ans
  if [ "$ans" = "" -o "$ans" = " " ]; then
          ans="ALL"
  else
          FILENAME=$ans
  fi

  # Efface tous les fichiers temporaires ....
  \rm -f ${TMP_FILE}
  \rm -f ${TMP_CPPFILE}*.*

  if [ "$ans" != "ALL" ]; then
          check_beautify_now ${FILENAME}
  else
          ls *.cpp |
          while read FILENAME
          do
                  check_beautify_now ${FILENAME}
          done
  fi
  ______________________________________________________________________



  55..  DDeess uurrllss ssuurr ccee ssuujjeett

  Visitez les sites suivants en rapport avec le C, C++ :

    Editeur de texte en couleur Vim pour C++, C
     <http://metalab.unc.edu/LDP/HOWTO/Vim-HOWTO.html>

    Le manuel de programmation C++
     <http://metalab.unc.edu/LDP/HOWTO/C++Programming-HOWTO.html>

    Le manuel de CVS pour les programmes C++
     <http://metalab.unc.edu/LDP/HOWTO/CVS-HOWTO.html>

    Site principal de gteries pour Linux sur
     <http://www.aldev.8m.com>

    Site miroir de gteries pour Linux sur  <http://aldev.webjump.com>

  66..  AAuuttrreess ffoorrmmaattss ddee ccee ddooccuummeenntt

  Ce document est publi dans 11 formats diffrents qui ont pour noms :
  DVI, Postscript, Latex, Adobe Acrobat PDF, LyX, GNU-info, HTML, RTF
  (Rich Text Format : Format de texte enrichi), texte simple, pages de
  manuel Unix et SGML.


    Vous pouvez obtenir ce document comme une simple archive tar de
     fichiers HTML, DVI, Postscript ou SGML (en anglais, NDT) sur
     <ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/other-formats/>

    Le format texte est sur :
     <ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO>

    Des traductions dans d'autres langues comme le franais,
     l'allemand, l'espagnol, le chinois, le japonais sont disponibles
     sur <ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO>.

     Toute aide que vous pouvez apporter pour des traductions dans
     d'autres langues est la bienvenue.

     Le document a t crit en utilisant un outil appel "SGML-Tools"
     qui peut tre obtenu  partir du site  <http://www.sgmltools.com>.
     Pour compiler les sources, vous devrez utiliser des commandes du
     genre :


    sgml2html C-C++Beautifier-HOWTO.sgml     (pour gnrer des fichiers
     html)

    sgml2rtf  C-C++Beautifier-HOWTO.sgml     (pour gnrer un fichier
     RTF)

    sgml2latex C-C++Beautifier-HOWTO.sgml    (pour gnrer un fichier
     latex)

     Les documents Latex peuvent tre convertis en fichier PDF
     simplement en produisant du Postscript en utilisant ssggmmll22llaatteexx (et
     dvips) et en passant ce qui a t produit  la commande ddiissttiillll
     d'Acrobat ( <http://www.adobe.com>) comme suit :

     ___________________________________________________________________
     bash$ man sgml2latex
     bash$ sgml2latex filename.sgml
     bash$ man dvips
     bash$ dvips -o filename.ps filename.dvi
     bash$ distill filename.ps
     bash$ man ghostscript
     bash$ man ps2pdf
     bash$ ps2pdf input.ps output.pdf
     bash$ acroread output.pdf &
     ___________________________________________________________________


  ou vous pouvez encore utiliser la commande ppss22ppddff.  ps2pdf fonctionne
  de faon analogue au produit Acrobat Distiller d'Adobe et possde les
  mmes fonctionnalits : il convertit les fichiers Postscript en
  fichiers au format PDF (Portable Document Format, Format de Document
  Portable).  ppss22ppddff est  un petit script de commande (fichier batch)
  qui invoque Ghostscript, en slectionnant un "priphrique de sortie"
  spcial appel ppddffwwrriittee. Pour utiliser ps2pdf, le priphrique
  pdfwrite doit tre inclus dans le makefile lors de la compilation de
  Ghostscript ; voir la documentation sur la compilation de Ghostscript
  pour plus de dtails.

  Ce document (version anglaise) est situ  :

    <http://sunsite.unc.edu/LDP/HOWTO/C-C++Beautifier-HOWTO.html>

  Vous pouvez aussi trouver ce document sur les sites miroirs suivant :


    <http://www.caldera.com/LDP/HOWTO/C-C++Beautifier-HOWTO.html>

    <http://www.WGS.com/LDP/HOWTO/C-C++Beautifier-HOWTO.html>

    <http://www.cc.gatech.edu/linux/LDP/HOWTO/C-C++Beautifier-
     HOWTO.html>

    <http://www.redhat.com/linux-info/ldp/HOWTO/C-C++Beautifier-
     HOWTO.html>

    D'autres sites miroirs proches de vous (au sens de distance rseau)
     peuvent tre trouv sur
     <http://sunsite.unc.edu/LDP/hmirrors.html>.  Choisissez un site et
     allez dans le rpertoire /LDP/HOWTO/C-C++Beautifier-HOWTO.html.

  Pour visualiser un document au format DVI, utilisez le programme xdvi.
  Le programme xdvi est situ dans le paquetage tetex-xdvi*.rpm dans la
  Linux Redhat. Il peut tre trouv par l'intermdiaire des boutons de
  menu Panneau de Contrle (ControlPannel) | Applications (Applications)
  | Publications (Publishing) | TeX (TeX).

  Pour lire un document dvi, utilisez la commande :


               xdvi -geometry 80x90 howto.dvi
               man xdvi



  et changez la taille de la fentre avec la souris. Pour naviguer dans
  le document, utiliser les touches flches, les touches de saut de
  page haut, saut de page bas, vous pouvez aussi utiliser les lettres
  'f', 'd', 'u', 'c', 'l', 'r', 'p', 'n' pour vous dplacer vers le
  haut, le bas, au centre,  la page suivante,  la page prcdente,
  etc.  Pour dsactiver le mode expert, pressez 'x'.

  Vous pouvez lire un fichier Postscript grce au programme 'gv'
  (ghostview) ou et le programme gv est dans le paquetage gv*.rpm dans
  la distribution linux Redhat qui peut se trouver en utilisant les
  boutons du menu Panneau de Contrle (Control panel) | Applications
  (Applications) | graphiques (Graphics). Le programme gv est beaucoup
  plus facile  utiliser que ghostscript. Ghostscript et gv existent
  aussi sous d'autres plate-formes comme OS/2, Windows 95 et NT.


    Rcuprez ghostscript pour Windows 95, OS/2 et pour tous les OS sur
     <http://www.cs.wisc.edu/~ghost>.

     Pour lire un document postscript utilisez la commande :


                       gv howto.ps
                       ghostscript howto.ps



  Vous pouvez lire un document au format HTML en utilisant Netscape Nav
  igator, Microsoft Internet Explorer, le navigateur Baron de Redhat ou
  le navigateur de votre choix parmi les dizaines de navigateurs web
  existants.

  Vous pouvez lire les documents latex ou Lyx gnrs en utilisant Lyx
  qui est une interface graphique sous "X-Window" pour latex.


  77..  DDrrooiittss dd''aauutteeuurrss

  La licence du copyright est la licence GNU/GPL comme pour le LDP
  (Linux Documentation Project, le projet de documentation de Linux). Le
  LDP est un projet sous licence GNU/GPL. Les restrictions
  additionnelles sont : vous devez laisser le nom de l'auteur, l'adresse
  email et cette note sur le droit d'auteurs sur toutes les copies. Si
  vous faites un quelconque changement ou addition dans ce document,
  vous devez alors prvenir tous les auteurs de ce document.



