source: Sophya/trunk/SophyaProg/Tests/tstndblk.cc@ 4080

Last change on this file since 4080 was 2615, checked in by cmv, 21 years ago

using namespace sophya enleve de machdefs.h, nouveau sopnamsp.h cmv 10/09/2004

File size: 6.2 KB
RevLine 
[2615]1#include "sopnamsp.h"
[491]2#include "machdefs.h"
[2322]3#include <iostream>
[491]4#include <stdlib.h>
5#include <stdio.h>
6#include <string.h>
7#include <math.h>
[945]8#include <complex>
9#include <unistd.h>
[768]10#include "ntoolsinit.h"
[491]11#include "pexceptions.h"
12#include "ndatablock.h"
13
[1348]14void Fonction(NDataBlock<r_4> Arg);
15NDataBlock<r_4> Fonction2(NDataBlock<r_4> Arg);
16
17void Fonction(NDataBlock<r_4> Arg)
18{
19cout<<"Fonction: arg.Size()="<<Arg.Size()<<" arg.Data()="<<Arg.Data()<<endl;
20}
21NDataBlock<r_4> Fonction2(NDataBlock<r_4> Arg)
22{
23cout<<"Fonction2: arg.Size()="<<Arg.Size()<<" arg.Data()="<<Arg.Data()<<endl;
24return Arg;
25}
26
[945]27//////////////////////////////////////////////////////////////////////////////
[491]28int main(int narg,char *arg[])
29{
[945]30//-- Decodage arguments
31int lp = 0;
32char c;
33while((c = getopt(narg,arg,"hd:")) != -1) {
34 switch (c) {
35 case 'd' :
36 sscanf(optarg,"%d",&lp);
37 break;
38 case 'h' :
39 cout<<"tstndblk [-h] [-d debug_level]"<<endl;
40 exit(-1);
41 }
42}
43
44//-- Initialization
[768]45SophyaInit();
[945]46const int NDim = 8;
[1348]47r_4 *x1 = new r_4[NDim];
48r_4 *x2 = new r_4[NDim];
49r_4 *x3 = new r_4[NDim];
[945]50for(int k=0;k<NDim;k++)
51 {x1[k]=k+1; x2[k]=(k+1)*10; x3[k]=(k+1)*100;}
[491]52
[945]53NDataBlock<int_4>::SetPrintDebug(lp);
54NDataBlock<r_4>::SetPrintDebug(lp);
55NDataBlock<r_8>::SetPrintDebug(lp);
56NDataBlock< complex<r_4> >::SetPrintDebug(lp);
57NDataBlock< complex<r_8> >::SetPrintDebug(lp);
58
[491]59{ // Pour voir explicitement le travail du destructeur
60
61//-----------------------------------------------------
62cout<<endl<<"Createur par defaut Va"<<endl;
63NDataBlock<int_4> V1; V1.Print(1,99);
[583]64try {
[491]65 cout<<endl<<"...Createur par copie V2e(V1)"<<endl;
66 NDataBlock<int_4> V2e(V1);
[583]67} catch(PException exc) {
68 cout<<"...Exception catched : " << exc.Msg() << endl;
69}
[491]70
71//-----------------------------------------------------
72cout<<endl<<"Createur A1(3)"<<endl;
[1348]73NDataBlock<r_4> A1(3);
[945]74cout<<endl<<"Createur B1("<<NDim<<")"<<endl;
[1348]75NDataBlock<r_4> B1(NDim);
[945]76A1.FillFrom(NDim,x1); A1.Print(0,999);
77B1.FillFrom(NDim,x1); B1.Print(0,999);
[491]78
79cout<<endl<<"Createur A2(3)"<<endl;
[1348]80NDataBlock<r_4> A2(3);
[945]81A2.FillFrom(NDim,x2); A2.Print(0,999);
82cout<<endl<<"Createur B2("<<NDim<<")"<<endl;
[1348]83NDataBlock<r_4> B2(NDim);
[945]84B2.FillFrom(NDim,x2); B2.Print(0,999);
[491]85
86cout<<endl<<"Createur A3(3)"<<endl;
[1348]87NDataBlock<r_4> A3(3);
[945]88A3.FillFrom(NDim,x3); A3.Print(0,999);
89cout<<endl<<"Createur B3("<<NDim<<")"<<endl;
[1348]90NDataBlock<r_4> B3(NDim);
[945]91B3.FillFrom(NDim,x3); B3.Print(0,999);
[491]92
93//-----------------------------------------------------
94cout<<endl<<"Createur par copie AA1(A1)"<<endl;
[1348]95NDataBlock<r_4> AA1(A1);
[491]96
97cout<<endl<<"Createur par copie BB1(B1)"<<endl;
[1348]98NDataBlock<r_4> BB1(B1);
[491]99
100{cout<<endl<<"Createur par copie {BBB1(B1)}"<<endl;
[1348]101NDataBlock<r_4> BBB1(B1);}
[491]102
[945]103{cout<<endl<<"Createur avec bridge {Abr("<<NDim<<",x3,new Bridge)}"<<endl;
[1348]104NDataBlock<r_4> Abr(NDim,x3,new Bridge);
[491]105Abr.Print(0,999);
106cout<<"x3 existe encore: "<<x3[0]<<",...,"<<x3[4]<<endl;}
107
[945]108{cout<<endl<<"Createur avec bridge {Abr("<<NDim<<",dum,NULL)}"<<endl;
[1348]109r_4 *dum = new r_4[10];
[491]110for(int i=0;i<10;i++) dum[i] = 1000.+i;
[1348]111NDataBlock<r_4> Abr(10,dum);
[491]112Abr.Print(0,999);}
113
114//-----------------------------------------------------
[1348]115cout<<endl<<"Passage par argument a une fonction"<<endl;
116NDataBlock<r_4> Arg;
117cout<<"... Argument cree par defaut"<<endl;
118Fonction(Arg);
119cout<<"... Argument normal"<<endl;
120Fonction(A1);
121
122cout<<endl<<"Passage par argument a une fonction avec retour d un NDataBlock"<<endl;
123cout<<"... Argument cree par defaut"<<endl;
124NDataBlock<r_4> fdum = Fonction2(Arg); cout<<fdum;
125NDataBlock<r_4> fdum1(Fonction2(Arg)); cout<<fdum1;
126cout<<"... Argument normal"<<endl;
127NDataBlock<r_4> fdum2 = Fonction2(A1); cout<<fdum2;
128NDataBlock<r_4> fdum3(Fonction2(A1)); cout<<fdum3;
129
130//-----------------------------------------------------
[491]131cout<<endl<<endl;
[1348]132NDataBlock<r_4> AC(3);
[491]133AC.Reset();
134cout<<endl<<"AC=2"<<endl;
135AC = 2; AC.Print(0,999);
136AC.Reset();
137cout<<endl<<"AC=A1"<<endl;
138AC = A1; AC.Print(0,999);
139
140//-----------------------------------------------------
141cout<<endl<<endl;
142AC.Reset();
143cout<<endl<<"AC+=2"<<endl;
144AC += 2; AC.Print(0,999);
145cout<<endl<<"AC+=2+3"<<endl;
146AC += 2+3; AC.Print(0,999);
147cout<<endl<<"AC+=3"<<endl;
148AC += 3; AC.Print(0,999);
149cout<<endl<<"AC-=3"<<endl;
150AC -= 3; AC.Print(0,999);
151cout<<endl<<"AC*=10"<<endl;
152AC *= 10; AC.Print(0,999);
153cout<<endl<<"AC/=10"<<endl;
154AC /= 10; AC.Print(0,999);
155
156//-----------------------------------------------------
157cout<<endl<<endl;
158AC.Reset(1000);
159cout<<endl<<"AC+=A1"<<endl;
160AC += A1; AC.Print(0,999);
161cout<<endl<<"AC-=A1"<<endl;
162AC.Reset(1000);
163AC -= A1; AC.Print(0,999);
164cout<<endl<<"AC*=A1"<<endl;
165AC.Reset(1000);
166AC *= A1; AC.Print(0,999);
167cout<<endl<<"AC/=A1"<<endl;
168AC.Reset(1000);
169AC /= A1; AC.Print(0,999);
170
171//-----------------------------------------------------
172cout<<endl<<endl;
173cout<<endl<<"AC=A1+2"<<endl;
174AC = A1+2.f; AC.Print(0,999);
175cout<<endl<<"AC=2+A1"<<endl;
176AC = 2.f+A1; AC.Print(0,999);
177cout<<endl<<"AC=A1*2"<<endl;
178AC = A1*2.f; AC.Print(0,999);
179cout<<endl<<"AC=2*A1"<<endl;
180AC = 2.f*A1; AC.Print(0,999);
181cout<<endl<<"AC=A1-2"<<endl;
182AC = A1-2.f; AC.Print(0,999);
183cout<<endl<<"AC=2-A1"<<endl;
184AC = 2.f-A1; AC.Print(0,999);
185cout<<endl<<"AC=A1/2"<<endl;
186AC = A1/2.f; AC.Print(0,999);
187cout<<endl<<"AC=2/A1"<<endl;
188AC = 2.f/A1; AC.Print(0,999);
189
190//-----------------------------------------------------
191cout<<endl<<endl;
192cout<<endl<<"AC=A1+A2"<<endl;
193AC = A1 + A2; AC.Print(0,999);
194cout<<endl<<"AC=A2-A1"<<endl;
195AC = A2 - A1; AC.Print(0,999);
196cout<<endl<<"AC=A1*A2"<<endl;
197AC = A1 * A2; AC.Print(0,999);
198cout<<endl<<"AC=A2/A1"<<endl;
199AC = A2 / A1; AC.Print(0,999);
200
201//-----------------------------------------------------
202cout<<endl<<endl;
203cout<<endl<<"AC=A1+A2+A3"<<" "<<&A1<<","<<&A2<<","<<&A3<<endl;
204AC = A1 + A2 + A3; AC.Print(0,999);
205
206
207cout<<"\n\n\n"<<endl;
208} // Pour voir explicitement le travail du destructeur
209cout<<"Fin du Job"<<endl;
[945]210cout<<"delete x1"<<endl; delete [] x1;
211cout<<"delete x2"<<endl; delete [] x2;
212cout<<"delete x3"<<endl; delete [] x3;
[491]213
[945]214//---- Final debug print
215cout<<endl<<endl<<"FINAL DEBUG SUMMARY : lp="<<lp<<endl<<endl;
216cout<<"DEBUG int_4:\n"; NDataBlock<int_4>::PrintDebug();
217cout<<"DEBUG r_4:\n"; NDataBlock<r_4>::PrintDebug();
218cout<<"DEBUG r_8:\n"; NDataBlock<r_8>::PrintDebug();
219cout<<"DEBUG complex<r_4>:\n"; NDataBlock< complex<r_4> >::PrintDebug();
220cout<<"DEBUG complex<r_8>:\n"; NDataBlock< complex<r_8> >::PrintDebug();
221
[491]222exit(0);
223}
Note: See TracBrowser for help on using the repository browser.