BsScriptHString.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "Wrappers/BsScriptHString.h"
  4. #include "BsScriptMeta.h"
  5. #include "BsMonoField.h"
  6. #include "BsMonoClass.h"
  7. #include "BsMonoManager.h"
  8. #include "BsMonoUtil.h"
  9. namespace bs
  10. {
  11. ScriptHString::ScriptHString(MonoObject* instance, const HString& string)
  12. :ScriptObject(instance), mString(string)
  13. { }
  14. void ScriptHString::initRuntimeData()
  15. {
  16. metaData.scriptClass->addInternalCall("Internal_CreateInstance", (void*)&ScriptHString::internal_createInstance);
  17. metaData.scriptClass->addInternalCall("Internal_SetParameter", (void*)&ScriptHString::internal_setParameter);
  18. metaData.scriptClass->addInternalCall("Internal_GetValue", (void*)&ScriptHString::internal_getValue);
  19. }
  20. void ScriptHString::internal_createInstance(MonoObject* instance, MonoString* identifier, UINT32 tableId)
  21. {
  22. HString string(MonoUtil::monoToString(identifier), tableId);
  23. new (bs_alloc<ScriptHString>()) ScriptHString(instance, string);
  24. }
  25. void ScriptHString::internal_setParameter(ScriptHString* nativeInstance, UINT32 idx, MonoString* value)
  26. {
  27. nativeInstance->mString.setParameter(idx, MonoUtil::monoToString(value));
  28. }
  29. void ScriptHString::internal_getValue(ScriptHString* nativeInstance, MonoString** value)
  30. {
  31. MonoUtil::referenceCopy(value, (MonoObject*)MonoUtil::stringToMono(nativeInstance->mString.getValue()));
  32. }
  33. }