JSAPI.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
  2. // Please see LICENSE.md in repository root for license information
  3. // https://github.com/AtomicGameEngine/AtomicGameEngine
  4. #pragma once
  5. #include <Duktape/duktape.h>
  6. typedef void* JS_HEAP_PTR;
  7. #include "../Javascript/JSVM.h"
  8. #define JS_GLOBALSTASH_INDEX_COMPONENTS 0
  9. #define JS_GLOBALSTASH_INDEX_NODE_REGISTRY 1
  10. #define JS_GLOBALSTASH_VARIANTMAP_CACHE 2
  11. // indexers for instance objects
  12. #define JS_INSTANCE_INDEX_FINALIZED 0
  13. namespace Atomic
  14. {
  15. class JSVM;
  16. class Object;
  17. void js_class_declare_internal(JSVM* vm, void* uniqueClassID, const char* package, const char* classname, duk_c_function constructor);
  18. template<typename T>
  19. void js_class_declare(JSVM* vm, const char* package, const char* classname, duk_c_function constructor)
  20. {
  21. void* uniqueID = (void*) T::GetTypeNameStatic().CString();
  22. js_class_declare_internal(vm, uniqueID, package, classname, constructor);
  23. }
  24. void js_constructor_basecall(duk_context* ctx, const char* package, const char* baseclass);
  25. void js_setup_prototype(JSVM* vm, const char* package, const char* classname, const char* basePackage, const char* basename, bool hasProperties = false);
  26. void js_class_push_propertyobject(JSVM* vm, const char* package, const char* classname);
  27. void js_class_get_prototype(duk_context* ctx, const char* package, const char *classname);
  28. void js_class_get_constructor(duk_context* ctx, const char* package, const char *classname);
  29. /// Pushes variant value or undefined if can't be pushed
  30. void js_push_variant(duk_context* ctx, const Variant &v);
  31. void js_push_variantmap(duk_context* ctx, const VariantMap &vmap);
  32. void js_to_variant(duk_context* ctx, int variantIdx, Variant &v);
  33. void js_object_to_variantmap(duk_context* ctx, int objIdx, VariantMap &v);
  34. }