71,
id(p_FiffDirTree->
id)
94 if(p_Nodes.size() <= 0)
99 for(k = 0; k < p_Nodes.size(); ++k)
101 p_pStreamOut->start_block(p_Nodes[k]->
type);
102 if (p_Nodes[k]->
id.version != -1)
110 for (p = 0; p < p_Nodes[k]->nent(); ++p)
121 if (!p_pStreamIn->device()->seek(p_Nodes[k]->dir[p]->pos))
123 qWarning(
"Could not seek to the tag\n");
128 auto tag = std::make_unique<FiffTag>();
131 in->setByteOrder(QDataStream::BigEndian);
148 in->readRawData(tag->data(), tag->size());
156 out->setByteOrder(QDataStream::BigEndian);
158 *out << (qint32)tag->kind;
159 *out << (qint32)tag->type;
160 *out << (qint32)tag->size();
163 out->writeRawData(tag->data(),tag->size());
165 for(p = 0; p < p_Nodes[k]->nchild(); ++p)
167 QList<FiffDirNode::SPtr> childList;
168 childList << p_Nodes[k]->children[p];
171 p_pStreamOut->end_block(p_Nodes[k]->
type);
180 QList<FiffDirNode::SPtr> nodes;
181 if(this->
type == p_kind)
184 QList<FiffDirNode::SPtr>::const_iterator i;
185 for (i = this->
children.begin(); i != this->children.end(); ++i)
186 nodes.append((*i)->dir_tree_find(p_kind));
195 for (qint32 p = 0; p < this->
nent(); ++p)
197 if (this->
dir[p]->kind == findkind)
213 for(qint32 p = 0; p < this->
nent(); ++p)
214 if(this->
dir.at(p)->kind == findkind)
223 if(this->
type == p_kind)
226 QList<FiffDirNode::SPtr>::const_iterator i;
227 for(i = this->
children.begin(); i != this->children.end(); ++i)
228 if((*i)->has_kind(p_kind))
238 int j, prev_kind,count;
239 QList<FiffDirEntry::SPtr> dentry = this->
dir;
241 for (
int k = 0; k < indent; k++)
249 for (j = 0, prev_kind = -1, count = 0; j < this->
nent(); j++) {
250 if (dentry[j]->kind != prev_kind) {
252 qDebug(
" [%d]\n",count);
255 for (
int k = 0; k < indent+2; k++)
258 prev_kind = dentry[j]->kind;
263 prev_kind = dentry[j]->kind;
266 qDebug(
" [%d]\n",count);
269 for (j = 0; j < this->
nchild(); j++)
271 for (
int k = 0; k < indent; k++)
280 for (
int k = 0; _fiff_block_explanations[k].kind >= 0; k++) {
281 if (_fiff_block_explanations[k].kind == kind) {
282 qDebug(
"%d = %s",kind,_fiff_block_explanations[k].text);
286 qWarning(
"Cannot explain: %d",kind);
294 for (k = 0; _fiff_explanations[k].kind >= 0; k++) {
295 if (_fiff_explanations[k].kind == kind) {
296 qDebug(
"%d = %s",kind,_fiff_explanations[k].text);
300 qWarning(
"Cannot explain: %d",kind);
308 for (k = 0; _fiff_explanations[k].kind >= 0; k++) {
309 if (_fiff_explanations[k].kind == kind)
310 return _fiff_explanations[k].text;
FiffTag class declaration, which provides fiff tag I/O and processing methods.
FiffStream class declaration.
Fiff block and dir tag explainations.
FiffDirNode class declaration, which provides fiff dir tree processing methods.
#define FIFF_PARENT_BLOCK_ID
#define FIFF_PARENT_FILE_ID
FIFF file I/O and data structures (raw, epochs, evoked, covariance, forward).
fiff_int_t nchild() const
QList< FiffDirNode::SPtr > children
static void explain(int kind)
QSharedPointer< FiffDirNode > SPtr
static void explain_block(int kind)
static const char * get_tag_explanation(int kind)
QList< FiffDirNode::SPtr > dir_tree_find(fiff_int_t p_kind) const
void print(int indent) const
bool has_kind(fiff_int_t p_kind) const
bool has_tag(fiff_int_t findkind)
QList< FiffDirEntry::SPtr > dir
bool find_tag(QSharedPointer< FiffStream > &p_pStream, fiff_int_t findkind, std::unique_ptr< FiffTag > &p_pTag) const
static bool copy_tree(QSharedPointer< FiffStream > &p_pStreamIn, const FiffId &in_id, const QList< QSharedPointer< FiffDirNode > > &p_Nodes, QSharedPointer< FiffStream > &p_pStreamOut)
Universally unique identifier.
QSharedPointer< FiffStream > SPtr
bool read_tag(std::unique_ptr< FiffTag > &p_pTag, fiff_long_t pos=-1)
std::unique_ptr< FiffTag > UPtr