1*f5210bb6SBen Tyner #include "primary_src.hpp"
2*f5210bb6SBen Tyner 
3*f5210bb6SBen Tyner namespace attn
4*f5210bb6SBen Tyner {
5*f5210bb6SBen Tyner namespace pel
6*f5210bb6SBen Tyner {
7*f5210bb6SBen Tyner 
PrimarySrc(Stream & pel)8*f5210bb6SBen Tyner PrimarySrc::PrimarySrc(Stream& pel)
9*f5210bb6SBen Tyner {
10*f5210bb6SBen Tyner     unflatten(pel);
11*f5210bb6SBen Tyner }
12*f5210bb6SBen Tyner 
flatten(Stream & stream) const13*f5210bb6SBen Tyner void PrimarySrc::flatten(Stream& stream) const
14*f5210bb6SBen Tyner {
15*f5210bb6SBen Tyner     stream << _header << _version << _flags << _reserved1B << _wordCount
16*f5210bb6SBen Tyner            << _reserved2B << _size;
17*f5210bb6SBen Tyner 
18*f5210bb6SBen Tyner     for (auto& word : _srcWords)
19*f5210bb6SBen Tyner     {
20*f5210bb6SBen Tyner         stream << word;
21*f5210bb6SBen Tyner     }
22*f5210bb6SBen Tyner 
23*f5210bb6SBen Tyner     stream.write(_asciiString.data(), _asciiString.size());
24*f5210bb6SBen Tyner }
25*f5210bb6SBen Tyner 
unflatten(Stream & stream)26*f5210bb6SBen Tyner void PrimarySrc::unflatten(Stream& stream)
27*f5210bb6SBen Tyner {
28*f5210bb6SBen Tyner     stream >> _header >> _version >> _flags >> _reserved1B >> _wordCount >>
29*f5210bb6SBen Tyner         _reserved2B >> _size;
30*f5210bb6SBen Tyner 
31*f5210bb6SBen Tyner     for (auto& word : _srcWords)
32*f5210bb6SBen Tyner     {
33*f5210bb6SBen Tyner         stream >> word;
34*f5210bb6SBen Tyner     }
35*f5210bb6SBen Tyner 
36*f5210bb6SBen Tyner     stream.read(_asciiString.data(), _asciiString.size());
37*f5210bb6SBen Tyner }
38*f5210bb6SBen Tyner 
setSrcWords(std::array<uint32_t,numSrcWords> srcWords)39*f5210bb6SBen Tyner void PrimarySrc::setSrcWords(std::array<uint32_t, numSrcWords> srcWords)
40*f5210bb6SBen Tyner {
41*f5210bb6SBen Tyner     _srcWords = srcWords;
42*f5210bb6SBen Tyner }
43*f5210bb6SBen Tyner 
setAsciiString(std::array<char,asciiStringSize> asciiString)44*f5210bb6SBen Tyner void PrimarySrc::setAsciiString(std::array<char, asciiStringSize> asciiString)
45*f5210bb6SBen Tyner {
46*f5210bb6SBen Tyner     _asciiString = asciiString;
47*f5210bb6SBen Tyner }
48*f5210bb6SBen Tyner 
49*f5210bb6SBen Tyner } // namespace pel
50*f5210bb6SBen Tyner } // namespace attn
51