#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); }