MCPcopy Create free account
hub / github.com/ImageEngine/cortex / open

Method open

src/IECoreScene/PDCParticleReader.cpp:92–209  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

90}
91
92bool PDCParticleReader::open()
93{
94 if( !m_iStream || m_streamFileName!=fileName() )
95 {
96 delete m_iStream;
97 m_iStream = new ifstream( fileName().c_str(), std::ios_base::binary | std::ios_base::in );
98 if( !m_iStream->is_open() || !m_iStream->good() )
99 {
100 return false;
101 }
102
103 char pdc[4];
104 m_iStream->read( pdc, 4 );
105 if( strncmp( "PDC ", pdc, 4 ) )
106 {
107 m_header.valid = false;
108 return false;
109 }
110
111 m_iStream->read( (char *)&m_header.version, sizeof( m_header.version ) );
112
113 int endian = 0;
114 m_iStream->read( (char *)&endian, sizeof( endian ) );
115 if( endian!=1 )
116 {
117 m_header.reverseBytes = true;
118 m_header.version = reverseBytes( m_header.version );
119 }
120 else
121 {
122 m_header.reverseBytes = false;
123 }
124
125 if( m_header.version > 1 )
126 {
127 msg( Msg::Warning, "PDCParticleReader::open()", format( "File \"%s\" has unknown version %d." ) % fileName() % m_header.version );
128 }
129
130 int unused = 0;
131 m_iStream->read( (char *)&unused, sizeof( unused ) );
132 m_iStream->read( (char *)&unused, sizeof( unused ) );
133
134 m_iStream->read( (char *)&m_header.numParticles, sizeof( m_header.numParticles ) );
135 if( m_header.reverseBytes )
136 {
137 m_header.numParticles = reverseBytes( m_header.numParticles );
138 }
139
140 int numAttributes;
141 m_iStream->read( (char *)&numAttributes, sizeof( numAttributes ) );
142 if( m_header.reverseBytes )
143 {
144 numAttributes = reverseBytes( numAttributes );
145 }
146 for( int i=0; i<numAttributes; i++ )
147 {
148 int nameLength;
149 m_iStream->read( (char *)&nameLength, sizeof( nameLength ) );

Callers

nothing calls this directly

Calls 4

reverseBytesFunction · 0.85
tellgMethod · 0.80
seekgMethod · 0.80
readMethod · 0.45

Tested by

no test coverage detected