Manual_Core.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. // Copyright (c) 2008-2023 the Urho3D project
  2. // License: MIT
  3. #pragma once
  4. #include "../Core/Spline.h"
  5. #include "../Core/Variant.h"
  6. namespace Urho3D
  7. {
  8. // const char** AttributeInfo::enumNames_ | File: ../Core/Attribute.h
  9. template <class T> CScriptArray* AttributeInfo_GetEnumNames(T* ptr)
  10. {
  11. Vector<String> enumNames;
  12. const char** enumNamePtrs = ptr->enumNames_;
  13. while (enumNamePtrs && *enumNamePtrs)
  14. enumNames.Push(*enumNamePtrs++);
  15. return VectorToArray<String>(enumNames, "Array<String>");
  16. }
  17. #define REGISTER_MEMBERS_MANUAL_PART_AttributeInfo() \
  18. /* const char** AttributeInfo::enumNames_ | File: ../Core/Attribute.h */ \
  19. engine->RegisterObjectMethod(className, "Array<String>@ get_enumNames() const", AS_FUNCTION_OBJLAST(AttributeInfo_GetEnumNames<T>), AS_CALL_CDECL_OBJLAST);
  20. // ========================================================================================
  21. // StringVector ResourceRefList::names_ | File: ../Core/Variant.h
  22. template <class T> void ResourceRefList_Resize(i32 size, ResourceRefList* ptr)
  23. {
  24. ptr->names_.Resize(size);
  25. }
  26. // StringVector ResourceRefList::names_ | File: ../Core/Variant.h
  27. template <class T> unsigned ResourceRefList_GetSize(ResourceRefList* ptr)
  28. {
  29. return ptr->names_.Size();
  30. }
  31. // StringVector ResourceRefList::names_ | File: ../Core/Variant.h
  32. template <class T> bool ResourceRefList_IsEmpty(ResourceRefList* ptr)
  33. {
  34. return ptr->names_.Size() == 0;
  35. }
  36. // StringVector ResourceRefList::names_ | File: ../Core/Variant.h
  37. template <class T> void ResourceRefList_SetName(i32 index, const String& name, ResourceRefList* ptr)
  38. {
  39. if (index < 0 || index >= ptr->names_.Size())
  40. {
  41. asGetActiveContext()->SetException("Index out of bounds");
  42. return;
  43. }
  44. ptr->names_[index] = name;
  45. }
  46. // StringVector ResourceRefList::names_ | File: ../Core/Variant.h
  47. template <class T> const String& ResourceRefList_GetName(i32 index, ResourceRefList* ptr)
  48. {
  49. if (index < 0 || index >= ptr->names_.Size())
  50. {
  51. asGetActiveContext()->SetException("Index out of bounds");
  52. return String::EMPTY;
  53. }
  54. return ptr->names_[index];
  55. }
  56. #define REGISTER_MEMBERS_MANUAL_PART_ResourceRefList() \
  57. /* StringVector ResourceRefList::names_ | File: ../Core/Variant.h */ \
  58. engine->RegisterObjectMethod(className, "void Resize(int)", AS_FUNCTION_OBJLAST(ResourceRefList_Resize<T>), AS_CALL_CDECL_OBJLAST); \
  59. engine->RegisterObjectMethod(className, "uint get_length() const", AS_FUNCTION_OBJLAST(ResourceRefList_GetSize<T>), AS_CALL_CDECL_OBJLAST); \
  60. engine->RegisterObjectMethod(className, "bool get_empty() const", AS_FUNCTION_OBJLAST(ResourceRefList_IsEmpty<T>), AS_CALL_CDECL_OBJLAST); \
  61. engine->RegisterObjectMethod(className, "void set_names(int, const String&in) const", AS_FUNCTION_OBJLAST(ResourceRefList_SetName<T>), AS_CALL_CDECL_OBJLAST); \
  62. engine->RegisterObjectMethod(className, "const String& get_names(int) const", AS_FUNCTION_OBJLAST(ResourceRefList_GetName<T>), AS_CALL_CDECL_OBJLAST);
  63. // ========================================================================================
  64. // explicit Spline::Spline(const Vector<Variant>& knots, InterpolationMode mode = BEZIER_CURVE) | File: ../Core/Spline.h
  65. static void Spline_Spline(CScriptArray* arr, InterpolationMode mode, Spline* ptr)
  66. {
  67. new(ptr) Spline(ArrayToVector<Variant>(arr), mode);
  68. }
  69. #define REGISTER_CLASS_MANUAL_PART_Spline() \
  70. /* explicit Spline::Spline(const Vector<Variant>& knots, InterpolationMode mode = BEZIER_CURVE) | File: ../Core/Spline.h */ \
  71. engine->RegisterObjectBehaviour("Spline", asBEHAVE_CONSTRUCT, "void f(Array<Variant>@+, InterpolationMode = BEZIER_CURVE)", AS_FUNCTION(Spline_Spline), AS_CALL_CDECL_OBJLAST);
  72. // const VariantVector& Spline::GetKnots() const | File: ../Core/Spline.h
  73. template <class T> CScriptArray* Spline_GetKnots(T* ptr)
  74. {
  75. return VectorToArray(ptr->GetKnots(), "Array<Variant>");
  76. }
  77. // void Spline::SetKnots(const Vector<Variant>& knots) | File: ../Core/Spline.h
  78. template <class T> void Spline_SetKnots(CScriptArray* arr, T* ptr)
  79. {
  80. ptr->SetKnots(ArrayToVector<Variant>(arr));
  81. }
  82. // void Spline::SetKnot(const Variant& knot, unsigned index) | File: ../Core/Spline.h
  83. template <class T> void Spline_SetKnot(unsigned index, const Variant& in, T* ptr)
  84. {
  85. ptr->SetKnot(in, index);
  86. }
  87. #define REGISTER_MEMBERS_MANUAL_PART_Spline() \
  88. /* const VariantVector& Spline::GetKnots() const | File: ../Core/Spline.h */ \
  89. engine->RegisterObjectMethod(className, "Array<Variant>@ get_knots() const", AS_FUNCTION_OBJLAST(Spline_GetKnots<T>), AS_CALL_CDECL_OBJLAST); \
  90. \
  91. /* void Spline::SetKnots(const Vector<Variant>& knots) | File: ../Core/Spline.h */ \
  92. engine->RegisterObjectMethod(className, "void set_knots(Array<Variant>@+)", AS_FUNCTION_OBJLAST(Spline_SetKnots<T>), AS_CALL_CDECL_OBJLAST); \
  93. \
  94. /* void Spline::SetKnot(const Variant& knot, unsigned index) | File: ../Core/Spline.h */ \
  95. engine->RegisterObjectMethod(className, "void set_knot(uint, const Variant&in)", AS_FUNCTION_OBJLAST(Spline_SetKnot<T>), AS_CALL_CDECL_OBJLAST);
  96. }