MessageAttributes.C 16.4 KB
Newer Older
hrchilds's avatar
hrchilds committed
1
2
/*****************************************************************************
*
brugger's avatar
   
brugger committed
3
* Copyright (c) 2000 - 2008, Lawrence Livermore National Security, LLC
hrchilds's avatar
hrchilds committed
4
* Produced at the Lawrence Livermore National Laboratory
brugger's avatar
   
brugger committed
5
* LLNL-CODE-400142
hrchilds's avatar
hrchilds committed
6
7
* All rights reserved.
*
brugger's avatar
   
brugger committed
8
* This file is  part of VisIt. For  details, see https://visit.llnl.gov/.  The
hrchilds's avatar
hrchilds committed
9
10
11
12
13
14
15
16
17
18
* full copyright notice is contained in the file COPYRIGHT located at the root
* of the VisIt distribution or at http://www.llnl.gov/visit/copyright.html.
*
* Redistribution  and  use  in  source  and  binary  forms,  with  or  without
* modification, are permitted provided that the following conditions are met:
*
*  - Redistributions of  source code must  retain the above  copyright notice,
*    this list of conditions and the disclaimer below.
*  - Redistributions in binary form must reproduce the above copyright notice,
*    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
brugger's avatar
   
brugger committed
19
20
21
*    documentation and/or other materials provided with the distribution.
*  - Neither the name of  the LLNS/LLNL nor the names of  its contributors may
*    be used to endorse or promote products derived from this software without
hrchilds's avatar
hrchilds committed
22
23
24
25
26
*    specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
brugger's avatar
   
brugger committed
27
28
29
* ARE  DISCLAIMED. IN  NO EVENT  SHALL LAWRENCE  LIVERMORE NATIONAL  SECURITY,
* LLC, THE  U.S.  DEPARTMENT OF  ENERGY  OR  CONTRIBUTORS BE  LIABLE  FOR  ANY
* DIRECT,  INDIRECT,   INCIDENTAL,   SPECIAL,   EXEMPLARY,  OR   CONSEQUENTIAL
hrchilds's avatar
hrchilds committed
30
31
32
33
34
35
36
37
38
* DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
* SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
* CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
* LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
* OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
*****************************************************************************/

hrchilds's avatar
hrchilds committed
39
40
41
42
43
44
45
46
#include <MessageAttributes.h>
#include <DataNode.h>

//
// Enum conversion methods for MessageAttributes::Severity
//

static const char *Severity_strings[] = {
hrchilds's avatar
hrchilds committed
47
"Error", "Warning", "Message", 
whitlocb's avatar
whitlocb committed
48
"ErrorClear", "Information"};
hrchilds's avatar
hrchilds committed
49
50
51
52

std::string
MessageAttributes::Severity_ToString(MessageAttributes::Severity t)
{
hrchilds's avatar
hrchilds committed
53
    int index = int(t);
whitlocb's avatar
whitlocb committed
54
    if(index < 0 || index >= 5) index = 0;
hrchilds's avatar
hrchilds committed
55
    return Severity_strings[index];
hrchilds's avatar
hrchilds committed
56
57
58
59
60
}

std::string
MessageAttributes::Severity_ToString(int t)
{
whitlocb's avatar
whitlocb committed
61
    int index = (t < 0 || t >= 5) ? 0 : t;
hrchilds's avatar
hrchilds committed
62
    return Severity_strings[index];
hrchilds's avatar
hrchilds committed
63
64
65
66
67
}

bool
MessageAttributes::Severity_FromString(const std::string &s, MessageAttributes::Severity &val)
{
hrchilds's avatar
hrchilds committed
68
    val = MessageAttributes::Error;
whitlocb's avatar
whitlocb committed
69
    for(int i = 0; i < 5; ++i)
hrchilds's avatar
hrchilds committed
70
71
72
73
74
75
76
77
78
79
    {
        if(s == Severity_strings[i])
        {
            val = (Severity)i;
            return true;
        }
    }
    return false;
}

whitlocb's avatar
whitlocb committed
80
81
82
// Type map format string
const char *MessageAttributes::TypeMapFormatString = "si";

