Download: cifread.zip
This is a work in progress. It started with the program cif2ps, which is a basic C program. The goal is to produce a C++ object-oriented version.
See:
You can download cif2ps as a zip archive. Rubin's description of the CIF format is very good. You can also download a pdf of the original Caltech technical report describing the format.
Finally, you can download an archive of examples - some of which do not process fully using cif2ps or cifread.
cifread.cpp
// cifread.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "define.h" int cifread(const wchar_t *ciffile); void show_cif(); int _tmain(int argc, _TCHAR* argv[]) { wchar_t *filename; if (argc<2) { filename = _T("everything.cif"); /* fprintf(stderr,"Usage: cifgood cif_filename\n"); return -1; */ } else filename = argv[1]; cifread(filename); show_cif(); return 0; }
This is the file everyting.cif
DS 1 100 1; 9 test; L CMF; B 20 20 10 10; R 10 30 10; P 0 40 10 50 20 40; W 2 0 60 10 60 30 40 30 0; DF; C 1; E
This is the output from cifread everything.cif
16 lines processed Symbols are: 0 top_level 1 test layer name 0 CMF table name: top_level symbol 0 a 1 b 1 call symbol 1 done table name: test symbol 1 a 100 b 1 box layer(0) 0 0 2000 2000 cif object polygon with 3 points wire layer(0) width(200) with 4 points done
Maintained by John Loomis, updated Mon Feb 12 23:32:12 2007