74 : block(p_FiffDirTree.block)
75 , id(p_FiffDirTree.id)
76 , parent_id(p_FiffDirTree.parent_id)
77 , dir(p_FiffDirTree.dir)
78 , nent(p_FiffDirTree.nent)
79 , nent_tree(p_FiffDirTree.nent_tree)
80 , children(p_FiffDirTree.children)
81 , nchild(p_FiffDirTree.nchild)
117 if(p_Nodes.size() <= 0)
122 for(k = 0; k < p_Nodes.size(); ++k)
124 p_pStreamOut->start_block(p_Nodes[k].
block);
125 if (p_Nodes[k].
id.version != -1)
128 p_pStreamOut->write_id(FIFF_PARENT_FILE_ID, in_id);
130 p_pStreamOut->write_id(FIFF_BLOCK_ID);
131 p_pStreamOut->write_id(FIFF_PARENT_BLOCK_ID, p_Nodes[k].
id);
133 for (p = 0; p < p_Nodes[k].nent; ++p)
138 if(p_Nodes[k].
dir[p].kind == FIFF_BLOCK_ID || p_Nodes[k].
dir[p].kind == FIFF_PARENT_BLOCK_ID || p_Nodes[k].
dir[p].kind == FIFF_PARENT_FILE_ID)
144 if (!p_pStreamIn->device()->seek(p_Nodes[k].
dir[p].pos))
146 printf(
"Could not seek to the tag\n");
154 in->setByteOrder(QDataStream::BigEndian);
171 in->readRawData(tag->data(), tag->size());
177 out->setByteOrder(QDataStream::BigEndian);
179 *out << (qint32)tag->kind;
180 *out << (qint32)tag->type;
181 *out << (qint32)tag->size();
182 *out << (qint32)FIFFV_NEXT_SEQ;
184 out->writeRawData(tag->data(),tag->size());
186 for(p = 0; p < p_Nodes[k].nchild; ++p)
188 QList<FiffDirTree> childList;
189 childList << p_Nodes[k].children[p];
192 p_pStreamOut->end_block(p_Nodes[k].block);
209 if(p_Dir[start].kind == FIFF_BLOCK_START)
212 block = *t_pTag->toInt();
221 qint32 current = start;
227 while (current < p_Dir.size())
229 if (p_Dir[current].kind == FIFF_BLOCK_START)
231 if (current != start)
236 p_Tree.
children.append(t_ChildTree);
239 else if(p_Dir[current].kind == FIFF_BLOCK_END)
242 if (*t_pTag->toInt() == p_Tree.
block)
248 p_Tree.
dir.append(p_Dir[current]);
255 if (p_Dir[current].kind == FIFF_FILE_ID)
258 p_Tree.
id = t_pTag->toFiffID();
263 if (p_Dir[current].kind == FIFF_BLOCK_ID)
266 p_Tree.
id = t_pTag->toFiffID();
268 else if (p_Dir[current].kind == FIFF_PARENT_BLOCK_ID)
295 QList<FiffDirTree> nodes;
296 if(this->
block == p_kind)
299 QList<FiffDirTree>::const_iterator i;
301 nodes.append((*i).dir_tree_find(p_kind));
311 for (qint32 p = 0; p < this->
nent; ++p)
313 if (this->
dir[p].kind == findkind)
330 for(qint32 p = 0; p < this->
nent; ++p)
331 if(this->
dir.at(p).kind == findkind)
340 if(this->
block == p_kind)
343 QList<FiffDirTree>::const_iterator i;
345 if((*i).has_kind(p_kind))
static bool copy_tree(QSharedPointer< FiffStream > p_pStreamIn, FiffId &in_id, QList< FiffDirTree > &p_Nodes, QSharedPointer< FiffStream > p_pStreamOut)
QList< FiffDirTree > children
bool find_tag(FiffStream *p_pStream, fiff_int_t findkind, QSharedPointer< FiffTag > &p_pTag) const
QList< FiffDirTree > dir_tree_find(fiff_int_t p_kind) const
FiffDirTree class declaration, which provides fiff dir tree processing methods.
Universially unique identifier.
static qint32 make_dir_tree(FiffStream *p_pStream, QList< FiffDirEntry > &p_Dir, FiffDirTree &p_Tree, qint32 start=0)
QSharedPointer< FiffTag > SPtr
static bool read_tag(FiffStream *p_pStream, FiffTag::SPtr &p_pTag, qint64 pos=-1)
static void convert_tag_data(FiffTag::SPtr tag, int from_endian, int to_endian)
bool has_kind(fiff_int_t p_kind) const
QSharedPointer< FiffStream > SPtr
FiffStream class declaration.
Directory tree structure.
bool has_tag(fiff_int_t findkind)
QList< FiffDirEntry > dir
FiffTag class declaration, which provides fiff tag I/O and processing methods.