Application Core Library is a C++ library, built from a stripped-down version of the utility classes used in the Torque family of engines. It includes basic cross-platform types and classes for building applications on top of.
The main function of the ACL is to provide a solid basis for developing applications in a cross-platform way. In addition to the code reused from Torque, the ACL includes a generic C API plugin system, that can be used to implement dynamic library plugins.
There are three general classifications of systems provided by the ACL. The core
path contains most of the classes for writing applications that you'll interact with. The platform
directory contains an abstracted platform layer, that provides access to OS-specific services (e.g. Threads, FileSystem, Dynamic Libraries). The plugin
directory contains a C-interface based plugin system skeleton, to allow compiler independent exporting of functions for use in other libraries.
When writing any substantial C++ application, solid core classes are essential. The ACL provides an impressive suite of core classes for building your application on top of.
- Compiler independent types
- Compiler independent string functions
- String class with support for pointer string comparisons.
- Path class
- Unicode string support
- Stream classes
- Container classes, e.g. Vector, List, Dictionary, Pair
- Compiler independent aligned memory allocation functions
- Ultra-fast delegates and multi-cast delegates
- Reference-counted pointer classes
- Type rebinding for implementation-specific abstracted class creation.
- Various Utilities: endian conversion, crc calculation, compiler intrinsics, compile-time and runtime assertions, ...
TODO
TODO
ACL uses premake4 to generate Xcode, Visual Studio, and make projects, putting them in the projects
subfolder. It geneates projects for the library, gtest, and the test-runner application.
There are scripts in the root directory for generating projects on each platform, and for building and running the test-suite, e.g.
Generate make project on linux:
./generateLinux.sh
Build and run the test-suite on OSX:
./testOSX.sh
Generate Visual Studio projects on Windows:
./generateWindows.bat
ACL is setup to do continuous integration building and testing on Ubuntu linux, via travis-ci. It uses the gtest library for testing the C++ classes. The test-suite is still relatively small, but it's a good start. The test-suite passes on OSX, Windows, and Linux platforms.
The ACL shares roots with the Torque family of game engines from GarageGames, and as such, it would never have been possible without the many people who contributed to Torque over the years. I am eternally grateful for all the hard work they have put forward, and how it has made this library so brutally good at what it does.
Application Core Library is freely distributable under the MIT license
Copyright (c) 2009-2012 DuJardin Consulting, LLC
Copyright (c) 2009 GarageGames, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.