Skip to content
This repository has been archived by the owner on Dec 3, 2023. It is now read-only.

worldforge/atlas-cpp

Repository files navigation

DEPRECATED

This code has been moved to the Worldforge repository.

Atlas-C++

Join us on Gitter! Appveyor build status Travis build Status Github build status

Welcome to Atlas-C++, the C++ reference implementation of the Atlas protocol. The Atlas protocol is the primary protocol by which servers and clients in the WorldForge system communicate.

Installation

If you intend to build this as a prerequisite for the Ember client or the Cyphesis server we strongly suggest that you use the Hammer tool to compile it. This is script provided by the Worldforge project which will download and install all of the required libraries and components used by Worldforge.

Alternatively you can use Conan to install all dependencies.

conan remote add worldforge https://artifactory.ogenvik.org/artifactory/api/conan/conan
conan install tools/conan --build missing
cmake --preset conan-release
cmake --build --preset conan-release

Otherwise the library can most easily be built through the following commands.

mkdir build && cd build
cmake ..
make -j all install

Tests

The test suite can be built and run using the check target. For example:

make check

or

cmake --build --preset conan-release --target check

API documentation

If Doxygen is available API documentation can be generated using the dox target. For example:

make dox

or

cmake --build --preset conan-release --target dox

Version

This is Atlas-C++ 0.7.x, the latest development version of Atlas-C++. The 0.6.x branch will contain NO API CHANGES. The 0.7.x branch is completely experimental and may not be easy to track. Any changes affecting the API should go into 0.7.x, as should any features which are not completely stable.

Documentation

To generate the documentation, simply configure the tree then execute the "docs" target (for example make docs). This will use doxygen to generate the documentation, which will then reside in doc/.

Please read the file HACKING.md carefully before working on Atlas-C++.

The specification

The actual Atlas specification can be found under protocol/spec as a series of filed ending in the ".def" suffix. These files represent the canonical Atlas definition.

In order to generate the C++ code these files are translated into a protocol/spec/xml/atlas.xml file through the use of the protocol/spec/tools/def2xml.py file, which requires Python. Normally this would be performed by the CMake build script.

This file (protocol/spec/xml/atlas.xml) in turn gets translated into C++ files through the use of the Atlas/Objects/gen_cpp.py Python script (which requires Python).This would also normally be performed by the CMake build script.

Thus, in order to change the protocol one would perform these steps:

  • Update any of the files in protocol/spec
  • Rebuild the project (through the builder used with CMake)

You shouldn't touch the protocol/spec/xml/atlas.xml file, nor any of the C++ files generated (these are identified by having "Automatically generated using gen_cpp.py." added to the top of them).

There are some areas of improvements here. Chief amongst them would be

  • Don't use two different formats: either standardize on only using "atlas.xml", or standardize on only using the .def files

Licensing

Atlas-C++ is licensed under the GNU Lesser General Public License. Please see the file COPYING for details as to its distribution.

Atlas-C++ is provided AS IS with ABSOLUTELY NO WARRANTY. Please see the file COPYING for details.

Contact

Please see the AUTHORS file for contact information.

How to help

If you're interested in helping out with development you should check out these resources: