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

Last change on this file since 2971 was 2971, checked in by ansari, 19 years ago

MAJ fichiers avec les modifs d'Avril-Mai-Juin 2006, Reza, 11/06/2006

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