hrchilds's avatar
hrchilds committed
83
84
85
86
87
88
89
90
91
// ****************************************************************************
// Method: MessageAttributes::MessageAttributes
//
// Purpose: 
//   Constructor for the MessageAttributes class.
//
// Note:       Autogenerated by xml2atts.
//
// Programmer: xml2atts
whitlocb's avatar
whitlocb committed
92
// Creation:   Fri Jan 18 14:43:37 PST 2008
hrchilds's avatar
hrchilds committed
93
94
95
96
97
//
// Modifications:
//   
// ****************************************************************************

whitlocb's avatar
whitlocb committed
98
99
MessageAttributes::MessageAttributes() : 
    AttributeSubject(MessageAttributes::TypeMapFormatString)
hrchilds's avatar
hrchilds committed
100
101
102
103
104
105
106
107
108
109
110
111
112
113
{
    text = "";
    severity = Message;
}

// ****************************************************************************
// Method: MessageAttributes::MessageAttributes
//
// Purpose: 
//   Copy constructor for the MessageAttributes class.
//
// Note:       Autogenerated by xml2atts.
//
// Programmer: xml2atts
whitlocb's avatar
whitlocb committed
114
// Creation:   Fri Jan 18 14:43:37 PST 2008
hrchilds's avatar
hrchilds committed
115
116
117
118
119
//
// Modifications:
//   
// ****************************************************************************

whitlocb's avatar
whitlocb committed
120
121
MessageAttributes::MessageAttributes(const MessageAttributes &obj) : 
    AttributeSubject(MessageAttributes::TypeMapFormatString)
hrchilds's avatar
hrchilds committed
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
{
    text = obj.text;
    severity = obj.severity;

    SelectAll();
}

// ****************************************************************************
// Method: MessageAttributes::~MessageAttributes
//
// Purpose: 
//   Destructor for the MessageAttributes class.
//
// Note:       Autogenerated by xml2atts.
//
// Programmer: xml2atts
whitlocb's avatar
whitlocb committed
138
// Creation:   Fri Jan 18 14:43:37 PST 2008
hrchilds's avatar
hrchilds committed
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
//
// Modifications:
//   
// ****************************************************************************

MessageAttributes::~MessageAttributes()
{
    // nothing here
}

// ****************************************************************************
// Method: MessageAttributes::operator = 
//
// Purpose: 
//   Assignment operator for the MessageAttributes class.
//
// Note:       Autogenerated by xml2atts.
//
// Programmer: xml2atts
whitlocb's avatar
whitlocb committed
158
// Creation:   Fri Jan 18 14:43:37 PST 2008
hrchilds's avatar
hrchilds committed
159
160
161
162
163
//
// Modifications:
//   
// ****************************************************************************

hrchilds's avatar
hrchilds committed
164
MessageAttributes& 
hrchilds's avatar
hrchilds committed
165
166
MessageAttributes::operator = (const MessageAttributes &obj)
{
hrchilds's avatar
hrchilds committed
167
    if (this == &obj) return *this;
hrchilds's avatar
hrchilds committed
168
169
170
171
    text = obj.text;
    severity = obj.severity;

    SelectAll();
hrchilds's avatar
hrchilds committed
172
    return *this;
hrchilds's avatar
hrchilds committed
173
174
175
176
177
178
179
180
181
182
183
}

// ****************************************************************************
// Method: MessageAttributes::operator == 
//
// Purpose: 
//   Comparison operator == for the MessageAttributes class.
//
// Note:       Autogenerated by xml2atts.
//
// Programmer: xml2atts
whitlocb's avatar
whitlocb committed
184
// Creation:   Fri Jan 18 14:43:37 PST 2008
hrchilds's avatar
hrchilds committed
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
//
// Modifications:
//   
// ****************************************************************************

bool
MessageAttributes::operator == (const MessageAttributes &obj) const
{
    // Create the return value
    return ((text == obj.text) &&
            (severity == obj.severity));
}

// ****************************************************************************
// Method: MessageAttributes::operator != 
//
// Purpose: 
//   Comparison operator != for the MessageAttributes class.
//
// Note:       Autogenerated by xml2atts.
//
// Programmer: xml2atts
whitlocb's avatar
whitlocb committed
207
// Creation:   Fri Jan 18 14:43:37 PST 2008
hrchilds's avatar
hrchilds committed
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
//
// Modifications:
//   
// ****************************************************************************

