示例#1
0
文件: meta.c 项目: avilella/methylQA
static void rMetaListWrite(struct meta *metaList, struct meta *parent,
                           boolean level, int indent, boolean withParent, FILE *f)
/* Write out list of stanzas at same level to file,  their children too. */
{
    int totalIndent = level * indent;
    struct meta *meta;
    for (meta = metaList; meta != NULL; meta = meta->next)
    {
        struct metaTagVal *mtv;
        boolean gotParent = FALSE;
        for (mtv = meta->tagList; mtv != NULL; mtv = mtv->next)
        {
            if (sameString(mtv->tag, "parent"))
            {
                if (withParent)
                    gotParent = TRUE;
                else
                    continue;
            }
            spaceOut(f, totalIndent);
            fprintf(f, "%s %s\n", mtv->tag, mtv->val);
        }
        if (withParent && !gotParent && parent != NULL)
        {
            spaceOut(f, totalIndent);
            fprintf(f, "%s %s\n", "parent", parent->name);
        }
        fprintf(f, "\n");
        if (meta->children)
            rMetaListWrite(meta->children, meta, level+1, indent, withParent, f);
    }
}
示例#2
0
文件: meta.c 项目: avilella/methylQA
void metaWriteAll(struct meta *metaList, char *fileName, int indent, boolean withParent)
/* Write out metadata, optionally adding meta tag. */
{
    FILE *f = mustOpen(fileName, "w");
    rMetaListWrite(metaList, NULL, 0, indent, withParent, f);
    carefulClose(&f);
}
示例#3
0
void metaWriteAll(struct meta *metaList, char *fileName, int indent, boolean withParent,
                  int maxDepth)
/* Write out metadata, optionally adding meta tag.  If maxDepth is non-zero just write
 * up to that many levels.  Root level is 0. */
{
    FILE *f = mustOpen(fileName, "w");
    if (maxDepth == 0)
        maxDepth = BIGNUM;
    rMetaListWrite(metaList, NULL, 0, maxDepth, indent, withParent, f);
    carefulClose(&f);
}