Indigo 0.95 Main page |
Main pageThe sources can be downloaded at http://www.uwesalomon.de- /code- /indigo- /indigo.tar.gz. They include this HTML documentation, too. If you have any questions, requests, advice, bugs or patches ─ send them to post@uwesalomon.de. I would really appreciate some feedback, especially for the Mac OS X parts of the library, as i cannot test them. Summary
Contents of the libraryToolsIndigo contains some standard template containers in the spirit of the Qt 4.0 container classes (http://doc.trolltech.com/4.0/containers.html). I will try as good as i can to imitate their API and behaviour, and to make them very fast as well. The Qt containers are STL-compatible, thus hopefully mine are too. In the last time more and more classes from other parts of Qt made it into the library. Currently there are 6 containers finished: Vector, List, LinkedList, Map, Hash and Set. The String is essentially finished ─ the missing features are either too complex or make no sense to implement without a port of all localization functionality. CoreI have written a dynamic library loader for Win32, Linux and Mac OS X >= 10.3, which is necessary for the ICU imports to work: DynamicLoader. Indigo contains an implementation of Signals and slots with the class CmdTarget (to receive signals) and the struct Signal to send them. They are the first classes that somehow relate to Qt counterparts, but are not designed to perfectly mimic them. This is mostly due to the inherent differences between D and C++. Input/outputThere is a platform-independent File class built on the abstract base class IODevice, and there is already a DataStream that can store and load binary data. All containers can serialize their contents into this stream, and it is very easy for you to make your types serializable through DataStream, too! In the future there will be a TextStream class as well, to provide text parsing. I18nCurrently i am working on the internationalisation modules. I have included the UTF Conversion functions (high-performant and fully Unicode compliant), and written a full Message translation implementation, complete with two helper programs imupdate and imrelease. There are the basic Unicode character properties in indigo.i18n.characters. The Message formatting module is already partly working, as well as the Locale, where floating point and date formatting will be added next. The ICU dependency will be dropped as soon as this part of the library is finished. XmlThere is a simple port of the Expat XML parser in indigo.xml.expat. It is for internal purposes, but if you need it desperately... Compiling programs with IndigoThese are the external dependencies you may have to fulfill, depending on which modules of Indigo you use:
Personally, i prefer to use the Build utility, which you can download at http://www.dsource.org/projects/build/. Put a symbolic link to the Indigo “src” directory into your application’s source directory, rename it to “indigo”, and simply call Build with the name of your main source file. This makes sure that only those parts of Indigo are linked in that are actually needed, for example the whole indigo.icu tree is not needed if you do not use String, and this will save you from downloading and installing the ICU library. Other documentsThere are some hints on which container to choose (Container types) to get most out of the possible performance. To see how much is possible, i have tried to verify the Performance of the containers. |