XParam is a general-purpose tool for parameter handling and object serialization in C++.
It allows object serialization and deserialization in a format that is human-readable and -writeable, and is unaffected by issues of word-size and endianity. The XParam format is also not confused by objects containing pointers: it saves the objects in such a manner that their conceptual contents can be restored perfectly.
For this reason, XParam provides an excellent tool for cross-program and cross-platform communication. In future, XParam may also be extended to allow cross-language communication, but for now it is only available in C++.
XParam is extendable, meaning it can save your own classes just as well as any built-in class. It is also type-safe and completely non-intrusive, meaning you can use third-party classes with XParam, even if the original class programmer did not intend them for use with XParam. (As an example, XParam recognizes the major STL classes as well as the C built-in types using the same techniques as you would use to make it work with your own classes.)
XParam provides an easy interface for reading objects from the command-line. It also allows redirection to other input sources, and can just as easily work with input and output files. XParam also provides "object streams" which are similar to C++ iostreams, but give you the ability to read and write the objects of your choice: XParam will handle all the serialization and deserialization.
XParam also recognizes class hierarchies and abstract classes, and can work with polymorphic input and output. This makes XParam particularly useful as a framework for managing plug-ins. This feature combines well with the fact that XParam can load classes dynamically, as they become necessary. You can use XParam, for example, as a strategy management framework: your program need only provide an abstract class defining the interface required of a strategy class, and user input will make XParam load a fully configured instance of the correct derived class.
XParam makes handling your parameters easy.
What's New in This Release:
· Added globbing capability.
· New "basic type": RawBytes, for space-efficient storage.
· Now supporting a feedback stream for ParamSets.
· New ParamSet flag: Ignore unexpected.
· Now reporting warnings to the user, with ability to set warning level.
· Better error reporting: MatchError
· Default values now supported in XParam input format, as well as C++.
· Small bug fixes, code and documentation improvements.