bool
MessageAttributes::operator != (const MessageAttributes &obj) const
{
    return !(this->operator == (obj));
}

// ****************************************************************************
// Method: MessageAttributes::TypeName
//
// Purpose: 
//   Type name method for the MessageAttributes class.
//
// Note:       Autogenerated by xml2atts.
//
// Programmer: xml2atts
whitlocb's avatar
whitlocb committed
228
// Creation:   Fri Jan 18 14:43:37 PST 2008
hrchilds's avatar
hrchilds committed
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
//
// Modifications:
//   
// ****************************************************************************

const std::string
MessageAttributes::TypeName() const
{
    return "MessageAttributes";
}

// ****************************************************************************
// Method: MessageAttributes::CopyAttributes
//
// Purpose: 
//   CopyAttributes method for the MessageAttributes class.
//
// Note:       Autogenerated by xml2atts.
//
// Programmer: xml2atts
whitlocb's avatar
whitlocb committed
249
// Creation:   Fri Jan 18 14:43:37 PST 2008
hrchilds's avatar
hrchilds committed
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
//
// Modifications:
//   
// ****************************************************************************

bool
MessageAttributes::CopyAttributes(const AttributeGroup *atts)
{
    if(TypeName() != atts->TypeName())
        return false;

    // Call assignment operator.
    const MessageAttributes *tmp = (const MessageAttributes *)atts;
    *this = *tmp;

    return true;
}

// ****************************************************************************
// Method: MessageAttributes::CreateCompatible
//
// Purpose: 
//   CreateCompatible method for the MessageAttributes class.
//
// Note:       Autogenerated by xml2atts.
//
// Programmer: xml2atts
whitlocb's avatar
whitlocb committed
277
// Creation:   Fri Jan 18 14:43:37 PST 2008
hrchilds's avatar
hrchilds committed
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
//
// Modifications:
//   
// ****************************************************************************

AttributeSubject *
MessageAttributes::CreateCompatible(const std::string &tname) const
{
    AttributeSubject *retval = 0;
    if(TypeName() == tname)
        retval = new MessageAttributes(*this);
    // Other cases could go here too. 

    return retval;
}

hrchilds's avatar
hrchilds committed
294
295
296
297
298
299
300
301
302
// ****************************************************************************
// Method: MessageAttributes::NewInstance
//
// Purpose: 
//   NewInstance method for the MessageAttributes class.
//
// Note:       Autogenerated by xml2atts.
//
// Programmer: xml2atts
whitlocb's avatar
whitlocb committed
303
// Creation:   Fri Jan 18 14:43:37 PST 2008
hrchilds's avatar
hrchilds committed
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
//
// Modifications:
//   
// ****************************************************************************

AttributeSubject *
MessageAttributes::NewInstance(bool copy) const
{
    AttributeSubject *retval = 0;
    if(copy)
        retval = new MessageAttributes(*this);
    else
        retval = new MessageAttributes;

    return retval;
}

hrchilds's avatar
hrchilds committed
321
322
323
324
325
326
327
328
329
// ****************************************************************************
// Method: MessageAttributes::SelectAll
//
// Purpose: 
//   Selects all attributes.
//
// Note:       Autogenerated by xml2atts.
//
// Programmer: xml2atts
whitlocb's avatar
whitlocb committed
330
// Creation:   Fri Jan 18 14:43:37 PST 2008
hrchilds's avatar
hrchilds committed
331
332
333
334
335
336
337
338
//
// Modifications:
//   
// ****************************************************************************

void
MessageAttributes::SelectAll()
{
whitlocb's avatar
whitlocb committed
339
340
    Select(ID_text,     (void *)&text);
    Select(ID_severity, (void *)&severity);
hrchilds's avatar
hrchilds committed
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
}

///////////////////////////////////////////////////////////////////////////////
// Persistence methods
///////////////////////////////////////////////////////////////////////////////

// ****************************************************************************
// Method: MessageAttributes::CreateNode
//
// Purpose: 
//   This method creates a DataNode representation of the object so it can be saved to a config file.
//
// Note:       Autogenerated by xml2atts.
//
// Programmer: xml2atts
whitlocb's avatar
whitlocb committed
356
// Creation:   Fri Jan 18 14:43:37 PST 2008
hrchilds's avatar
hrchilds committed
357
358
359
360
361
362
//
// Modifications:
//   
// ****************************************************************************

