OOP is a macro langage fully compatible with Arma3 engine wich transform SQF in SQF++.
As certainly a part of you know, it's a long time i develop now in OO way with ARMA and OOP. It is definitely great and allowed me to develop a large number of projects that would have been complicated to realize with simply sqf. This type of language will certainly be used more and more in arma in the years to come
As the original author of preprocessor file no longer maintain it since end of 2013, and totaly delete its project since a while, and i still to use and improve it, i fork it now.
I just create a GIT PROJECT under GPL3 (original licence when i retrieve oop.h in RBS project).
All contributions are welcome :) I also create a Wiki that explains how to use OOP
Human-readable syntax that closely resembles PHP's OOP integration.
Extensively documented source-code for ease-of-use.
Only one header file, and it's fully macro-based, and only executed by the preprocessor.
Implements full class-based object inheritance.
Compiles to full-speed SQF code, so no need for run-time interpretation!
Allows for public, protected, and private class members, for instituting complex objects and inheritance.
Full support for polymorphism (to the limits of the SQF syntax).
Small memory footprint - all functions are static, and no code is unnecessarily duplicated.
Support for constructors and deconstructors.
Completely recursive via the MEMBER macro.
Allows for static variables, which are persistent to all classes of the same type.
Note: Objects cannot be copied to other machines just by sending the object variable - all data members (object variables) need to be serialized (preferably to an array), transferred, and then added to a new object on the remote machine.
Installation / Usage:
For usage instructions and information of how to use the OOP Language please refer to the wiki:
You can also retrieve a set of existing OOP class
A sublime addon has been developed to facilitate the development
reference : Initial project
Add Exceptions management
Generate an exception when a member is not declared, or not declared with right parameters
Add SUPER() for inheritance of code
Add SPAWN_MEMBER for async code
New macro: NEW, DELETE for call constructor methods :
New macro: STATIC_FUNC macro to call static method
STATIC_FUNC(CLASS, "function", "parameter");
New macro : UI_VARIABLE(typeStr,varName) declare UI control
New macro: STATIC_UI_VARIABLE(typeStr,varName) declare UI static control
"protected" call CLASS : to protect against overwrite the CLASS (like compileFinal)
New macro : MEMBER("this", nil) replace _self
New macro: DELETE_UI_VARIABLE(varName);
New macro : UIVAR_DFT_FUNC, SUIVAR_DFT_FUNC
The static function are also already avalaible though the new release (master branch) via the "static" keyword
- BI forums