diff options
Diffstat (limited to 'hhvm')
-rw-r--r-- | hhvm/extension.cpp | 103 | ||||
-rw-r--r-- | hhvm/extensionimpl.h | 55 | ||||
-rw-r--r-- | hhvm/includes.h | 53 |
3 files changed, 211 insertions, 0 deletions
diff --git a/hhvm/extension.cpp b/hhvm/extension.cpp new file mode 100644 index 0000000..9685b32 --- /dev/null +++ b/hhvm/extension.cpp @@ -0,0 +1,103 @@ +/** + * Extension.cpp + * + * @author Emiel Bruijntjes <emiel.bruijntjes@copernica.com> + * @copyright 2013, 2014 Copernica BV + */ +#include "includes.h" + +/** + * Set up namespace + */ +namespace Php { + +/** + * Constructor that defines a number of functions right away + * @param name Extension name + * @param version Extension version string + */ +Extension::Extension(const char *name, const char *version) : + Namespace(""), _impl(new ExtensionImpl(this, name, version)) {} + +/** + * Destructor + */ +Extension::~Extension() +{ + // get rid of the implementation object + delete _impl; +} + +/** + * Register a function to be called when the PHP engine is ready + * @param callback + * @return Extension + */ +Extension &Extension::onStartup(const Callback &callback) +{ + // pass on to the implementation + _impl->onStartup(callback); + + // allow chaining + return *this; +} + +/** + * Register a function to be called when the PHP engine is going to stop + * @param callback + * @return Extension + */ +Extension &Extension::onShutdown(const Callback &callback) +{ + // pass on to the implementation + _impl->onShutdown(callback); + + // allow chaining + return *this; +} + +/** + * Register a callback that is called at the beginning of each pageview/request + * @param callback + */ +Extension &Extension::onRequest(const Callback &callback) +{ + // pass on to the implementation + _impl->onRequest(callback); + + // allow chaining + return *this; +} + +/** + * Register a callback that is called to cleanup things after a pageview/request + * @param callback + */ +Extension &Extension::onIdle(const Callback &callback) +{ + // pass on to the implementation + _impl->onIdle(callback); + + // allow chaining + return *this; +} + +/** + * Retrieve the module pointer + * + * This is the memory address that should be exported by the get_module() + * function. + * + * @return void* + */ +void *Extension::module() +{ + // pass on to the implementation + return _impl->module(); +} + +/** + * End of namespace + */ +} + diff --git a/hhvm/extensionimpl.h b/hhvm/extensionimpl.h new file mode 100644 index 0000000..deb80a6 --- /dev/null +++ b/hhvm/extensionimpl.h @@ -0,0 +1,55 @@ +/** + * ExtensionImpl.h + * + * Implementation of the extension object for the HHVM engine + * + * @author Emiel Bruijntjes <emiel.bruijntjes@copernica.com> + * @copyright 2014 Copernica BV + */ + +/** + * Namespace + */ +namespace Php { + +/** + * Class definition + */ +class ExtensionImpl : public ExtensionBase +{ +private: + /** + * Pointer to the extension object that is filled by the extension programmer + * @var Extension + */ + Extension *_data; + +public: + /** + * Constructor + * @param data Pointer to the extension object created by the extension programmer + * @param name Name of the extension + * @param version Version identifier of the extension + */ + ExtensionImpl(Extension *data, const char *name, const char *version) : ExtensionBase(data) {} + + /** + * Destructor + */ + virtual ~ExtensionImpl() {} + + /** + * Pointer to the module that is loaded by HHVM + * @return void* + */ + void *module() + { + return nullptr; + } +}; + +/** + * End of namespace + */ +} + diff --git a/hhvm/includes.h b/hhvm/includes.h new file mode 100644 index 0000000..b6f25c1 --- /dev/null +++ b/hhvm/includes.h @@ -0,0 +1,53 @@ +/** + * Includes.h + * + * All includes for compiling the HHVM implementation of PHP-CPP + * + * @author Emiel Bruijntjes <emiel.bruijntjes@copernica.com> + * @copyright 2014 Copernica BV + */ + +/** + * Standard C and C++ libraries + */ +#include <functional> +#include <list> +#include <memory> +#include <vector> +#include <map> +#include <string.h> + +/** + * HHVM includes + */ + + +/** + * Public include files + */ +#include "../include/type.h" +#include "../include/hashparent.h" +#include "../include/value.h" +#include "../include/parameters.h" +#include "../include/classtype.h" +#include "../include/argument.h" +#include "../include/modifiers.h" +#include "../include/classbase.h" +#include "../include/interface.h" +#include "../include/iterator.h" +#include "../include/traversable.h" +#include "../include/serializable.h" +#include "../include/class.h" +#include "../include/namespace.h" +#include "../include/extension.h" + +/** + * Generic implementation header files + */ +#include "../common/extensionbase.h" + +/** + * Specific HHVM header files for the implementation only + */ +#include "extensionimpl.h" + |