bool
hrchilds's avatar
hrchilds committed
363
MessageAttributes::CreateNode(DataNode *parentNode, bool completeSave, bool forceAdd)
hrchilds's avatar
hrchilds committed
364
365
366
367
368
369
370
371
372
{
    if(parentNode == 0)
        return false;

    MessageAttributes defaultObject;
    bool addToParent = false;
    // Create a node for MessageAttributes.
    DataNode *node = new DataNode("MessageAttributes");

whitlocb's avatar
whitlocb committed
373
    if(completeSave || !FieldsEqual(ID_text, &defaultObject))
hrchilds's avatar
hrchilds committed
374
375
376
377
378
    {
        addToParent = true;
        node->AddNode(new DataNode("text", text));
    }

whitlocb's avatar
whitlocb committed
379
    if(completeSave || !FieldsEqual(ID_severity, &defaultObject))
hrchilds's avatar
hrchilds committed
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
    {
        addToParent = true;
        node->AddNode(new DataNode("severity", Severity_ToString(severity)));
    }


    // Add the node to the parent node.
    if(addToParent || forceAdd)
        parentNode->AddNode(node);
    else
        delete node;

    return (addToParent || forceAdd);
}

// ****************************************************************************
// Method: MessageAttributes::SetFromNode
//
// Purpose: 
//   This method sets attributes in this object from values in a DataNode representation of the object.
//
// Note:       Autogenerated by xml2atts.
//
// Programmer: xml2atts
whitlocb's avatar
whitlocb committed
404
// Creation:   Fri Jan 18 14:43:37 PST 2008
hrchilds's avatar
hrchilds committed
405
406
407
408
409
410
411
412
//
// Modifications:
//   
// ****************************************************************************

void
MessageAttributes::SetFromNode(DataNode *parentNode)
{
hrchilds's avatar
hrchilds committed
413
    int i;
hrchilds's avatar
hrchilds committed
414
415
416
417
418
419
420
421
422
423
424
425
426
427
    if(parentNode == 0)
        return;

    DataNode *searchNode = parentNode->GetNode("MessageAttributes");
    if(searchNode == 0)
        return;

    DataNode *node;
    if((node = searchNode->GetNode("text")) != 0)
        SetText(node->AsString());
    if((node = searchNode->GetNode("severity")) != 0)
    {
        // Allow enums to be int or string in the config file
        if(node->GetNodeType() == INT_NODE)
hrchilds's avatar
hrchilds committed
428
429
        {
            int ival = node->AsInt();
whitlocb's avatar
whitlocb committed
430
            if(ival >= 0 && ival < 5)
hrchilds's avatar
hrchilds committed
431
432
                SetSeverity(Severity(ival));
        }
hrchilds's avatar
hrchilds committed
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
        else if(node->GetNodeType() == STRING_NODE)
        {
            Severity value;
            if(Severity_FromString(node->AsString(), value))
                SetSeverity(value);
        }
    }
}

///////////////////////////////////////////////////////////////////////////////
// Set property methods
///////////////////////////////////////////////////////////////////////////////

void
MessageAttributes::SetText(const std::string &text_)
{
    text = text_;
whitlocb's avatar
whitlocb committed
450
    Select(ID_text, (void *)&text);
hrchilds's avatar
hrchilds committed
451
452
453
454
455
456
}

void
MessageAttributes::SetSeverity(MessageAttributes::Severity severity_)
{
    severity = severity_;
whitlocb's avatar
whitlocb committed
457
    Select(ID_severity, (void *)&severity);
hrchilds's avatar
hrchilds committed
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
}

///////////////////////////////////////////////////////////////////////////////
// Get property methods
///////////////////////////////////////////////////////////////////////////////

const std::string &
MessageAttributes::GetText() const
{
    return text;
}

std::string &
MessageAttributes::GetText()
{
    return text;
}

MessageAttributes::Severity
MessageAttributes::GetSeverity() const
{
    return Severity(severity);
}

///////////////////////////////////////////////////////////////////////////////
// Select property methods
///////////////////////////////////////////////////////////////////////////////

void
MessageAttributes::SelectText()
{
whitlocb's avatar
whitlocb committed
489
    Select(ID_text, (void *)&text);
hrchilds's avatar
hrchilds committed
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
}

