Functions

cbf_write.h File Reference

#include "cbf_tree.h"
Include dependency graph for cbf_write.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

int cbf_write_node (const cbf_node *node, cbf_file *file, int isbuffer)

Function Documentation

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