1 | #include "sopnamsp.h"
|
---|
2 | #include "machdefs.h"
|
---|
3 | #include <stdio.h>
|
---|
4 | #include <stdlib.h>
|
---|
5 | #include "math.h"
|
---|
6 | #include <iostream>
|
---|
7 | #include <string>
|
---|
8 |
|
---|
9 | #include <typeinfo>
|
---|
10 | #include "timing.h"
|
---|
11 | #include "histinit.h"
|
---|
12 | #include "pexceptions.h"
|
---|
13 | #include "segdatablock.h"
|
---|
14 | #include "fiosegdb.h"
|
---|
15 | #include "swsegdb.h"
|
---|
16 | #include "ppfswapper.h"
|
---|
17 | #include "ppfwrapstlv.h"
|
---|
18 |
|
---|
19 | /* Programme test des classes SegDataBlock<T> et son PPF writer */
|
---|
20 | /* SwSegDataBlock<T> avec le swapper PPF */
|
---|
21 | /* SOPHYA - R. Ansari (LAL) - Avril 2005 */
|
---|
22 |
|
---|
23 | int main(int narg, char* arg[])
|
---|
24 | {
|
---|
25 | cout << " ---- Programme tstsegdb.cc ----- \n"
|
---|
26 | << " Test classe SegDataBlock<T> et SwSegDataBlock<T> " << endl;
|
---|
27 | int rc = 0;
|
---|
28 | try {
|
---|
29 | SophyaInit();
|
---|
30 |
|
---|
31 | InitTim();
|
---|
32 | cout << "1/ Test SegDataBlock Creation,remplissage, impression (segi, ssegi, sgds" << endl;
|
---|
33 | SegDataBlock<int> segi;
|
---|
34 | segi.Extend();
|
---|
35 | cout << segi;
|
---|
36 |
|
---|
37 | SegDataBlock<int> ssegi(segi);
|
---|
38 | segi = 432;
|
---|
39 | ssegi.Extend();
|
---|
40 | ssegi.Print(cout, 4, " , ");
|
---|
41 | SegDataBlock<string> sgds(5,3);
|
---|
42 | cout << sgds;
|
---|
43 | sgds[2] = "bonjour"; sgds[5] = "AAAA";
|
---|
44 | sgds[8] = "BbbBBbb";
|
---|
45 | sgds.Print(cout, 4, " ; ");
|
---|
46 |
|
---|
47 | cout << "1.b/ Testing SegDataBlock<string> srsdb.Share(sgds)" << endl;
|
---|
48 | SegDataBlock<string> srsdb;
|
---|
49 | srsdb.Share(sgds);
|
---|
50 | srsdb.Print(cout, 4, " ; ");
|
---|
51 | srsdb[6] = "HelloBug";
|
---|
52 | sgds.Print(cout, 4, " ; ");
|
---|
53 |
|
---|
54 | cout << "1.c/ Appel operateur copie : sgsdscp = sgds " << endl;
|
---|
55 | SegDataBlock<string> sgdscp;
|
---|
56 | sgdscp = sgds;
|
---|
57 | {
|
---|
58 | cout << "2/ Ecriture segi sgds et ssegi dans segdb.ppf " << endl;
|
---|
59 | POutPersist so("segdb.ppf");
|
---|
60 | so << segi << sgds << ssegi;
|
---|
61 | }
|
---|
62 | {
|
---|
63 | cout << "3/ Lecture depuis segdb.ppf et print " << endl;
|
---|
64 | SegDataBlock<int> rsd1, rsd2;
|
---|
65 | SegDataBlock<string> rsds;
|
---|
66 | PInPersist si("segdb.ppf");
|
---|
67 | si >> rsd1 >> rsds >> rsd2;
|
---|
68 | rsds.Print(cout, 4, " ; ");
|
---|
69 | cout << "4/ On modifie certains elements de rsd1 et on verifie le partage de reference en lecture" << endl;
|
---|
70 | for(int jj=0; jj<rsd1.Size(); jj += 9)
|
---|
71 | rsd1[jj] = 999;
|
---|
72 | rsd1.Print(cout, 4, " , ");
|
---|
73 | rsd2.Print(cout, 4, " , ");
|
---|
74 | }
|
---|
75 | cout << "5/ Test SwSegDataBlock<T> creation/remplissage " << endl;
|
---|
76 | int SWSEGSZ = 4;
|
---|
77 | {
|
---|
78 | cout << " Creation PPFDataSwapper<float> swout(so) avec swseg.ppf " << endl;
|
---|
79 | POutPersist so("swseg.ppf");
|
---|
80 | PPFDataSwapper<float> swout(so);
|
---|
81 | SwSegDataBlock<float> swsd(swout, SWSEGSZ, 3);
|
---|
82 | float * fp = swsd.GetSegment(0);
|
---|
83 | fp[0] = 6.54321; fp[1] = 65.4321; fp[2] = 654.321; fp[3] = 6543.21;
|
---|
84 | fp = swsd.GetSegment(1);
|
---|
85 | fp[0] = 2.56789; fp[1] = 25.6789; fp[2] = 256.789; fp[3] = 2567.89;
|
---|
86 | fp = swsd.GetSegment(2);
|
---|
87 | fp[0] = 12.567; fp[1] = 225.67; fp[2] = 3256.7; fp[3] = 42567.;
|
---|
88 | vector<int_8> tags = swsd.GetSwapPosTagTable();
|
---|
89 | so << tags;
|
---|
90 | }
|
---|
91 | {
|
---|
92 | cout << "6/ Creation PPFDataSwapper<float> avec lecture depuis swseg.ppf " << endl;
|
---|
93 | PInPersist si("swseg.ppf");
|
---|
94 | PPFDataSwapper<float> swin(si);
|
---|
95 | vector<int_8> tags;
|
---|
96 | si >> tags;
|
---|
97 | SwSegDataBlock<float> swsd(swin, tags, SWSEGSZ);
|
---|
98 | cout <<"7/ Recopie ds SegDataBlock<float> depuis SwSegDataBlock<float> et print" << endl;
|
---|
99 | SegDataBlock<float> segf,segf2;
|
---|
100 | segf = swsd;
|
---|
101 | segf.Print(cout, 4, " ");
|
---|
102 | segf2 = swsd;
|
---|
103 | segf2.Print(cout, 4, " ");
|
---|
104 | }
|
---|
105 |
|
---|
106 | }
|
---|
107 | catch (PThrowable & exc) {
|
---|
108 | cerr << " tstsegdb.cc: Catched Exception (PThrowable)" << (string)typeid(exc).name()
|
---|
109 | << " - Msg= " << exc.Msg() << endl;
|
---|
110 | rc = 99;
|
---|
111 | }
|
---|
112 | catch (std::exception & e) {
|
---|
113 | cerr << " tstsegdb.cc: Catched std::xception "
|
---|
114 | << " - what()= " << e.what() << endl;
|
---|
115 | rc = 98;
|
---|
116 | }
|
---|
117 | catch (...) {
|
---|
118 | cerr << " tstsegdb.cc: some other exception (...) was caught ! " << endl;
|
---|
119 | rc = 97;
|
---|
120 | }
|
---|
121 | PrtTim("End tstsegdb " );
|
---|
122 | cout << " ---- Programme tstsegdb.cc - FIN (Rc=" << rc << ") --- " << endl;
|
---|
123 | return rc;
|
---|
124 | }
|
---|