///////////////////////////////////////////////////////////////////////////////
// Keyframing methods
///////////////////////////////////////////////////////////////////////////////

// ****************************************************************************
// Method: MessageAttributes::GetFieldName
//
// Purpose: 
//   This method returns the name of a field given its index.
//
// Note:       Autogenerated by xml2atts.
//
// Programmer: xml2atts
whitlocb's avatar
whitlocb committed
505
// Creation:   Fri Jan 18 14:43:37 PST 2008
hrchilds's avatar
hrchilds committed
506
507
508
509
510
511
512
513
514
515
//
// Modifications:
//   
// ****************************************************************************

std::string
MessageAttributes::GetFieldName(int index) const
{
    switch (index)
    {
whitlocb's avatar
whitlocb committed
516
517
518
    case ID_text:     return "text";
    case ID_severity: return "severity";
    default:  return "invalid index";
hrchilds's avatar
hrchilds committed
519
520
521
522
523
524
525
526
527
528
529
530
    }
}

// ****************************************************************************
// Method: MessageAttributes::GetFieldType
//
// Purpose: 
//   This method returns the type of a field given its index.
//
// Note:       Autogenerated by xml2atts.
//
// Programmer: xml2atts
whitlocb's avatar
whitlocb committed
531
// Creation:   Fri Jan 18 14:43:37 PST 2008
hrchilds's avatar
hrchilds committed
532
533
534
535
536
537
538
539
540
541
//
// Modifications:
//   
// ****************************************************************************

AttributeGroup::FieldType
MessageAttributes::GetFieldType(int index) const
{
    switch (index)
    {
whitlocb's avatar
whitlocb committed
542
543
544
    case ID_text:     return FieldType_string;
    case ID_severity: return FieldType_enum;
    default:  return FieldType_unknown;
hrchilds's avatar
hrchilds committed
545
546
547
548
549
550
551
552
553
554
555
556
    }
}

// ****************************************************************************
// Method: MessageAttributes::GetFieldTypeName
//
// Purpose: 
//   This method returns the name of a field type given its index.
//
// Note:       Autogenerated by xml2atts.
//
// Programmer: xml2atts
whitlocb's avatar
whitlocb committed
557
// Creation:   Fri Jan 18 14:43:37 PST 2008
hrchilds's avatar
hrchilds committed
558
559
560
561
562
563
564
565
566
567
//
// Modifications:
//   
// ****************************************************************************

std::string
MessageAttributes::GetFieldTypeName(int index) const
{
    switch (index)
    {
whitlocb's avatar
whitlocb committed
568
569
570
    case ID_text:     return "string";
    case ID_severity: return "enum";
    default:  return "invalid index";
hrchilds's avatar
hrchilds committed
571
572
573
574
575
576
577
578
579
580
581
582
    }
}

// ****************************************************************************
// Method: MessageAttributes::FieldsEqual
//
// Purpose: 
//   This method compares two fields and return true if they are equal.
//
// Note:       Autogenerated by xml2atts.
//
// Programmer: xml2atts
whitlocb's avatar
whitlocb committed
583
// Creation:   Fri Jan 18 14:43:37 PST 2008
hrchilds's avatar
hrchilds committed
584
585
586
587
588
589
590
591
592
593
594
595
//
// Modifications:
//   
// ****************************************************************************

bool
MessageAttributes::FieldsEqual(int index_, const AttributeGroup *rhs) const
{
    const MessageAttributes &obj = *((const MessageAttributes*)rhs);
    bool retval = false;
    switch (index_)
    {
whitlocb's avatar
whitlocb committed
596
    case ID_text:
hrchilds's avatar
hrchilds committed
597
598
599
600
        {  // new scope
        retval = (text == obj.text);
        }
        break;
whitlocb's avatar
whitlocb committed
601
    case ID_severity:
hrchilds's avatar
hrchilds committed
602
603
604
605
606
607
608
609
610
611
612
613
614
615
        {  // new scope
        retval = (severity == obj.severity);
        }
        break;
    default: retval = false;
    }

    return retval;
}

///////////////////////////////////////////////////////////////////////////////
// User-defined methods.
///////////////////////////////////////////////////////////////////////////////