This library provides a classed system of objects that model the Apple Propery List or 'plist'. A plist is any one of the supported objects where containers reference supported objects, but is most often a Dictionary. Plists are easy to create and modify programmatically, and even easier to save and load from disk.
- Supports XML serialization in 'plist' or 'codalist' formats
- Supports JSON, and allows JSON5 input
- Plugin support for Binary Property List serialization with a compatable library
- Native C object types.
- Retain counted objects simplify changes to plists
- A pure C source and API for increased portability
- gcc/clang
You need a modern C compiler. Testing has been done for 64-bit Apple and Linux systems with gcc/clang. A Makefile is provided to install the dynamic library, headers, and 'codalist' in /usr/local or /usr for Linux. Note: For Linux, "sudo ldconfig" should be run after "sudo make install". After installing but before cleaning, "make test" will run two small test batteries to verify the products.
- Empty <data> is not allowed.
- "<key/>" is not allowed for blank dictionary keys.
- XML attributes like aaa in ( <true aaa="x" /> ) are not allowed.
- Set is serialized to Array for Apple XML.
- <null> is encoded as { CF$Null : true }.
- Single leaf plists must "quote" the string.
- <data> is encoded as { CF$Data : "BASE64 data..." }.
- <uid> is encoded as { CF$UID : ival }.
- <date> is encoded as { CF$Date : "YYYY-MM-DDThh:mm:ssZ" }.
- Special encodings may be disabled.
- \u0000 is mapped to 0x10FFFF.
This program slices and dices plists of various formats. Each argument to this program is an instruction for inspecting, loading, saving, or altering plists, etc.
- Create specific new compoents or add JSON branches
- Combine and prune plists
- BASE-64 data extraction and file insertions
- Easily convert formats
- A pure C source for increased portability
This program is built as a command line tool while making the PList library. For Windows systems 'make install' is not supported, but you can run 'make codalistdos' to make a stand-alone version of the program without plugin support.
- Single leaf <data> plist save as raw data.
- Use 'man codalist' for the online manual.