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 | //-------------------------------------------------------------------------
// Filename : FacetAttribSet.cpp
//
// Purpose : Common attribute functionality for MBG
//
// Special Notes :
//
// Creator : Jason Kraftcheck
//
// Creation Date : 03/01/03
//-------------------------------------------------------------------------
#include "FacetAttribSet.hpp"
#include "FacetAttrib.hpp"
#include "CubitSimpleAttrib.hpp"
#include "CubitFileIOWrapper.hpp"
void FacetAttribSet::append_attribute( const CubitSimpleAttrib& csa )
{
FacetAttrib* new_attrib = new FacetAttrib(csa);
new_attrib->listNext = listHead;
listHead = new_attrib;
}
void FacetAttribSet::remove_attribute( const CubitSimpleAttrib& csa )
{
if( !listHead )
return;
FacetAttrib* attrib = 0;<--- Variable 'attrib' is assigned a value that is never used.
if ( listHead->equals(csa) )
{
attrib = listHead;
listHead = listHead->listNext;
delete attrib;
return;
}
for ( FacetAttrib* prev = listHead; prev->listNext; prev = prev->listNext )
{
if( prev->listNext->equals(csa) )
{
attrib = prev->listNext;
prev->listNext = attrib->listNext;
delete attrib;
return;
}
}
}
void FacetAttribSet::remove_all_attributes()
{
while( listHead )
{
FacetAttrib* dead = listHead;
listHead = dead->listNext;
delete dead;
}
}
CubitStatus FacetAttribSet::get_attributes( DLIList<CubitSimpleAttrib>& list ) const
{
for( FacetAttrib* attrib = listHead; attrib; attrib = attrib->listNext )
list.append( attrib->get_CSA() );
return CUBIT_SUCCESS;
}
CubitStatus FacetAttribSet::get_attributes( const CubitString& name,
DLIList<CubitSimpleAttrib>& list ) const
{
for( FacetAttrib* attrib = listHead; attrib; attrib = attrib->listNext )
if( attrib->name() == name )
list.append( attrib->get_CSA() );
return CUBIT_SUCCESS;
}
CubitStatus FacetAttribSet::save_attributes( FILE* file_ptr ) const
{
FacetAttrib *curr_attrib;
CubitStatus status = CUBIT_SUCCESS;
//save # attribs
unsigned int size = attribute_count();
NCubitFile::CIOWrapper wrapper( file_ptr );
wrapper.Write( &size, 1 );
//save each attrib
for( curr_attrib = listHead; curr_attrib; curr_attrib = curr_attrib->listNext )
if( !curr_attrib->save(file_ptr) )
status = CUBIT_FAILURE;
return status;
}
CubitStatus FacetAttribSet::restore_attributes( FILE* file_ptr, unsigned endian )
{
FacetAttrib *curr_attrib;
//Read # attribs
unsigned int size;
NCubitFile::CIOWrapper wrapper( endian, file_ptr );
wrapper.Read( &size, 1 );
for (unsigned i = 0; i < size; i++)
{
curr_attrib = FacetAttrib::restore( file_ptr, endian);
if (!curr_attrib)
{
// file corrupt? don't try to read any more
return CUBIT_FAILURE;
}
curr_attrib->listNext = listHead;
listHead = curr_attrib;
}
return CUBIT_SUCCESS;
}
int FacetAttribSet::attribute_count() const
{
int count = 0;
for( FacetAttrib* attrib = listHead; attrib; attrib = attrib->listNext )
count++;
return count;
}
|