#include "cbf_tree.h"

Go to the source code of this file.
Functions | |
| int | cbf_write_node (const cbf_node *node, cbf_file *file, int isbuffer) |
Definition at line 471 of file cbf_write.c.
References CBF_ARGUMENT, CBF_CATEGORY, CBF_DATABLOCK, cbf_failnez, cbf_flush_characters(), cbf_get_link(), CBF_ROOT, cbf_write_category(), cbf_write_datablockname(), cbf_write_node(), cbf_write_string(), cbf_node_struct::child, cbf_node_struct::children, ENC_NONE, cbf_node_struct::type, and cbf_file::write_encoding.
Referenced by cbf_write_file(), and cbf_write_node().
{
unsigned int count;
/* Follow any links */
node = cbf_get_link (node);
/* Does the node exist? */
if (!node)
return CBF_ARGUMENT;
/* Node type */
switch (node->type)
{
case CBF_ROOT:
cbf_failnez (cbf_write_string (file, "###CBF: VERSION 0.6\n"))
if (file->write_encoding & ENC_NONE)
cbf_failnez (cbf_write_string (file,
"# CBF file written by cbflib v0.6\n"))
else
cbf_failnez (cbf_write_string (file,
"# CIF file written by cbflib v0.6\n"))
break;
case CBF_DATABLOCK:
cbf_failnez (cbf_write_datablockname (node, file))
break;
case CBF_CATEGORY:
cbf_failnez (cbf_write_category (node, file, isbuffer))
break;
default:
return CBF_ARGUMENT;
}
/* Write the children */
if (node->type == CBF_ROOT || node->type == CBF_DATABLOCK)
for (count = 0; count < node->children; count++)
cbf_failnez (cbf_write_node (node->child [count], file, isbuffer))
/* Flush the buffers */
return cbf_flush_characters (file);
}
1.7.3