CIF API 0.2.0 released to Beta

Forum for CIF developers to define an application programming interface for CIF software.

Moderators: Brian McMahon, jcbollinger

Post Reply
Posts: 57
Joined: Tue Dec 20, 2011 2:41 pm

CIF API 0.2.0 released to Beta

Post by jcbollinger » Tue Oct 21, 2014 10:04 pm

I am pleased to announce the release of CIF API version 0.2.0 for beta testing.

Among the CIF API's high-level features are
  • a fully-functional CIF 1.1/2.0 autodetecting parser, operating either to
  • parse to an in-memory whole-CIF representation (analogous to DOM XML parsers)
  • parse via user-supplied callback functions (analogous to expat and SAX XML parsers)
  • or to combine the two parsing modes;
  • an object representation of CIF 2.0 data, with all functions needed to create, examine, and / or modify instances of the model, in particular
  • CIF 2.0's full repertoire of Unicode characters is supported in block codes, frame codes, data names, and data values
  • CIF 2.0's new List and Table data compound types are supported;
  • a complete (but a bit simplistic) mechanism for writing CIF data to files;
  • extensive user documentation and examples.
The implementation is written in standard C89, but compiles and tests equally well with a C99 or C++ compiler.

Key requirements:
  • A C or C++ compiler is required to build the software and examples, and (since it's primarily a library, after all) to build programs that use the API. Any C compiler that supports standard C89 or C99, or any C++ compiler that supports C++98 should be sufficient.
  • International Components for Unicode (ICU) development files (headers and libraries), version 3.6 or later
  • SQLite development files, version 3.6.19 or later
Other requirements and caveats:
  • The automated configuration system is implemented as a shell script, therefore 'bash' or a similar shell is required to use the script to configure for building. Setting up to build without using the script should be feasible, if necessary.
  • The automated configuration system relies on using the pkg-config program to discover build options related to ICU.
  • The build system relies on a command being available to count the lines in a text file; workarounds are available, if necessary.
  • The build system relies on a variety of command-line tools including especially 'make' and 'sed'.
  • The API implementation was developed in a Linux environment. It is expected to build and run well on OS X, too, provided the appropriate build tools are available. It has not yet been built on Windows, though that should in principle be possible. Feedback about building the project on various platforms is especially welcome.
  • The beta test software will be distributed under a fairly restrictive license. I anticipate that the public release of the software will be licensed under the LGPL.
To try it out:
Contact me ( John [dot] Bollinger [at] StJude [dot] org ) to request the distribution package.

Post Reply