source: Sophya/trunk/SophyaProg/PrgUtil/scanppf.cc@ 1331

Last change on this file since 1331 was 1306, checked in by ansari, 25 years ago

Creation module PrgUtil , programmes utilitaires - Reza 8/11/2000

File size: 2.0 KB
RevLine 
[1306]1#include <stdio.h>
2#include <stdlib.h>
3#include <typeinfo>
4#include <iostream.h>
5#include <string>
6
7#include "ppersist.h"
8#include "anydataobj.h"
9#include "sambainit.h"
10
11#ifdef __MWERKS__
12#include <console.h>
13#endif
14
15int main(int narg, char* arg[])
16{
17
18#ifdef __MWERKS__
19narg = ccommand(&arg);
20#endif
21
22SambaInitiator smbinit;
23
24if ((narg < 2) || (strcmp(arg[1],"-h") == 0) ) {
25 cerr << " Usage: scanppf filename [s/n/a0/a1/a2/a3] \n"
26 << " s[=default} : Sequential reading of objects \n"
27 << " n : Object reading at NameTags \n"
28 << " a0...a3 : Tag List with PInPersist.AnalyseTags(0...3) \n" << endl;
29 exit(0);
30 }
31
32try {
33 string flnm = arg[1];
34 bool seq=true;
35 bool ana=false;
36 int analev = 0;
37 string opt = "s";
38 if (narg > 2) opt = arg[2];
39
40 if (opt == "n") seq = false;
41 else if (opt[0] == 'a') { ana = true; analev = opt[1]-'0'; }
42
43 if (ana) cout << " Analyse PInPersist( " << flnm << ") Level=" << analev << endl;
44 else {
45 if (!seq) cout << "PInPersist( " << flnm << ") Object Reading at NameTags " << endl;
46 else cout << "PInPersist( " << flnm << ") Sequential Object Reading " << endl;
47 }
48
49 PPersist* op = NULL;
50 cout << " Opening PPF file " << flnm << endl;
51 PInPersist s(flnm);
52
53 if (ana) s.AnalyseTags(analev); // Analysing all tags in file
54
55 else {
56 cout << " Version= " << s.Version() << " CreationDate= " << s.CreationDateStr() << endl;
57 int nt = s.NbTags();
58 cout << " Number of tags in file = " << nt << endl;
59 if ( seq || (nt < 1) ) {
60 while (1) {
61 op = s.ReadObject();
62 cout << " Object Type " << typeid(*op).name() << endl;
63 if (op) delete op;
64 }
65 }
66 for(int i=0; i<nt; i++) {
67 cout << ">>> TagNum= " << i << " TagName= " << s.GetTagName(i) << endl;
68 s.GotoTagNum(i);
69 op = s.ReadObject();
70 cout << " Object Type " << typeid(*op).name() << endl;
71 if (op) delete op;
72 }
73 }
74}
75catch (PThrowable pex) {
76 cerr << " scanppf/Error - Exception catched " << pex.Msg() << endl;
77}
78
79cout << " ----------- End of scanppf ------------- " << endl;
80}
Note: See TracBrowser for help on using the repository browser.