summaryrefslogtreecommitdiff
path: root/src/Message/Message_Messenger.cxx
blob: fc18afb1844aeb80a816d4da9317562144846445 (plain)
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
124
125
126
127
128
129
130
131
132
// File:      Message_Messenger.cxx
// Created:   Sat Jan  6 19:47:14 2001
// Author:    OCC Team
// Copyright: Open CASCADE S.A. 2005

#include <Message_Messenger.ixx>
#include <Message_PrinterOStream.hxx>

//=======================================================================
//function : Message_Messenger
//purpose  : 
//=======================================================================

Message_Messenger::Message_Messenger ()
{
  AddPrinter ( new Message_PrinterOStream );
}

//=======================================================================
//function : Message_Messenger
//purpose  : 
//=======================================================================

Message_Messenger::Message_Messenger (const Handle(Message_Printer)& thePrinter)
{
  AddPrinter (thePrinter);
}

//=======================================================================
//function : AddPrinter
//purpose  : 
//=======================================================================

Standard_Boolean Message_Messenger::AddPrinter (const Handle(Message_Printer)& thePrinter)
{
  // check whether printer is already in the list
  for (Standard_Integer i=1; i <= myPrinters.Length(); i++) 
    if ( myPrinters(i) == thePrinter ) 
      return Standard_False;
  // add to the list
  myPrinters.Append (thePrinter);
  return Standard_True;
}

//=======================================================================
//function : RemovePrinter
//purpose  : 
//=======================================================================

Standard_Boolean Message_Messenger::RemovePrinter (const Handle(Message_Printer)& thePrinter)
{
  // find printer in the list
  for (Standard_Integer i=1; i <= myPrinters.Length(); i++) 
    if ( myPrinters(i) == thePrinter ) 
    {
      myPrinters.Remove (i);
      return Standard_True;
    }
  return Standard_False;
}

//=======================================================================
//function : RemovePrinters
//purpose  : 
//=======================================================================

Standard_Integer Message_Messenger::RemovePrinters (const Handle(Standard_Type)& theType)
{
  // remove printers from the list
  Standard_Integer nb = 0;
  for (Standard_Integer i=1; i <= myPrinters.Length(); i++) 
    if ( myPrinters(i)->IsKind(theType) ) 
    {
      myPrinters.Remove (i--);
      nb++;
    }
  return nb;
}

//=======================================================================
//function : Send
//purpose  : 
//=======================================================================

void Message_Messenger::Send (const Standard_CString theString,
			      const Message_Gravity theGravity,
			      const Standard_Boolean putEndl) const
{
  Standard_Integer nb = myPrinters.Length();
  for (Standard_Integer i = 1; i <= nb; i++)
  {
    Handle(Message_Printer) aPrinter = Handle(Message_Printer)::DownCast ( myPrinters(i) );
    if ( ! aPrinter.IsNull() ) 
      aPrinter->Send ( theString, theGravity, putEndl );
  }
}

//=======================================================================
//function : Send
//purpose  : 
//=======================================================================

void Message_Messenger::Send (const TCollection_AsciiString& theString,
				     const Message_Gravity theGravity,
				     const Standard_Boolean putEndl) const
{
  Standard_Integer nb = myPrinters.Length();
  for (Standard_Integer i = 1; i <= nb; i++)
  {
    Handle(Message_Printer) aPrinter = Handle(Message_Printer)::DownCast ( myPrinters(i) );
    if ( ! aPrinter.IsNull() ) 
      aPrinter->Send ( theString, theGravity, putEndl );
  }
}

//=======================================================================
//function : Send
//purpose  : 
//=======================================================================

void Message_Messenger::Send (const TCollection_ExtendedString& theString,
				     const Message_Gravity theGravity,
				     const Standard_Boolean putEndl) const
{
  Standard_Integer nb = myPrinters.Length();
  for (Standard_Integer i = 1; i <= nb; i++)
  {
    Handle(Message_Printer) aPrinter = Handle(Message_Printer)::DownCast ( myPrinters(i) );
    if ( ! aPrinter.IsNull() ) 
      aPrinter->Send ( theString, theGravity, putEndl );
  }
}