JSonSerial2: C++ Object Serialization in JSON
- JsonSerial allows serializing a set of C++ objects (a single object, a collection, a cyclic or acyclic graph of objects)
- In most cases (and contrary to some other tools), JsonSerial does not require writing read/write functions. Instead, you just need to register which classes and members you want to serialize.
- JsonSerial can handle basic types, enums, C and C++ strings, plain C++ objects, most C++ containers, C arrays with brackets, raw pointers and smart pointers.
- JsonSerial supports graphs of objects pointing to each other, including cyclic graphs. Pointees are automatically created when reading a JSON file. Shared objects (objects pointed by multiple pointers) are not duplicated (note that this feature is optional).
- JsonSerial supports single and multiple inheritance and class polymorphism. When needed, the class of derived classes is stored in the JSON file so that the proper objects will be created when reading the JSON file.
- The names in the JSON file can be whatever you want (rather than auto-generated arbitray names), e.g. the names of the objects' members.
- The JSON syntax can be relaxed: comments are supported, quotes and commas can optionally be omitted.
- JsonSerial requires UTF8. It only consists of header files and relies on C++ 11 templates.
- Licence: Apache Licence Version 2.
Resources:
BibToHTML: HTML page (with images) from BibTex files
Resources:
|
MarkPad: As many gestural shorcuts as you need
See the MarkPad page to get the manual and download the application.
CHI Paper: MarkPad: Augmenting Touchpads for Command Selection
MarkPad is a Mac OSX application that allows performing simple gestures
to execute various actions (execute scripts or commands, open/hide applications, files, directories, webpages, etc.)
Gestures consist of strokes starting from the touchpad border
(thus not conflicting with pointing). Actions depend on the starting and
ending locations of the strokes, which allows defining hundreds of different gestures.
MarkPad provides a novice and an expert mode. In novice mode, the user touches the touchpad border for a short amount of time and a menu appears. In expert mode, the user perform the same gesture without waiting for the menu to appear. MarkPad can be improved by adding visual or tactile marks on the touchpad (e.g. transparent or colored tape). |
ccuty: C++ utilities
See the ccuty page to get documentation and source code.
Licence: LGPL 3 or or any later version.
ccstring Useful functions for C++ strings |
Provides functions for trimming, unquoting and splitting strings, for comparing and converting ASCII strings to uppercase or lowercase chracters, and for converting strings to numeric IDs (e.g. for switch statements). |
ccstringset String set and indexed string set |
Provides classes for converting strings to numeric IDs (e.g. for switch statements) and vice-versa and for testing if a string belongs to a set of strings. |
ccpath Functions for Unix pathnames |
Provides functions for retreiving the basename, the dirname, the extname, for changing the extension and for joining pathnames. |
ccsocket IPV4 socket communication |
Provides classes for simplifying client/server socket communication. Ensures that messages are properly delimited (a message is never received in several parts, even if it is split by the underlying protocol). |
macdesktop For managing the MacOSX desktop |
Provides functions to generate mouse and key events, open/hide applications, interact with AppleScript, change volume, play/pause iTunes and get current track, etc. |
Older software
Ubit GUI Toolkit: A molecular architecture for building GUIs
See the Ubit page.
Licence: LGPL 3 or or any later version.
Ubit is a GUI toolkit that combines the advantages of scene graph and widget based toolkits. The Ubit3D extension makes it possible to display 2D GUIs in a 3D representation. UMS is a X11 interaction server that provides multiple and remote pointers. |
XXL: Visual/textual equivalence and sketch drawing for building GUIs
See the XXL page.
Licence: LGPL 3 or or any later version.
XXL is a GUI builder that allows specifying graphical interfaces visually, textually or by drawing sketches. Visual and textual representations are always synchronized and they can be changed while the application is running. |