1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
// File: TestTopOpeTools_Trace.hxx
// Created: Mon Aug 1 12:13:25 1994
// Author: Jean Yves LEBEY
// <jyl@meteox>
#ifndef _TestTopOpeTools_Trace_HeaderFile
#define _TestTopOpeTools_Trace_HeaderFile
#include <TCollection_AsciiString.hxx>
#include <TColStd_Array1OfAsciiString.hxx>
#include <TColStd_Array1OfInteger.hxx>
#include <TColStd_Array1OfBoolean.hxx>
typedef Standard_Boolean t_value;
typedef TCollection_AsciiString t_flag;
typedef void (*tf_value)(const t_value);
typedef void (*tf_intarg)(const t_value, Standard_Integer, const char**);
typedef Standard_Integer (*tf_int_intarg)(const t_value, Standard_Integer, const char**);
typedef enum te_ftyp { te_value, te_intarg, te_int_intarg } te_ftyp;
//---------------------------------------------------------------------------
//
// Une fonction de trace FT est une fonction qui value un ensemble
// de variables de controle dont la valeur conditionne l execution
// d un ensemble d instructions.
//
// La classe TestTopOpeTools_Trace permet de coupler un nom, ou flag,
// a une fonction de trace, et de stocker une ensemble de tels couples.
// Un flag est une chaine de caracteres qui identifie la fonction.
//
// 1/ trace simple
// Une fonction de trace simple consiste a valuer une valeur booleenne.
// le type t_value est defini comme Standard_Boolean
// le type tf_value decrit une fonction de trace a un argument de type t_value.
//
// Creation de l objet de trace T :
// TestTopOpeTools_Trace T;
//
// Ajouter une fonction de trace FT1 de nom "toto" a l objet de trace T :
// Ajout de la fonction de trace FT2 de nom "titi" a l objet de trace T :
//
// Standard_IMPORT void FT1(const Standard_Boolean);
// Standard_IMPORT void FT2(const Standard_Boolean);
// T.Add("toto",(tf_value)FT1);
// T.Add("titi",(tf_value)FT2);
//
// Valuation a Standard_True de la variable de controle gouvernee par FT1 :
//
// T.Set("toto",Standard_True);
//
// 2/ trace generale
// Une fonction de trace generale prend 3 arguments :
// - Standard_Boolean b
// - Standard_Integer n
// - char **a
//
// le type tf_intarg represente une telle fonction de trace
//
// Ajouter une fonction de trace FT3 de nom "aaaaaa" a l objet de trace T :
//
// Standard_IMPORT void FT3(const Standard_Boolean,const Standard_Integer,const char**);
// T.Add((tf_intarg)FT3);
//
// Chargement de la fonction de trace FT3 par b,n,a :
// T.Set("aaaaaa",b,n,a);
//
//
// TestTopOpeTools.hxx definit l objet theTrace (classe TestTopOpeTools_Trace)
//
//----------------------------------------------------------------------------
class TestTopOpeTools_Trace {
public:
TestTopOpeTools_Trace(const Standard_Integer nbmaxentry,
const TCollection_AsciiString& genre);
TestTopOpeTools_Trace(const Standard_Integer nbmaxentry);
Standard_Integer Add(const t_flag flag, tf_value func);
Standard_Integer SetVerbose(const Standard_Boolean b);
Standard_Integer SetVerbose(const t_flag flag, const Standard_Boolean b);
Standard_Integer Set(const Standard_Integer mute,
const t_flag flag, const t_value value);
Standard_Integer Add(const t_flag flag, tf_intarg func);
Standard_Integer Add(const t_flag flag, tf_int_intarg func);
Standard_Integer Set(const Standard_Integer mute,
const t_flag flag, const t_value value,
Standard_Integer narg, const char** args);
void Dump();
void Reset(const t_value);
Standard_Boolean IsEmpty() { return (mynbentries == 0); }
const TCollection_AsciiString& Genre() { return mygenre; }
Standard_Boolean Exist(const t_flag flag, Standard_Integer& index);
Standard_Boolean Exist(const tf_value func, Standard_Integer& index);
private:
// ==== Methods
const t_flag Getflag(const Standard_Integer index);
const tf_value Getfunc(const Standard_Integer index);
const te_ftyp Getftyp(const Standard_Integer index);
Standard_Integer Add(const t_flag flag,const tf_value func,const te_ftyp ftyp);
// ==== Fields
TCollection_AsciiString mygenre;
Standard_Integer myfirstentry,mynbmaxentry,mynbentries;
TColStd_Array1OfAsciiString myflag;
TColStd_Array1OfInteger myfunc;
TColStd_Array1OfInteger myftyp;
Standard_Boolean myverbose;
TColStd_Array1OfBoolean myfverbose;
};
#endif
|