source: Sophya/trunk/SophyaLib/Manual/modifs.tex@ 2919

Last change on this file since 2919 was 2919, checked in by ansari, 20 years ago

MAJ doc sophya oveview pour modifs Range() - Reza 23/02/2006

File size: 49.0 KB
Line 
1\documentclass[twoside,11pt,A4]{article}
2\usepackage[french]{babel}
3
4% \usepackage[T1]{fontenc}
5\usepackage[applemac]{inputenc}
6\usepackage{palatino}
7% \usepackage{times}
8% package pour ecrire DRAFT en fond de page
9% \usepackage[light,all,draft]{draftcopy}
10
11% \usepackage{epsfig}
12\usepackage{graphicx}
13\usepackage{amsmath}
14\usepackage{amssymb}
15
16\setlength{\textwidth}{16cm}
17\setlength{\textheight}{23 cm}
18\setlength{\topmargin}{0.5cm}
19\setlength{\oddsidemargin}{0.cm}
20\setlength{\evensidemargin}{0.cm}
21\setlength{\unitlength}{1mm}
22
23\newcommand{\rond}{$\bullet \ $}
24\newcommand{\etoile}{$\star \ $}
25\newcommand{\cercle}{$\circ \ $}
26\newcommand{\carre}{$\Box \ $}
27
28\begin{document}
29\begin{titlepage}
30\begin{center}
31{\Large \bf Liste de modifications de SOPHYA } \\[5mm]
32{ \large (fait ou ˆ faire ) } \\
33{\large Janvier 2003 - Novembre 2005 } \\[25mm]
34Liste des tags et dates : \\[5mm]
35{\large
36\begin{tabular}{lcl}
37V = 0.727 & \hspace{10mm} & Octobre 1999 \\
38V = 0.8 & \hspace{10mm} & FŽvrier 2000 \\
39V = 1.1 & \hspace{10mm} & FŽvrier 2001 \\
40V = 1.2 & \hspace{10mm} & Juillet 2001 \\
41V = 1.3 & \hspace{10mm} & Novembre 2001 \\
42V = 1.5 & \hspace{10mm} & DŽcembre 2002 \\
43V = 1.7 & \hspace{10mm} & Septembre 2003 \\
44V = 1.9 & \hspace{10mm} & Juin 2005 - SANS tag CVS \\
45V = 1.9xx & \hspace{10mm} & en cours (09/2005 ...) \\
46
47\end{tabular}
48}
49\end{center}
50\end{titlepage}
51
52\newpage
53\tableofcontents
54\newpage
55
56\section{BuildMgr}
57\begin{itemize}
58\item[\rond] Dec 2005 : Portage sur AIX - xlC
59\item[\rond] Dec 2005 : check Compil avec icc , compil avec gcc-4
60\item[\rond] Avril-Mai 2005 : Introduction de la nouvelle version de
61scripts de gestion du code - avec un script principal configure. \\
62Variable d'environnement {\bf SOPHYABASE } - \\
63Pour les makefiles, l'ensemble des dŽfinitions se trouve dans : \\
64SOPHYABASE/include/sophyamake.ic \\
65\end{itemize}
66\section{BaseTools}
67\subsection{Modifs}
68
69\begin{itemize}
70\item[\rond] Octobre-Novembre 2005 : \\
711/ Correction bug TimeStamp::ToDays() + petites amelioration \\
722/ Prise en compte du type TimeStamp dans MuTyV (sous forme de double en interne) \\
733/ Adaptation DVList a modifs MuTyV (typ TimeStamp) et R/W PPersist \\
744/ Gestion format YYYY-MM-DDThh:mm:ss par TimeStamp \\
755/ Gestionnaire PPersist pour TimeStamp
76%
77\item[\rond] Septembre 2004 - {\bf Namespace SOPHYA } \\
78Suppression de {\tt using namespace SOPHYA ; } ds machdefs.h -
79Ajout fichier {\tt \#include "sopnamsp.h"} dans les .cc de SOPHYA,
80ainsi que lors de la gŽnŽration automatique du code (runxx, c++exec)
81\end{itemize}
82
83\subsection{PPF}
84\begin{itemize}
85\item[\rond] Novembre 2003 (21/11/2003) - Ajout rawstream.h .cc \\
86Classes RawInOutStream , RawInFileStream , RawOutFileStream
87\item[\rond] DŽcembre 2003 - Ajout ppfbinstream.h .cc \\
88Classes PPFBinaryIOStream , PPFBinaryInputStream , PPFBinaryOutputStream
89\item[\rond] DŽcembre 2003 (9/12/2003) Fin de l'ensemble des modifs pour les
90PPF V3 \\
91- Ecriture nombre complexes r4, r8 avec tag spŽcifique. \\
92Tag de positionnement sous forme de \\
93\centerline{\tt <tag (1 byte)><FilePosition (8 byte, long int)> } \\
94- Ecriture PosTagTable \\
95- Ecriture Statistiques en fin de fichier \\
96- Voir BaseTools/ppfbinstream.h: \\
97\centerline{\tt GotoPositionTag(int\_8 pos) , }
98\centerline{\tt GetPosTagTable(...) }
99\centerline{\tt int\_8 WritePositionTag() PutPosTagTable(...) }
100- Ajout programme de test Tests/ppftswap.cc
101\item[\rond] Avril 2005 - Ajout de wrapper de lecture/ecriture PPF pour les vecteurs de
102la librairie standard (classe PPFWrapperSTLVector$<$T$>$ ) fichier ppfwrapstlv.h
103\item[\rond] Ajout de la classes utilitaire PPF\_TPointer\_IO$<$T$>$
104(fichiers ppftpointer.h .cc)
105\item[\rond] Amelioration de l'impression ds AnalyseTags (ppfbinstream.cc)
106\item[\rond] scanppf.cc revision 1.8 (2005/04/05)
107modification programme scanppf: ajout option -lh -lho pour lister les classes PP
108ersist handler
109
110\end{itemize}
111
112
113\subsection{Nouvelles classes}
114\begin{itemize}
115\item[\rond] Ajout de la classe {\bf TimeStamp} pour la manipulation de date et heure -
116calcul de duree. - Ajout du prog. test Tests/ttimestamp.cc (Mars 2003)
117\item[\rond] { \bf Segmented Data Block :} \\
118Mars-Avril 2005: Introduction des classes similaires aux NDataBlock, mais permettant
119de gerer des blocs de donnees segementes, pour tout type de donnees, de structures
120et de classes (template pour tout type T).
121\begin{enumerate}
122\item Ajout de la classe {\tt SegDataBlock<T>} (et l'interface { \tt SegDBInterface<T>} )
123pour la gestion de blocs de donnees segmentes (segdatablock.h) et son
124gestionnaire PPF {\tt FIO\_SegDataBlock<T>} (fichier fiosegdb.h )
125\item Ajout de la classe {\tt SwSegDataBlock<T>} (Data bloc segmente avec gestion
126de swap) et la classe swapper PPF {\tt PPFDataSwapper<T>} (fichiers
127ppfswapper.h et swsegdb.h)
128\item Ajout programme de test Tests/tstsegdb.cc
129\end{enumerate}
130\end{itemize}
131
132
133\section{TArray}
134\begin{itemize}
135
136\item[\rond] Janvier, FŽvrier 2006 \\
137- AmŽlioration des fonctionalitŽs de la classe {\bf Range} et des mŽthodes d'extraction
138de sous-tableaux (+ correction bugs et amŽlioration documentation) \\
139- Ajout de la methode BaseArray::ValueAtPositionDB() pour corriger un gros bug au
140niveau de la conversion de type (r\_4 r\_8 ...) des tableaux \\
141- Compil avec g++ 4 : ajouts fichiers declarations privees tmatrix\_tsnl.h tvector\_tsnl.h
142
143\item[\rond] Optimisation de la multiplication matricielle (CMV) - Extrait du
144message (from CMV) du 30 Juillet 2004: \\
145\begin{verbatim}
146- on definit un flag d'optimisation
147 Contrairement a ce qu'on avait dit, je n'ai pas ajoute
148 un argument a Multiply car on ne peut pas jouer
149 avec qiand on utilise l'operateur * surcharge.
150 Or au vu des performance il'ma parut interessant que l'utilisateur
151 meme lambda puisse choisir le niveau d'optimisation
152 --> donc j'ai ajoute une methode statis dans BaseArray::
153 void BaseArray::SetMatProdOpt(uint_2);
154 uint_2 BaseArray::GetMatProdOpt();
155
156- Je n'ai refait les test de rapidite que sur OSF:
157
1581./ pour les matrices 1000x1000 (grosses)
159 on arrive effectivement au meme temps pour les 4 cas
160 si on copie dans le cas lent (FxC)
161 ---EndMultiply FxC CPUTime: Total= 93.1296 (Partial= 69.3806) Sec.
162 devient
163 ---EndMultiply FxC CPUTime: Total= 34.9653 (Partial= 11.1829) Sec.
164 exactement comme les copains:
165 La copie prend de la place mais ne prend absolument
166 pas de temps pour les grosses matrices
167
1682./ pour les matrices 10x10 (1000000 multiplications par cas)
169 on a bien ce que l'on attend a savoir que
170 la copie faites 100000 fois finie par nous faire perdre du temps
171 ---EndMultiply FxC CPUTime: Total= 37.4152 (Partial= 12.4662) Sec.
172 devient
173 ---EndMultiply FxC CPUTime: Total= 53.9978 (Partial= 28.8322) Sec.
174 dans ce cas on perd un gros facteur 2 a cause de la copie
175 mais rien de surprenant la dedans.
176
177-----------------------------------------------------------------------
178- ensuite j'ai implemente une prise de decision au niveau de
179l'optimisation pour les petites matrices:
180le test est simple mais me semble OK:
181je calcule sza taille du NDataBlock de A
182 szb B
183si ((sza+szb)*sizeof(T) < 100000 ) pas d'optimisation
184IDEE: on pifometre que raisonnablement il y a 100 koctets
185 de disponible pour les matrices A et B dans le cache processeur
186 et que dans ce cas elles sont copiees toutes les 2 dans le cache
187 par l'optimiseur du compilo qui est tres malin et surtout qui
188 veux absolument nous faire plaisir......
189
190-----------------------------------------------------------------
191===> Les resultats sont dans le fichier toto.calc en attached
192.. En tete tu as l'explication des flags d'optimisation
193...Avec les 2 sections:
194 GROSSE MATRICE
195 et
196 PETITE MATRICE
197\end{verbatim}
198
199\item[\rond] Optimisation operations diverses, en particulier \\
2001) Remplacement des methodes Add/Sub/Mul/DivElt(a) par
201 Add/Sub/Mul/DivElt(TArray a, TArray res) \\
2022) Operateurs += -= A+B A-B TArray et TMatrix/TVecteur modifies en consequence
203\item[\rond] Extrait de {\tt cvs log tarray.cc }
204{\small \begin{verbatim}
205----------------------------
206revision 1.38
207date: 2004/07/30 13:31:39; author: ansari; state: Exp; lines: +28 -24
208Diverses petites optimisations ds les methodes operations/affectations de TArray - Reza 30 Juillet 2004
209----------------------------
210----------------------------
211revision 1.36
212date: 2004/07/27 11:44:23; author: ansari; state: Exp; lines: +4 -1
213Corrections bug apres modifs methods Add/Sub/Mul/DivCst(x,res) - Reza 27 Juillet 2004
214----------------------------
215revision 1.35
216date: 2004/07/26 17:30:40; author: ansari; state: Exp; lines: +187 -108
217Remplacement methodes Add/Mul/Sub/Div(T x) par AddCst/MulCst/SubCst/DivCst(T x, TArray<T> res) ds TArray - Reza 26 Juillet 2004
218----------------------------
219\end{verbatim} }
220
221\item[\rond] Extrait de {\tt cvs log tarray.cc }
222{\small \begin{verbatim}
223----------------------------
224revision 1.27
225date: 2004/07/30 10:24:12; author: cmv; state: Exp; lines: +97 -32
226- Intro decision auto d'optimisation produit de matrices
227- Possibilite a l'utilisateur pour choisir l'optimisation
228- cas FxC optimise par copie
229 cmv 30/07/04
230----------------------------
231revision 1.26
232date: 2004/07/29 12:31:16; author: ansari; state: Exp; lines: +7 -5
2331/ Remplacement des methodes Add/Sub/Mul/DivElt(a) par
234 Add/Sub/Mul/DivElt(TArray a, TArray res)
2352/ Operateurs += -= A+B A-B TArray et TMatrix/TVecteur modifies en consequence
2363/ Ajout methode TArray::ScalarProduct()
2374/ Methode TArray::SetT renomme en SetCst() SetT garde en alias
2385/ Ajout parametre bool fzero (mise a zero) ajoute ds constructeur et
239 ReSize() de TMatrix et TVecteur.
240 Reza 29/07/2004
241----------------------------
242revision 1.25
243date: 2004/07/29 08:40:49; author: cmv; state: Exp; lines: +148 -1
244Optimisation produit de matrice a la sauce cmv 29/07/04
245----------------------------
246\end{verbatim} }
247
248\end{itemize}
249
250\section{HiStats}
251\subsection{Classe HistoErr }
252Ajout classe HistoErr (Septembre-Octobre 2004)
253
254\subsection{NTuple}
255la classe NTuple peut maintenant avoir des colonnes float ou double.
256Il y a maintenant deux methodes Fill(r\_4 *) et Fill(r\_8 *)
257Les noms ne sont plus limites a 8 caracteres.
258
259
260\subsection{ Les DataTable (SuperNTuple) }
261
262{\bf Octobre-Novembre 2005 } \\
263\begin{itemize}
264\item[\rond] Ajout classe {\bf DataTableRow} pour manipulation d'une ligne de la table.
265Ajout/maj methode BaseDataTable::EmptyRow() AddRow() GetRow()
266\item[\rond] Gestion des types {\tt complex<r\_4> , complex<r\_8> , TimeStamp } par
267BaseDataTable, DataTable et SwPPFDataTable
268\item[\rond] Codage methode Print() (Dump ascii) et NTFrAscii (decodage fichier
269text) dans BaseDataTable.
270\item[\rond] Codage mŽthode BaseDataTable::GetColumnD() pour recuperer
271une colonne de la table en {\tt TVector<r\_8>} - NON TESTE
272\end{itemize}
273
274\begin{verbatim}
275BaseDataTable
276 -------- DataTable
277 -------- SwPPFDataTable
278\end{verbatim}
279
280\noindent {\bf BaseDataTable} : Classe de base, avec qques methodes virtuelles
281pures, implementent la presque totalite des fonctionalites, en particulier
282celles de l'interface NTupleInterface.
283
284\noindent {\bf DataTable} : Implementation concrete de BaseDataTable avec donnees en
285memoire \\
286(utilise SegDataBlock$<$T$>$ pour stocker les colonnes)
287
288\noindent {\bf SwPPFDataTable} : Implementation concrete de BaseDataTable avec donnees
289en swap sur stream PPF (POutPersist)- \\
290Utilise (SwSegDataBlock$<$T$>$ avec
291un data-swapper PPF (classe PPFDataSwapper$<$T$>$ )
292
293DataTable et SwPPFDataTable respecte +/- les conventions SOPHYA ,
294constructeur de copie avec partage ou copie de donnees, operateur =
295Datatable : partage et copie , = : fait une copie
296SwPPFDataTable : C'est toujours partage (presque par definition)
297Autre point, compte tenu de la structure des streams PPF ,
298les SwPPFDataTable fonctionne en ecriture OU en lecture, mais
299pas les deux a la fois.
300
301Classe de gestion de persistence commune : \\
302{\bf ObjFileIO$<$BaseDataTable$>$ }
303
304Lit et ecrit les DataTable et SwPPFDataTable
305Actuellement, on ne peut les relires que dans le meme type,
306cad on ne peut relire avec un SwPPFDataTable un objet
307ecrit comme DataTable - mais cette possibilite pourra
308peut-etre codee ulterieurement (d'ou l'interet en particulier
309d'un gestionnaire commun ObjFileIO$<$BaseDataTable$>$
310
311(les operateurs habituel $<<$ et $>>$ sur PIn/OutPersist sont definies)
312
313
314Les merges et copie sont prevues,
315on doit en principe pouvoir ecrire par exemple:
316\begin{verbatim}
317SwPPFDataTable swdt;
318PInPersist pis("swdt.ppf");
319pis >> swdt;
320DataTable dt;
321dt = swdt; // Pour tout charger en memoire
322\end{verbatim}
323
324{\it On pourra aussi ajouter des methodes d'acces aux variables
325membres pour enrichier l'interface. }
326
327
328{\bf DataTable cote PIAPP :} \\
329Cote piapp, les DataTable et SwPPFDataTable sont pris en charge par
330{\tt NOMAdapter\_DataTable} (qui prend en charge tous les 'BaseDataTable' )
331Il faudrait peut-etre rajouter deux commandes : \\
332newdt ou newdatatable
333newdt ncol col1 [col2 .... ] \\
334avec possibilite de specifier coli sous fome de X:colname ou X = D,F,S,I,L ...
335et puis dtfromascii ...
336
337Voir Tests/tnt.cc pour exemple d'utilisation :
338\begin{verbatim}
339DataTable dt(64);
340dt.AddIntegerColumn("line");
341dt.AddDoubleColumn("x");
342dt.AddFloatColumn("f_sin");
343MuTyV rec[10];
344for(int k = 0; k<1000; k++) {
345 rec[0] = k;
346 double x = M_PI*k/100.;
347 double fx = sin(x)*cos(x);
348 rec[1] = x;
349 rec[2] = sin(x);
350}
351 POutPersist po("dtable.ppf");
352 po << dt;
353\end{verbatim}
354
355Pour SwPPFDataTable, il faut juste creer un stream PPF avant, qui doit rester
356ouvert tant que le SwPPFDataTable est actif: \\
357\begin{verbatim}
358 POutPersist po("swdtable.ppf");
359 SwPPFDataTable dt(po, 64);
360\end{verbatim}
361
362
363\section{SkyMap , Samba }
364\subsection{Tests et vŽrifications des polynomes de Legendre}
365CMV ???
366
367\subsection{SphereECP}
368Extrait du message du 7 Septembre 2004
369\begin{verbatim}
370 J'ai mis dans la base (module SkyMap) le code de la classe
371SphereECP<T> (pixelisation avec projection cylindrique) - carte partielle et complete,
372+ gestionnaire PPersist + modifs adaptateur NomSkyMapAdaptor (PIext/ spiapp)
373
374Programme test (avec appel a transforme en Alm) ds Test/tsphereecp.cc
375Attention, mettre le parametere de pixelisation a -1 lors de l'appel a Generate pour eviter
376le Resize de la sphereECP
377ylmserver.GenerateFromCl(map, -1, clin, 0.);
378
379Dans piapp, c'est visualise par defaut en projection Molleweide
380On peut ajouter dans les options d'affichage :
381ecparray : affichage direct du tableau TArray des pixels (X:Phi, Y:Theta)
382Si option ecparray, on peut preciser en plus
383 - ecpscaledeg: echelle des axes en degres au lieu de pixels
384 - ecpscalerad: echelle des axes en radians au lieu de pixels
385Exemple:
386Cmd> disp mapecp 'ecparray ecpscaledeg zoomx2 stdaxes'
387\end{verbatim}
388
389\subsection{Bug non corrigŽ ds classe Circle}
390\begin{verbatim}
391From: Laurence Perotto <perotto@cdf.in2p3.fr>
392Date: Mon Jan 5, 2004 4:59:12 PM Europe/Paris
393To: Reza Ansari <ansari@lal.in2p3.fr>, Christophe Magneville <cmv@hep.saclay.cea.fr>
394Subject: un bug dans sophya...
395
396 Bonjour et bonne annee a tous les deux...
397
398 Je viens de trouver un ptit bug dans la fonction TanOnCircle de la classe Circle: Il
399s'agit d'un melange entre les coordonnees (beta, lambda) de Benoit et les (theta, phi)
400utilises dans Sophya. Lors du passage de l'un a l'autre, une transfo sin->cos a ete
401oubliee...
402 Voila...
403 Bonne journee.
404
405 Laurence.
406\end{verbatim}
407
408\section{SysTools}
409\subsection{Classe SOPHYA::Commander (module SysTools) }
410
411Mars-Avril 2004 :
412Classe d'interprŽteur de ligne de commande inspire de C-Shell,
413destine a etre incluee dans des applications C/C++. \\
414( Programme test Test/tcmd.cc ) \\
415Avril 2005 : Introduction de la possibilite d'execution de commandes
416en multithreads \\
417Avril 2005 : Controle strict sur les noms de variables, limites
418aux caracteres alphanumeriques + underscore - Adaptation
419de l'algorithme de substitution en consequence.
420
421{\bf Mini guide de l'interpreteur - Message du 19 Mars 2004 } \
422
423\begin{itemize}
424
425\item[\rond] {\bf Gestion des variables } \\
426 - Les variables sont non typees toutes traitees comme des chaines
427de caracteres.
428 - Acces aux variables d'environnement -
429 - Un niveau variable d'environnement application est aussi prevu
430 - Toutes les variables de l'interpreteur sont traitees comme des vecteurs.
431extensibles automatiquement (difference avec le C-Shell)
432
433\item[\rond] {\bf Creation / initialisation de variables } \\
434\begin{verbatim}
435Cmd> set sv StringValue
436# Suppression d'une variable : unset ou clearvar
437Cmd> unset sv
438
439# Initialisation de type vecteur - Espace avant/apres ')' et avant ')' obligatoire
440Cmd> set vecv ( mot1 mot2 mot3 mot4 mot5 )
441#Calcul numerique : expression de type C - Espace avant/apres '=' obligatoire
442Cmd> a = 2+3*sqrt(4)
443# Le signe egal peut etre utilise pour attribuer une chaine de caracteres
444Cmd> a = 'Bonjour Madame'
445# Un element de tableau peut etre specifie avant le signe egal
446Cmd> vecv[2] = 'coucou'
447# Ou bien
448Cmd> i = 3
449Cmd> vecv[i] = 'Ooohhh'
450\end{verbatim}
451
452A droite du signe egal (membre de droite), les variables doivent etre
453adressees a l'aide du signe \$.
454
455Une chaine peut etre cassee en mots a l'aide de la commande var2words
456\begin{verbatim}
457Cmd> var2words varname wordvarname [separateur]
458\end{verbatim}
459
460\item[\rond] {\bf Acces aux variables } \\
461L'acces aux variables s'effectue par le signe \$ {\tt \$varname} .
462Les {\tt \$xxx} sont remplaces par le contenu de la variable xxx.
463Cette substitution ne s'effectue pas entre simple quotes {\tt ' ... \$xxx '},
464mais se fait entre double quotes {\tt " ... \$xxx ... "} . Les formes
465{\tt \${vname} } ou {\tt \$(vname)} peuvent etre utilisees.
466
467\begin{verbatim}
468Cmd> x = 'Hello'
469Cmd> echo $x
470# Taille d'une variable de type vecteur $#vname
471Cmd> set vx ( 111 2222 3333 444444 )
472Cmd> echo $#vx
473# Acces aux elements de tableau
474Cmd> echo $vx[0] $vx[1]
475# ou bien indexe par une variable
476Cmd> i = 2
477Cmd> echo $vx[i]
478# Une syntaxe particuliere: $[vname] retourne le contenu de
479# la variable dont le nom est ds vname
480Cmd> zzz = 'Commander'
481Cmd> xxx = 'zzz'
482Cmd> echo '$[xxx]= ' $[xxx]
483$[xxx]= Commander
484\end{verbatim}
485
486Variables d'environnement: L'acces aux variables d'environnement
487se fait simplement par{\tt \$varenvname}. Attention, les variables locales
488de l'interpreteur sont prioritaires.
489
490\item[\rond] {\bf Variables particulieres: } \\
491{\tt \$retval} ou {\tt \$retstr} : chaine specifee sur la derniere commande return
492{\tt \$status} : code de retour de la derniere commande executee.
493(variable existe et est rempli - mais il faudra se donner une regle
494plus claire ...)
495Arguments des fichiers .pic appeles par la commande exec
496{\tt \$\# } : nombre d'arguments, a part \$0
497{\tt \$0} nom du fichier ou du script
498{\tt \$1 \$2 \$3} .... les arguments (pour les scripts et les .pic (exec))
499
500
501\item[\rond] {\bf Structures de controle } \\
502\begin{verbatim}
503foreach f ( w1 w2 w3 ... )
504 ...
505 echo $f
506end
507\end{verbatim}
508
509Espace avant/apres '(' et avant ')' obligatoire.
510
511\begin{verbatim}
512foreach v vecname
513 ...
514 echo $v
515end
516\end{verbatim}
517
518Boucle de type integer:
519\begin{verbatim}
520for i startInt:endInt[:stepInt]
521 ....
522 echo $i
523end
524\end{verbatim}
525
526Boucle de type float
527\begin{verbatim}
528for f startFloat:endFloat[:stepFloat]
529 ....
530 echo $f
531end
532\end{verbatim}
533
534Boucle sur les lignes d'un fichier:
535\begin{verbatim}
536forinfile line FileName
537 ...
538 echo $line
539end
540\end{verbatim}
541
542Instruction {\tt break} pour casser une boucle
543
544\item[\rond] {\bf Les tests }
545\begin{verbatim}
546if ( test ) then
547endif
548
549if ( test ) then
550 ....
551else
552 ....
553endif
554\end{verbatim}
555
556Espace avant/apres '(' et avant ')' obligatoire.
557
558test de type {\tt a == b} OU {\tt a != b} OU {\tt a < b} OU {\tt a > b}
559OU {\tt a <= b} OU {\tt a >= b}
560les espaces avant l'operateur de comparaison sont obligatoires.
561{\tt ==} et {\tt !=} effectue une comparaison de chaines de caracteres.
562{\tt < , > , <= , >=}une comparaison apres conversion en valeur flottante.
563
564\item[\rond] {\bf Definition de script } \\
565\begin{verbatim}
566defscript scriptname [description ]
567 ....
568endscript
569\end{verbatim}
570
571L'appel a un script se fait simplement a l'aide
572du nom de script (contrairement aux fichiers
573de commande qui sont executes a l'aide de la
574commande {\tt exec} )
575\begin{verbatim}
576Cmd> scriptname arg1 arg2 arg3 ....
577\end{verbatim}
578
579L'instruction {\tt return} provoque l'arret (et le retour) d'execution d'un
580script ou d'un fichier de commandes.
581Commandes {\bf listscript }et {\bf clearscript scriptname}
582 permettet d'avoir la liste des scripts
583 definis / supprimer la definition d'un script
584
585\item[\rond] {\bf Autres commandes}
586\begin{itemize}
587\item Instruction {\bf echo } pour ecrire sur cout/stdout
588\item Instruction {\bf echo2file} pour ecrire a la fin d'un fichier
589\item Instruction {\bf sleep nsec} (attente de nsec seconds )
590\item Instructions {\bf timingon , timingoff , traceon , traceoff } \\
591%
592\item Commande {\bf exec commandfilename [arg1 arg2 ... ] }
593\item Commandes {\bf help et help keyword/commandname }
594\item Commandes {\bf listvars , listcommands }
595\item Defintion et liste d'alias : {\bf alias aliasname 'string ' } et {\bf listalias}
596\end{itemize}
597
598\item[\rond] {\bf Threads d'execution de commandes (Avril 2005)} \\
599Possibilite de lancer des commandes (autre que les commandes
600 de l'interpreteur lui-meme) en thread separe (il suffit de mettre un \&
601 a la fin de la commande) \\
602 Commandes des gestion des threads : \\
603 {\bf thrlist ; cleanthrlist ; cancelthr ThId ; waitthr } \\
604 Attention, la possibilite de lancer des commandes en threads separes ne fonctionne que
605pour des commandes "thread-safe".
606La plupart de nos commandes de piapp sont \\
607 - soit trop rapide, \\
608 - soit non "thread-safe" \\
609
610 \item[\rond] controle d'execution : \\
611Possibilite d'arreter l'execution de l'interpreteur (dans une boucle
612 ou dans dans un fichier .pic ...
613 Utiliser la commande {\bf stop} ou {\tt <Cntrl C>} dans PIConsole
614
615\end{itemize}
616
617\subsection{Classes CExpressionEvaluator et RPNExpressionEvaluator }
618\begin{itemize}
619\item[\rond] Ajout des classes RPNExpressionEvaluator et CExpressionEvaluator
620d'Žvaluation d'expressions numŽriques en notation polonaise inverse
621et avec la syntaxe C . Utilise dans la classe Commander.
622\item[\rond] Programme test Test/tcmd.cc
623\item[\rond] extrait de {\tt cvs log cexpre.cc }
624{\small \begin{verbatim}
625----------------------------
626revision 1.3
627date: 2004/03/18 18:15:19; author: ansari; state: Exp; lines: +10 -6
628Suite (presque finie) des modifications de l'interpreteur - gestion des variables en particulier - Reste au moins un bug ds CExpressionEvaluator - Reza 18/03/2004
629----------------------------
630revision 1.2
631date: 2004/03/16 08:47:48; author: ansari; state: Exp; lines: +5 -6
632suppression variables inutilisees ds cexpr.cc - Reza 16 Mars 2004
633----------------------------
634revision 1.1
635date: 2004/03/15 22:19:43; author: ansari; state: Exp;
636Ajout fichiers des classes RPNExpressionEvaluator et CExpressionEvaluator (expression arithmetiques) et MAJ du fichier Makefile et objlist.list - Reza 15 Mars 2003
637\end{verbatim} }
638
639\item[\rond] Extrait du message du 3 Mars 2004
640\begin{verbatim}
641Le code est base sur une hierarchie de classe d'expression :
642 Expr -------- NumberExp
643 --------- BinExp ------ AddExp
644 ------ MulExp
645 ------ SubExp
646 ------ DivExp
647 --------- FuncExp
648 --------- CExpressionEvaluator
649
650NumberExp : expression elementaire de nombre, sait actuellement traduire Pi et E
651 tres facile d'ajouter d'autres constantes
652BinExp: Classe d'operations binaires (deux operandes) a+b a-b a*b a/b
653 avec gestion de niveau de priorite des operateurs
654 On peut facilement ajouter d'autres operateurs binaires (par exemple
655 puissance ^ a^b ) - et les priorites relatives seront gerees en principe.
656FuncExp: classe d'expression fonctionnelle, avec n arguments f(x1,x2,...x3)
657 actuellemenent, n=0 a n=3 arguments et quelques fonctions
658 usuelles sont decodes ds cette classe (sin,cos,tan, asin, acos, atan, exp, log,
659 atan2, pow ) - voir ds le code
660
661CExpressionEvaluator : C'est la classe de haut niveau a utiliser -
662 la fonction de decodage de la chaine ASCII (qui utilise
663 les fonctionalites des differentes classes est la dedans
664 et ce n'est pas tres long.
665(+ une classe d'exception specifique).
666\end{verbatim}
667
668\end{itemize}
669
670\section{FitsIOServer}
671Septembre-Novembre 2005 : Refondation totale du module
672\begin{itemize}
673\item[\rond] Amelioration du programme PrgUtil/scanppf -
674(scanfits -V1 -lh -rd -header filename)
675\item[\rond] La classe FitsFile (et donc FitsInFile FitsOutFile) heritent de FitsInOutFile.
676(Jan 2006)
677\item[\rond] Fonctionalites classe {\bf FitsManager } etendues - en particulier ScanFile()
678\item[\rond] Les FitsIOHandler (ancien) heritent de FitsHandlerInterface -
679Tous les handlers sont pris en charge et enregistre par FitsManager (Jan 2006)
680\item[\rond] Ajout classe d'initialisation du module {\bf FitsIOServerInitiator },
681fichiers fiosinit.h .cc (Dec 2005)
682\item[\rond] Classe { \bf SwFitsDataTable } (DataTable avec swap sur FITS) ajoute
683 + classe FitsHandler<BaseDataTable> modifie pour prise
684en charge de SwFitsDataTable (Dec 2005 - Jan 2006)
685\item[\rond] Classes {\bf FITSDataSwapper$<$T$>$} modifies (Dec 2005)
686\item[\rond] Prise en charge de types TSTRING et TCOMPLEX et TDBLCOMPLEX
687lors de lecture/ecriture de colonnes FITS.
688\item[\rond] Prise en charge de l'ensemble des types de colonnes pour le handler de Fits
689de DataTable
690\item[\rond] Classe {\bf FitsInOutFile } comme wrapper des fonctions de la librairie cfitsio +
691classe d'exception spŽcifique {\bf FitsIOException} , et la classe des types FITS {\bf FitsTypes}.
692\item[\rond] Classe template {\bf FitsBlockRW$<$T$>$} pour lecture/Žcriture (tableaux de donnŽes)
693sur IMGHDU et Tables.
694\item[\rond] Classes gestionnaires I/O Fits pour les objets {\bf FitsHandler$<$T$>$} et {\bf FitsManager}
695\item[\rond] Classes gestionnaire pour les tableaux : {\bf FitsArrayHandler$<$T$>$}
696\item[\rond] Classes gestionnaire pour les DataTable {\bf FitsHandler$<$BaseDataTable$>$}
697\item[\rond] Mai 2005 : Classe {\bf FITSDataSwapper$<$T$>$} pour la gestion des
698SwSegDataBlock sur fichiers FITS
699\end{itemize}
700
701\section{LinAlg}
702Extension des fonctionalitŽs de la classe {\tt LapackServer<T>} :
703(Juillet 2004 / cmv , FŽvrier 2005 / Reza)
704\begin{itemize}
705\item[\rond] Ajout lancement d'exception sur renvoi de code d'erreur par lapack
706(desactivable par flag au niveau du constructeur de la classe serveur)
707\item[\rond] Introduction de l'interface Lapack d'inversion des matrices symetriques (21/7/2004)
708\item[\rond] Introduction de l'interface Lapack de recherche de valeurs et vecteurs propres
709 (cas general, symetrique et hermitique) (21/7/2004)
710\item[\rond] Introduction d'un fonction d'interface pour le calculateur de workspace
711 (ilaenv\_) (21/7/2004)
712\item[\rond] Ajout prog test Tests/tsttminv.cc + Commentaires sur les diverses methodes et sur les matrices FORTRAN (21/7/2004)
713\item[\rond] Ajout SVD decomp by Divide and Conquer SVD\_DC (23/7/2004)
714\item[\rond] Ajout Least Square with SVD DC
715\item[\rond] Ajout methode calcul de la matrice inverse par Lapack en utilisant la
716resolution de systemes (07/02/2005)
717\end{itemize}
718
719\section{IFFTW}
720Nov 2005 : Correction du bug dans le cas de FFT-1D Backward(complex -> reel)
721in(1).imag() pouvait etre ecrase.
722
723\section{PI,PIext,piapp}
724\subsection{PI: Classes modifiees - ameliorees}
725\begin{itemize}
726\item[\rond] {\bf PIImageNavigator } \\
727Ajout de la classe {\tt PIImageNavigator } permettant de visualiser une image
728avec ses propres widget zoom / global view et colormap. (Fevrier 2005) \\
729Commande {\tt imagnav} ajoute ds piapp/baseexcute.cc . \\
730\item[\rond] Avril 2005 - Amelioration de la classe {\bf PIConsole} \\
7311/Envoi Message PIMSG\_Cancel lors de {\tt <Cntl C>} \\
732 2/ Correction positionnement curseur lors de rappel de commande,
733 Si possible en fin de commande - mais toujours avec le
734 debut de commande visible. \\
7353/ Correction (probable) du petit bug sur les derniers caracteres lors de copier/coller
736 ds PIConsole
737\item[\rond] Codage Options graphiques en text (string) pour PIGraphicAtt (Nov-Dec 2005)
738\item[\rond] Corrections diverses trace d'axes etc ... (Dec 2005)
739
740\end{itemize}
741%
742%
743\subsection{ Codage texte des options graphiques (11 Mars 2004)}
744\begin{verbatim}
745// Methode retournant un vecteur de string a partir des options
746virtual int PIDrawer::OptionToString(vector<string> & opt) const
747qui vient completer les deux methodes
748virtual int PIDrawer:: DecodeOptionString(vector<string> & opt, bool ...) et
749virtual void PIDrawer:: GetOptionsHelpInfo(string& info);
750Ces methodes s'occupent de decoder les options graphiques (et l'aide
751associe). La methode ajoutee permet de faire l'operation inverse, fabriquer
752une serie de chaine de caracteres a partir des options graphiques.
753Il y a aussi la methode
754virtual int PIWdgGen::OptionToString(vector<string> & opt) const
755que j'ai ajoute (rien a faire pour le moment) - ainsi que
756int PIGraphicAtt::AttToStrings(vector<string> & att) const.
757
758Peux-tu remplir la methode PIGraphicAtt::AttToStrings(vector<string> & att) const.
759L'implementation par defaut de PIDrawer::OptionToString(vector<string> & opt) const
760appelle PIGraphicAtt::AttToStrings() - a laisser donc tel quel.
761
762par contre, pour les autres drawer (PIYfXDrawer, PIFuncDrawer, PIElDrawer,
763PISurfaceDrawer, PIHisto, PIHisto2D, PINTuple ...) - lorsque
764DecodeOptionString(vector<string> & opt, bool ...) est modifie,
765rajouter la methode OptionToString(vector<string> & opt) et verifier le help.
766Attention, il ne faut pas mettre l'argument opt a zero, mais ajouter des chaines
767derriere (push_back()) afin de pouvoir cumuler les options de base + options
768specifiques.
769
770Comment tester ?
771Pour tester, tu peux utiliser la fenetre des options texte ou j'ai ajoute le bouton
772[GetOption] . Tu peux acceder a cette fenetre a partir de la fenetre des options
773graphiques <Alt>O , ou directement sur un objet de gestionnaire 2D - par
774<Alt>T - <Shift>Button-1 permet de selectionner le drawer actif
775\end{verbatim}
776
777\subsection{ Trace des axes (11 Mars 2004)}
778 Ajouter la possibilite de specifier l'origine (le point de croisement des axes)
779lorsque les axes ne sont pas de type 'box' - classes PIAxes et PIElDrawer. FAIT
780
781\subsection{ Selection graphique (souris) du drawer actif (11 Mars 2004)}
782\begin{verbatim}
783J'ai ajoute la methode PIDrawer::GetDistanceToPoint(double x, double y)
784// Renvoie une distance au point x,y
785// 0: au(x) point(s) le(s) plus proche(s) ... 1 au bord xmin/xmax , ymin/ymax
786// La methode par defaut calcule la distance normalisee au point ((xmin+xmax)/2,
787(ymin+ymax)/2)
788 virtual double PIDrawer::GetDistanceToPoint(double x, double y);
789
790ainsi que ce qu'il faut ds PIBaseWdgGen et ds PIDrawer pour exploiter cette
791methode + code permettant le test ds PIScDrawWdg.
792(virtual void PIDrawer::WdgCoord2DrwCoord(int x, int y, double& xu ...
793 virtual int PIBaseWdgGen:;FindNearestDrawerId(int x, int y) ...)
794Tu as a t'aoccuper de la methode PIDrawer::GetDistanceToPoint(double x, double y)
795qui doit etre redefinie si possible pour chaque drawer, afin de fournir une
796distance raisonnable au point (x,y) en argument.
797J'ai juste mis une implementation par defaut (ds PIDrawer) et une implementation
798partielle pour PIElDrawer (qui trace les axes en particulier) - qu'il faut
799completer.
800
801Comment tester ?
802J'ai mis ce qu'il faut ds le gestionnaire 2D (PIScDrawWdg) -
803<Shift>Button-1 choisit le drawer le plus proche (base sur la
804valeur de retour de PIDrawer::GetDistanceToPoint(double x, double y)
805comme drawer actif. Ce drawer est passe en 'highlight' pendant que
806le bouton est appuye.
807\end{verbatim}
808
809\subsection{ Manipulation interactive des drawers (3 Juin 2004) }
810La manipulation interactive des drawers (ˆ l'aide d'un menu) a
811ŽtŽ finalisŽe pour les PIImage PIScDrawWdg PI3DWdg .
812
813\begin{verbatim}
814 o <Alt>D affiche le menu avec les differentes option
815 o Move/Resize: Affichage du rectangle + rectangle milieu
816 (deplacement) + coin bas-droite (deplacement) -
817 clicker ailleurs pour finir
818 o Mouse Select : Le mouse select des drawers est gere
819 maintenant par un PIEventHandler (comme pour Move/ReSize)
820 Drawer actif affiche par le rectangle muni d'un petit coin
821 (petit carre + rond dedans, en bas a droite).
822 Click souris change eventuellement le drawer actif.
823 On termine en clickant ds le petit [carre+rond]
824\end{verbatim}
825
826\subsection{ Traceur de bar-graph (classe PIBarGraph) (3 Juin 2004) }
827Ajout du traceur de bar-graph (classe {\bf PIBarGraph}) ds module PI/
828et commande {\tt bargraph} ds PIext/basexecut.cc .
829La commande bargraph ne gere pas encore toutes les possibilites
830de la classe PIBarGraph. \\
831Exemple d'utilisation:
832\begin{verbatim}
833Cmd> bargraph ' ' -10. 15. 22. 8. 33. 7 -4.
834Cmd> bargraph 'blue ' -10. 15. 22. 8. 33. 7 -4.
835Cmd> bargraph 'blue horizontalbars' -10. 15. 22. 8. 33. 7 -4.
836Cmd> bargraph 'blue horizontalbars barvaluelabel ' -10. 15. 22. 8. 33. 7 -4.
837Cmd> bargraph 'blue verticalbars nofill barvaluelabel ' -10. 15. 22. 8. 33. 7 -4.
838Cmd> bargraph 'font=times,bold,16 blue verticalbars nofill barvaluelabel ' \
839 -10. 15. 2 2. 8. 33. 7 -4.
840Cmd> bargraph 'font=times,bold,16 blue verticalbars fill barvaluelabel packfrac=0.8' \
841 -10. 15. 22. 8. 33. 7 -4.
842\end{verbatim}
843
844\subsection{ Traceur de lignes de texte (classe PITextDrawer) (3 Juin 2004) }
845
846Ajout d'une classe de traceur de lignes de texte (classe {\bf PITextDrawer}) et commande
847{\tt textdrawe}r ds PIext/basexecut.cc . Mais le traceur (et sa commande)
848doivent etre completes. \\
849Exemple d'utilisation:
850\begin{verbatim}
851# On affiche qque chose
852Cmd> openppf demo.ppf
853Cmd> disp h1d
854Cmd> textdrawer 'frame line=solid,2 font=times,bold,16 red inset' \
855 ' Christophe ' ' Reza Ansari' ' SOPHYA '
856\end{verbatim}
857
858\subsection{ Gestion de re-scale-ing des axes en 3D (3 Juin 2004) }
859
860Mise en place complete (?) de la gestion de re-scale-ing des axes en 3D
861avec gestion des options graphiques (texte) - Il est possible en particulier d'imposer
862les limites de la boites 3D.
863cela a ete une grosse prise de tete de tout un apres-midi.
864J'ai eu ensuite mal a la tete une partie de la soiree ! \\
865Exemple d'utilisation:
866
867\begin{verbatim}
868
869# On ouvre le fichier demo.ppf
870Cmd> openppf demo.ppf
871Cmd> surf mtx1 'colbr32'
872Cmd> surf mtx1 'colbr32 noautoscale'
873Cmd> surf mtx1 'colbr32 lim3dbox=-10,60,-10,60,-3,15 autoscale3dbox'
874# Affichage avec superposition
875Cmd> nt3d nt32 x y z - - - - - 'marker=circle,7 red'
876Cmd> nt3d nt32 x y z - - - - - 'same marker=cross,5 blue '
877# Ou bien :
878Cmd> nt3d nt32 x y z - - - - - 'marker=circle,7 red noautoscale'
879Cmd> nt3d nt32 x y z - - - - - 'same marker=cross,5 blue '
880
881\end{verbatim}
882\subsection{piapp}
883\begin{itemize}
884\item[\rond] Jan 2006 : commandes readfits writefits scanfits ont ete ajoutees
885dans ProgPI/fitsbtadapter.cc en utilisant le nouveau FITS -
886Le menu OpenFits de PIStdImgApp utilise desormais ces commandes
887\item[\rond] Jan 2006 - IMPORTANT - Tester et supprimer alors toute reference a FITS dans
888PIext/ : nobjmgr.cc .h et les objadapter.
889\item[\rond] PossibilitŽ d'execution de commandes en multithread (Avril 2005)
890\item[\rond] Le multithreading a ŽtŽ mis en oeuvre dans piapp (janvier 2004).
891\item {\bf BUG } a corriger pour {\tt imagvav}:
892La destruction de l'objet et/ou widget pascorrectement geres -
893provoque des plantages lors de la sortie de l'application.
894
895\item[\rond] Extrait de {\tt cvs log pistdimgapp.cc } :
896\begin{verbatim}
897revision 1.77
898date: 2005/04/27 11:55:00; author: ansari; state: Exp; lines: +26 -10
8991/ Prise en charge de DataTable et SwPPFDataTable pour piapp (NObjMgrAdapter) :
900nomhistadapter.cc et piiinit.cc
9012/ Lecture de tous les objets ds un fichier PPF par NamedObjMgr::ReadAll() pour
902fichier PPF sans nametag.
9033/ Ajout bloc try/catch ds PIStdImgApp::Run() (boucle d'evenements)
904 Reza , 27 Avril 2005
905----------------------------
906revision 1.76
907date: 2005/04/19 09:13:49; author: ansari; state: Exp; lines: +3 -1
908Ajout de l option nodisp ds les affichages des NamedObjMgr, prise en compte de
909<Cntrl C> (Msg_Cancel) pour arreter l'execution de l'interpreteur ds PIStdImgApp
910et remplacement commande breakexe par stop ds PIACmd - Reza 19/4/2005
911----------------------------
912revision 1.75
913date: 2005/04/19 06:56:52; author: ansari; state: Exp; lines: +5 -4
914Remis en marche la possibilite d'execution d'un .pic au lancement de piapp -
915Reza 19/4/2005
916----------------------------
917revision 1.74
918date: 2005/02/18 14:09:47; author: ansari; state: Exp; lines: +62 -37
919Modifications pour l'utilisation viewer PIImageNavigator (ajout commande imagnav
920) - Reza 18 Fev 2005
921----------------------------
922revision 1.73
923date: 2004/11/19 17:41:07; author: ansari; state: Exp; lines: +26 -0
924Ajout commandes addoval addfoval pour trace d'ellipse - Reza 19/11/2004
925----------------------------
926revision 1.71
927date: 2004/09/07 07:10:18; author: ansari; state: Exp; lines: +35 -0
928Ajout bloc try/catch ds piacmd.cc (thread execution commandes) et ds pistdimgapp.cc (
929methode process, thread boucle d'evts) - Reza 07/09/2004
930----------------------------
931revision 1.70
932date: 2004/01/06 18:44:56; author: ansari; state: Exp; lines: +11 -1
933 Suite debugging gestion lock entre threads ds piapp - A l'air de
934marcher sur OSF1 et Linux ... Reza 06/01/2004
935----------------------------
936revision 1.69
937date: 2004/01/06 17:05:25; author: ansari; state: Exp; lines: +33 -7
938Suite debug piapp multithread : on ne peut pas utiliser ZSync() ds un if (destructeur
939 appele de suite) - Reza 06/01/2004
940----------------------------
941revision 1.68
942date: 2004/01/04 19:02:43; author: ansari; state: Exp; lines: +43 -13
943Suite des modifs pour piapp multi-threads
9441) Ajout Mutex de synchronisation ds ls classe NamedObjMgr
9452) Suite controle de gestion d'appel aux methodes de PIStdImgApp depuis
946la classe elle-meme, a travers le NamedObjMgr
9473) Modification de la boucle d'evenements, avec un thread de reveil
948periodique
949 Reza, 4 Janvier 2004
950\end{verbatim}
951\item[\rond] Extrait de {\tt cvs log pistdimgapp.cc } :
952\begin{verbatim}
953----------------------------
954revision 1.62
955date: 2003/11/27 10:51:58; author: ansari; state: Exp; lines: +45 -20
956Suite modification/adaptations a la classe PIACmd qui herite maintenent de SOPHYA::Co
957mmander - Reza 27/11/2003
958----------------------------
959revision 1.61
960date: 2003/11/26 23:01:55; author: ansari; state: Exp; lines: +20 -1755
961Modification du code de PIACmd : La classe PIACmd herite maintenant de la classe Comm
962ander (de SysTools) - Reza 26/11/2003
963----------------------------
964revision 1.60
965date: 2003/07/21 21:13:10; author: cmv; state: Exp; lines: +3 -3
966- introduction notion de numero de ligne dans expression ntuple
967 modif prototype PlotExprFunc NTLoopExprFunc (add _nl _nstart _nend)
968 modif int_4 -> int_8_exprf (long long) pour _nl (DecodeLoopParameters,
969 PrepareNTExpressionCFile, LinkExprFunc,...)
970- doc pour _nl _nstart _nend et arragement repartition RegisterHelp/RegisterCommand
971 (rz + cmv 21/7/2003)
972----------------------------
973\end{verbatim}
974\end{itemize}
975
976\section{Documentation (Manual/) }
977Documentation des classes de SysTools. \\
978Extrait message du 12 Aout 2004 : \\
979\begin{verbatim}
980---> Au sujet de la doc (Manual/)
981 J'ai installe doxygen sur le Mac, version 1.3.8 -
982 Il faut updater le fichier de config de depart (dox_sophya.conf)
983 Pour ma part, j'ai du modifier mkmf (en version privee) -
984 En effet, il n'y avait pas le program doxysearch - Je ne sais pas si c'est general
985 ou specifique Mac.
986
987 J'ai aussi modifie certaines options de doxygen (en version privee)
988 EXTRACT_LOCAL_CLASSES --> NO (au lieu de YES)
989 DETAILS_AT_TOP ---> YES (au lieu de No)
990 SORT_MEMBER_DOCS ---> NO (au lieu de YES)
991
992 Si on est d'accord, on peut modifier ces options ds le fichier dox_sophya.conf et
993 utiliser la fonction update de doxygen (doxygen -u)
994\end{verbatim}
995
996\section{Mgr}
997{\Large Avril-Mai 2005 : Basculement vers la nouvelle version de scripts
998de gestion du code (module {\bf BuildMgr/ } )
999On n'a plus a se preoccuper des indications de cette section
1000}
1001
1002\subsection{Variables d'environnement SOPHYAxxx (17/9/2003) }
1003Septembre 2003 (17/9/2003) : Changement DPCDEVREP, DPCBASEREP
1004en SOPHYADEVREP , SOPHYABASEREP , EROSCXX en SOPHYACXX
1005
1006\subsection{Modifs Makefile - Message du 3 Mars 2004 }
1007Modifs effectuees - m nouveau module BuildMgr
1008
1009\subsection{ Modifs Makefile - Message du 8 Juillet 2004 }
1010\begin{verbatim}
1011A/ Makefile(s) (voir aussi mon message du 3 mars 2004)
1012A-1/ Structures des repertoires
1013>> On garde la structuration avec
1014+ un Makefile par module 'librairie'
1015+ un ensemble de modules librairies sans lib externe -> libsophya.slb
1016+ un ensemble de modules librairies avec lib externe -> libextsophya.slb
1017+ Des modules programmes (PrgUtil/ PrgMap/ ) avec un makefile par module programme
1018+ un Makefile de haut niveau (actuellement ds Mgr/Makefile
1019 Ce Makefile de haut niveau sera aussi simplifiŽ - en particulier la partie
1020concernant la fabrication des shared-libs (.slb) et Makefile.slb
1021+ On garde aussi la convention de generation automatique des GNUmakefile, qui sont
1022ensuite renommes eventuellement en Makefile, conserves ds la base
1023- Plus d'inclusion automatique du nom du system-compilo (Linux-g++ OSF1-cxx ...)
1024dans les noms de repertoires
1025- Plus de structure ExtLibDir obligatoire (remplace par des -Ipath -Lpath pour les
1026compils/links
1027- Si besoin, on fait subir le meme sort que Makefile.h a Makefile.slb
1028
1029 On aura donc : (message du 3 mars 2004)
1030il y aura qu'une seule variable d'environnement : (SOPHYAROOT ou
1031SOPHYARACINE) par exemple
1032$SOPHYAROOT/Include
1033Attention le repertoire Include/ NE sera donc PLUS commun pour plusieurs
1034systemes-compilo.
1035 /Libs
1036 /ShLibs
1037 /Exec
1038 /Objs
1039Un fichier Makefile.h ds $SOPHYAROOT/Include
1040contiendra les flags de compilation dŽfinis pour un systme/compilo.
1041A la base, on aura ds Mgr/ un fichier Makefile.h pour chaque combinaison
1042compilo-compilo;
1043Mgr/makef_osf1_cxx.h
1044Mgr/makef_linux_g++.h
1045Mgr/makef_linux_KCC.h
1046Mgr/makef_darwin_g++.h (Mac)
1047Mgr/makef_sgi_CC.h
1048 etc ...
1049C'est ce fichier qui est copiŽ en Include/Makefile.h, Žventuellement
1050complete/modifie
1051
1052----- Fichier Makefile.h
1053# Section generale
1054SOPHYAROOT =
1055SOPHYACXX=
1056...
1057# Section compilation
1058CC_COMPILER (nom du compilo cc)
1059CXX_COMPILER ( c++)
1060CPPFLAGS , (flag du preprocesseur), en particulier
1061les -Iincludepath (chemin pour les includes SOPHYA
1062CFLAGS flag de compilation c
1063CXXFLAGS flags de compilation c++
1064# Section Link
1065LIBPATH -L... -L... (chemin pour les librairies et les lib externes (cfitsio, ...)
1066LIBLIST -lm -lcfitsio ... (les librairies)
1067
1068Ces variables doivent pouvoir etre utilise par la classe CxxCompilerLinker.
1069Il faut donc prevoir peut-etre un autre fichier cccpp_flags.h (ou qque chose
1070du meme genre) avec la syntaxe C/C++ de chaines de caracteres
1071pouvant etre include (par #include) ds cxxcmplnk.cc
1072
1073le fichier machdefs.h ds $SOPHYAROOT/Include est genere a partir du fichier
1074machdefs_mkmf.h actuel (on pourra songer ulterieurement a le casser en
1075plusieurs morceaux si necessaire) et contiendra en entete les flags
1076qui modifie la generation du code
1077
1078exemple
1079#define Linux
1080#define SOPHYA_DEBUG
1081....
1082
1083Dans les fichier Makefile pour chaque module, on abandonnera
1084les regles (et repertoire) de compilation par defaut et on aura
1085donc:
1086INC= $SOPHYAROOT/Include
1087OBJ = $SOPHYAROOT/Objs
1088LIB=...
1089$(OBJ)toto.o : toto.cc $(INC)toto.h $(INC)titi.h ...
1090 $CXX $CXXFLAGS -c -o $(OBJ)toto.o toto.cc
1091....
1092
1093\end{verbatim}
1094
1095
1096\section{Plan de modifs pour SOPHYA V 2.0 PI/piapp V 4.0 }
1097
1098{\Large {\bf Dec 2005} : La majorite des modifs ont ete mise en oeuvre -
1099Il faut nettoyer la liste et la transformer en liste pour la version 2.2 ou 2.4 ...} \\
1100
1101{\bf Plan Žtabli en septembre 2003 : }
1102
1103\subsection{Gestion du code (Mgr/ ) }
1104\begin{verbatim}
1105
1106 o Chemins/variables d'environnement
1107 - Remplacer DPCDEVREP DPCBASEREP par SOPHYADEVREP et SOPHYABASEREP
1108 - Remplacer EROSCXX par SOPHYACXX (?)
1109 o Simplifier/rationaliser les makefiles
1110 - Mettre les flags de compils pour chaque compilo-systeme dans un fichier au lieu
1111 d'avoir tout Makefile.h
1112 Exemple fichier Mgr/linux_g++.flags
1113 CPPFLAGS = ...
1114 CXXFLAGS = ...
1115 LIBS = ...
1116
1117o Mettre un script pour chercher les lib externes (c-fitsio, FFTW, ...) et creer
1118 eventuellement l'arborescence ExtLibs
1119
1120o Inclure la definition des flags influant sur le code (comme
1121 -DOSF1/Linux/Darwin/IRIX64
1122 SO_BOUNDCHECKING a la fin du fichier machdefs.h que l'on fabriquera a
1123 partir de du machdef_mkmf.h )
1124 PB-> ce fichier deviendra alors dependant du systeme et de l'installation !
1125 Faut-il deplacer alors Include/ sous uname-$EROSCXX (Linux-g++)
1126 ou carrement considerer que la separation pour differents systemes doit se faire au
1127 niveau de SOPHYADEV/BASE/REP ?
1128
1129o Abandonner (?) les regles de compilation par defaut
1130 Inclure dans les Makefile la ligne de commande :
1131 $(OBJ)toto.o : toto.cc toto.h titi.h ...
1132 $(COMPILECXX) -$(CPPFLAGS) $(CXXFLAGS) -c -o $(OBJ)toto.o toto.cc
1133
1134o Garder les Makefile simple (eviter trop de tests et syntaxe complique)
1135
1136\end{verbatim}
1137
1138\subsection{Code/Librairie SOPHYA $\rightarrow$ V 2.0)}
1139\begin{verbatim}
1140
1141o Fichiers PPersist (BaseTools) :
1142 - Ajouter la possibilite d'ecrire des complex(r_4> complex<r_8>
1143 (actuellement c'est ecrit sous forme de 2*r_4 ou 2*r_8)
1144 - Ajouter des tag de positionnement qui pourrait servir au cas
1145 ou on utiliserait le fichier PPF comme fichier de swap
1146 Ces tags ne peuvent pas etre les memes que les name-tag
1147 existant actuellement.
1148 Une utilisation annexe de ces tags peut etre alors un moyen
1149 de verifier que le fichier n'est pas corrompu
1150 Ce tag se presente alors sous forme de
1151 <tag (1 byte)><FilePosition (8 byte, long int)>
1152 On peut alors parcourir le fichier et verifier la coherence de
1153 ces tags.
1154 - Il faut aussi ajouter au niveau de POutPersist et PInPersist
1155 les services pour ecrire et lire une collection de tag de
1156 positionnement, afin qu'un objet puisse utiliser une liste de
1157 tag pour se positionner
1158
1159o BaseTools/ Voir autres remarques ds fichier Manual/sophya_afaire.txt
1160 concernant en particulier les NDataBlock<T> DataBlock<T> ...
1161
1162o Les tableaux : TArray/
1163 - Ajouter une classe de base abstraite GenericMatrix<T>
1164 avec methode d'acces aux elements, nb de lignes, nb de colonnes,
1165 ...
1166 - Introduire les TinyMatrix (TinyMatrix<T, int L, int C>)
1167 avec passage de/vers TMatrix<T> (et TinyVector<T, int N>) ?
1168
1169 - Introduire des matrices creuses simples SpareMatrix<T>
1170
1171 - Introduire les DiagonalMatrix<T>
1172
1173 Remarque: Les TMatrix TinyMatrix et SparseMatrix heritent de GenericMatrix
1174
1175o HiStats
1176 - Faire une classe SuperNTuple (!), facile a utiliser, sachant swaper sur les
1177 PPF, avec des champs de differents type
1178
1179o IFFTW/
1180 - Passage a FFTW 3.x ?
1181
1182o Voir autres remarques pour l'ensemble des modules ds Manual/sophya_afaire.txt
1183\end{verbatim}
1184
1185\subsection{Code/Librairie PI ($\rightarrow$ V 4.0)}
1186\begin{verbatim}
1187
1188o Menu contextuel pour les Drawers
1189 - Ajouter a PIImage, PIScrDrawWdg(2D), PIDraw3DWdg(3D) un menu obtenu
1190 sur <Shift><Bouton-1> par exemple, avec la liste de tous les Drawers
1191 permettant d'afficher la fenetre des options graphiques, ou le fenetre
1192 des options ou la fenetre des options texte, activer deplacement/resize
1193 des drawers, suppression (delete) ou detach des drawers, et en fonction
1194 du widgets, la fenetre des axes ou de controle d'image
1195
1196o Mettre l'option auto-scale (rapport entre axes X,Y,Z) pour les Drawers3D
1197 verifer/debugger la definition de la boite 3D au niveau des Drawers3D
1198
1199o Traceur d'histos, NTuples, ...
1200 Remplacer le trace des lignes par morceau fait par appel multiples
1201 a DrawLine a un seul appel a DrawPolygon (si les lignes sont connectes
1202 bien sur) --> Ca ameliore sensiblement l'aspect pour le trace en pointille
1203
1204o Ajouter un traceur de Bar-chart 2D OU ApplePie (facile !)
1205 On donne une serie de nombres, serie de couleur, + serie de strings
1206 et on trace alors une sorte d'histo, avec des barres (rectangles) espaces
1207 Ou bien on trace un cercle divise en zones
1208
1209o Ajouter un traceur de Lego-Plot
1210
1211o PIImageWindow (Une fenetre avec une PIImage, un Zoom et une vue globale)
1212 Assemblage
1213
1214o (?) Une fonction pour faire facilement une fenetre d'alerte ou d'info (?)
1215
1216\end{verbatim}
1217
1218\subsection{(s)piapp ($\rightarrow$ V 4.0)}
1219\begin{verbatim}
1220
1221o Verifier l'interpreteur et introduire le type de variable vecteur
1222 qui peut etre detecte par exemple lors de l'initialisation par set
1223 set a 'Bonjour CMV' # -> variable scalaire
1224 set va [ 12 14 hello ... ] # variable de type vecteur $va[]
1225
1226o Voir comment on pourrait "joindre" deux objets ayant l'interface NTupleInterface
1227 pour pouvoir plotter des objets, l'un vs l'autre
1228
1229o Separer la classe PIACmd en une classe de base (CShellLikeInterpreter)
1230 (a mettre ds SysTools) et la classe PIACmd a laisser ds PIext
1231
1232o (???) Introduire quelque chose du style
1233 AddDialogue("Cmd", "dialogue-description)
1234 qui pourrait fabriquer automatiquement une fenetre avec des champs a remplir
1235 pour les commandes usuelles (???)
1236
1237o Voir les autres commentaires ds Manual/spiapp_afaire.txt
1238
1239\end{verbatim}
1240
1241
1242\end{document}
Note: See TracBrowser for help on using the repository browser.