read Blackboard data correctly from the SFC file, and construct a BlackboardPart...
[openc2e.git] / attFile.cpp
blobc693c43257b110d6d0c84da6cd09e60d485d0579
1 /*
2 * attFile.cpp
3 * openc2e
5 * Created by Alyssa Milburn on Fri 25 Feb 2005.
6 * Copyright (c) 2005 Alyssa Milburn. All rights reserved.
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
19 #include "attFile.h"
20 #include <boost/tokenizer.hpp>
21 using namespace boost;
23 std::istream &operator >> (std::istream &i, attFile &f) {
24 f.nolines = 0;
26 std::string s;
27 while (std::getline(i, s)) {
28 if (s.size() == 0) return i;
29 if (f.nolines >= 16) return i; // TODO: what the heck? wah
30 assert(f.nolines < 16);
32 f.noattachments[f.nolines] = 0;
34 bool havefirst = false;
35 unsigned int x = 0;
36 tokenizer<> tok(s);
37 for (tokenizer<>::iterator beg = tok.begin(); beg != tok.end(); beg++) {
38 unsigned int val = atoi(beg->c_str());
39 if (havefirst) {
40 f.attachments[f.nolines][f.noattachments[f.nolines] * 2] = x;
41 f.attachments[f.nolines][(f.noattachments[f.nolines] * 2) + 1] = val;
42 havefirst = false;
43 f.noattachments[f.nolines]++;
44 } else {
45 havefirst = true;
46 x = val;
50 assert(!havefirst);
51 f.nolines++;
54 return i;
57 /* vim: set noet: */