|
33 | 33 |
|
34 | 34 | #include <godot_cpp/core/object.hpp>
|
35 | 35 | #include <godot_cpp/variant/typed_array.hpp>
|
36 |
| -#include <godot_cpp/variant/typed_dictionary.hpp> |
37 | 36 | #include <godot_cpp/variant/variant.hpp>
|
38 | 37 |
|
39 | 38 | #include <gdextension_interface.h>
|
@@ -414,206 +413,6 @@ MAKE_TYPED_ARRAY_INFO(IPAddress, Variant::STRING)
|
414 | 413 |
|
415 | 414 | #undef MAKE_TYPED_ARRAY_INFO
|
416 | 415 |
|
417 |
| -template <typename K, typename V> |
418 |
| -struct PtrToArg<TypedDictionary<K, V>> { |
419 |
| - _FORCE_INLINE_ static TypedDictionary<K, V> convert(const void *p_ptr) { |
420 |
| - return TypedDictionary<K, V>(*reinterpret_cast<const Dictionary *>(p_ptr)); |
421 |
| - } |
422 |
| - typedef Dictionary EncodeT; |
423 |
| - _FORCE_INLINE_ static void encode(TypedDictionary<K, V> p_val, void *p_ptr) { |
424 |
| - *(Dictionary *)p_ptr = p_val; |
425 |
| - } |
426 |
| -}; |
427 |
| - |
428 |
| -template <typename K, typename V> |
429 |
| -struct PtrToArg<const TypedDictionary<K, V> &> { |
430 |
| - typedef Dictionary EncodeT; |
431 |
| - _FORCE_INLINE_ static TypedDictionary<K, V> |
432 |
| - convert(const void *p_ptr) { |
433 |
| - return TypedDictionary<K, V>(*reinterpret_cast<const Dictionary *>(p_ptr)); |
434 |
| - } |
435 |
| -}; |
436 |
| - |
437 |
| -template <typename K, typename V> |
438 |
| -struct GetTypeInfo<TypedDictionary<K, V>> { |
439 |
| - static constexpr GDExtensionVariantType VARIANT_TYPE = GDEXTENSION_VARIANT_TYPE_DICTIONARY; |
440 |
| - static constexpr GDExtensionClassMethodArgumentMetadata METADATA = GDEXTENSION_METHOD_ARGUMENT_METADATA_NONE; |
441 |
| - static inline PropertyInfo get_class_info() { |
442 |
| - return PropertyInfo(Variant::Type::DICTIONARY, String(), PROPERTY_HINT_DICTIONARY_TYPE, vformat("%s;%s", K::get_class_static(), V::get_class_static())); |
443 |
| - } |
444 |
| -}; |
445 |
| - |
446 |
| -template <typename K, typename V> |
447 |
| -struct GetTypeInfo<const TypedDictionary<K, V> &> { |
448 |
| - static constexpr GDExtensionVariantType VARIANT_TYPE = GDEXTENSION_VARIANT_TYPE_DICTIONARY; |
449 |
| - static constexpr GDExtensionClassMethodArgumentMetadata METADATA = GDEXTENSION_METHOD_ARGUMENT_METADATA_NONE; |
450 |
| - static inline PropertyInfo get_class_info() { |
451 |
| - return PropertyInfo(Variant::Type::DICTIONARY, String(), PROPERTY_HINT_DICTIONARY_TYPE, vformat("%s;%s", K::get_class_static(), V::get_class_static())); |
452 |
| - } |
453 |
| -}; |
454 |
| - |
455 |
| -#define MAKE_TYPED_DICTIONARY_INFO_WITH_OBJECT(m_type, m_variant_type) \ |
456 |
| - template <typename T> \ |
457 |
| - struct GetTypeInfo<TypedDictionary<T, m_type>> { \ |
458 |
| - static constexpr GDExtensionVariantType VARIANT_TYPE = GDEXTENSION_VARIANT_TYPE_DICTIONARY; \ |
459 |
| - static constexpr GDExtensionClassMethodArgumentMetadata METADATA = GDEXTENSION_METHOD_ARGUMENT_METADATA_NONE; \ |
460 |
| - static inline PropertyInfo get_class_info() { \ |
461 |
| - return PropertyInfo(Variant::Type::DICTIONARY, String(), PROPERTY_HINT_DICTIONARY_TYPE, \ |
462 |
| - vformat("%s;%s", T::get_class_static(), m_variant_type == Variant::Type::NIL ? "Variant" : Variant::get_type_name(m_variant_type).utf8().get_data())); \ |
463 |
| - } \ |
464 |
| - }; \ |
465 |
| - template <typename T> \ |
466 |
| - struct GetTypeInfo<const TypedDictionary<T, m_type> &> { \ |
467 |
| - static constexpr GDExtensionVariantType VARIANT_TYPE = GDEXTENSION_VARIANT_TYPE_DICTIONARY; \ |
468 |
| - static constexpr GDExtensionClassMethodArgumentMetadata METADATA = GDEXTENSION_METHOD_ARGUMENT_METADATA_NONE; \ |
469 |
| - static inline PropertyInfo get_class_info() { \ |
470 |
| - return PropertyInfo(Variant::Type::DICTIONARY, String(), PROPERTY_HINT_DICTIONARY_TYPE, \ |
471 |
| - vformat("%s;%s", T::get_class_static(), m_variant_type == Variant::Type::NIL ? "Variant" : Variant::get_type_name(m_variant_type).utf8().get_data())); \ |
472 |
| - } \ |
473 |
| - }; \ |
474 |
| - template <typename T> \ |
475 |
| - struct GetTypeInfo<TypedDictionary<m_type, T>> { \ |
476 |
| - static constexpr GDExtensionVariantType VARIANT_TYPE = GDEXTENSION_VARIANT_TYPE_DICTIONARY; \ |
477 |
| - static constexpr GDExtensionClassMethodArgumentMetadata METADATA = GDEXTENSION_METHOD_ARGUMENT_METADATA_NONE; \ |
478 |
| - static inline PropertyInfo get_class_info() { \ |
479 |
| - return PropertyInfo(Variant::Type::DICTIONARY, String(), PROPERTY_HINT_DICTIONARY_TYPE, \ |
480 |
| - vformat("%s;%s", m_variant_type == Variant::Type::NIL ? "Variant" : Variant::get_type_name(m_variant_type).utf8().get_data(), T::get_class_static())); \ |
481 |
| - } \ |
482 |
| - }; \ |
483 |
| - template <typename T> \ |
484 |
| - struct GetTypeInfo<const TypedDictionary<m_type, T> &> { \ |
485 |
| - static constexpr GDExtensionVariantType VARIANT_TYPE = GDEXTENSION_VARIANT_TYPE_DICTIONARY; \ |
486 |
| - static constexpr GDExtensionClassMethodArgumentMetadata METADATA = GDEXTENSION_METHOD_ARGUMENT_METADATA_NONE; \ |
487 |
| - static inline PropertyInfo get_class_info() { \ |
488 |
| - return PropertyInfo(Variant::Type::DICTIONARY, String(), PROPERTY_HINT_DICTIONARY_TYPE, \ |
489 |
| - vformat("%s;%s", m_variant_type == Variant::Type::NIL ? "Variant" : Variant::get_type_name(m_variant_type).utf8().get_data(), T::get_class_static())); \ |
490 |
| - } \ |
491 |
| - }; |
492 |
| - |
493 |
| -#define MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type_key, m_variant_type_key, m_type_value, m_variant_type_value) \ |
494 |
| - template <> \ |
495 |
| - struct GetTypeInfo<TypedDictionary<m_type_key, m_type_value>> { \ |
496 |
| - static constexpr GDExtensionVariantType VARIANT_TYPE = GDEXTENSION_VARIANT_TYPE_DICTIONARY; \ |
497 |
| - static constexpr GDExtensionClassMethodArgumentMetadata METADATA = GDEXTENSION_METHOD_ARGUMENT_METADATA_NONE; \ |
498 |
| - static inline PropertyInfo get_class_info() { \ |
499 |
| - return PropertyInfo(Variant::Type::DICTIONARY, String(), PROPERTY_HINT_DICTIONARY_TYPE, \ |
500 |
| - vformat("%s;%s", m_variant_type_key == Variant::Type::NIL ? "Variant" : Variant::get_type_name(m_variant_type_key).utf8().get_data(), \ |
501 |
| - m_variant_type_value == Variant::Type::NIL ? "Variant" : Variant::get_type_name(m_variant_type_value).utf8().get_data())); \ |
502 |
| - } \ |
503 |
| - }; \ |
504 |
| - template <> \ |
505 |
| - struct GetTypeInfo<const TypedDictionary<m_type_key, m_type_value> &> { \ |
506 |
| - static constexpr GDExtensionVariantType VARIANT_TYPE = GDEXTENSION_VARIANT_TYPE_DICTIONARY; \ |
507 |
| - static constexpr GDExtensionClassMethodArgumentMetadata METADATA = GDEXTENSION_METHOD_ARGUMENT_METADATA_NONE; \ |
508 |
| - static inline PropertyInfo get_class_info() { \ |
509 |
| - return PropertyInfo(Variant::Type::DICTIONARY, String(), PROPERTY_HINT_DICTIONARY_TYPE, \ |
510 |
| - vformat("%s;%s", m_variant_type_key == Variant::Type::NIL ? "Variant" : Variant::get_type_name(m_variant_type_key).utf8().get_data(), \ |
511 |
| - m_variant_type_value == Variant::Type::NIL ? "Variant" : Variant::get_type_name(m_variant_type_value).utf8().get_data())); \ |
512 |
| - } \ |
513 |
| - }; |
514 |
| - |
515 |
| -#define MAKE_TYPED_DICTIONARY_INFO_NIL(m_type, m_variant_type) \ |
516 |
| - MAKE_TYPED_DICTIONARY_INFO_WITH_OBJECT(m_type, m_variant_type) \ |
517 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, bool, Variant::BOOL) \ |
518 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, uint8_t, Variant::INT) \ |
519 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, int8_t, Variant::INT) \ |
520 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, uint16_t, Variant::INT) \ |
521 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, int16_t, Variant::INT) \ |
522 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, uint32_t, Variant::INT) \ |
523 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, int32_t, Variant::INT) \ |
524 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, uint64_t, Variant::INT) \ |
525 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, int64_t, Variant::INT) \ |
526 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, float, Variant::FLOAT) \ |
527 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, double, Variant::FLOAT) \ |
528 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, String, Variant::STRING) \ |
529 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, Vector2, Variant::VECTOR2) \ |
530 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, Vector2i, Variant::VECTOR2I) \ |
531 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, Rect2, Variant::RECT2) \ |
532 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, Rect2i, Variant::RECT2I) \ |
533 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, Vector3, Variant::VECTOR3) \ |
534 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, Vector3i, Variant::VECTOR3I) \ |
535 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, Transform2D, Variant::TRANSFORM2D) \ |
536 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, Plane, Variant::PLANE) \ |
537 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, Quaternion, Variant::QUATERNION) \ |
538 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, AABB, Variant::AABB) \ |
539 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, Basis, Variant::BASIS) \ |
540 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, Transform3D, Variant::TRANSFORM3D) \ |
541 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, Color, Variant::COLOR) \ |
542 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, StringName, Variant::STRING_NAME) \ |
543 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, NodePath, Variant::NODE_PATH) \ |
544 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, RID, Variant::RID) \ |
545 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, Callable, Variant::CALLABLE) \ |
546 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, Signal, Variant::SIGNAL) \ |
547 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, Dictionary, Variant::DICTIONARY) \ |
548 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, Array, Variant::ARRAY) \ |
549 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, PackedByteArray, Variant::PACKED_BYTE_ARRAY) \ |
550 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, PackedInt32Array, Variant::PACKED_INT32_ARRAY) \ |
551 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, PackedInt64Array, Variant::PACKED_INT64_ARRAY) \ |
552 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, PackedFloat32Array, Variant::PACKED_FLOAT32_ARRAY) \ |
553 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, PackedFloat64Array, Variant::PACKED_FLOAT64_ARRAY) \ |
554 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, PackedStringArray, Variant::PACKED_STRING_ARRAY) \ |
555 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, PackedVector2Array, Variant::PACKED_VECTOR2_ARRAY) \ |
556 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, PackedVector3Array, Variant::PACKED_VECTOR3_ARRAY) \ |
557 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, PackedVector4Array, Variant::PACKED_VECTOR4_ARRAY) \ |
558 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, PackedColorArray, Variant::PACKED_COLOR_ARRAY) \ |
559 |
| - /* MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, IPAddress, Variant::STRING) */ |
560 |
| - |
561 |
| -#define MAKE_TYPED_DICTIONARY_INFO(m_type, m_variant_type) \ |
562 |
| - MAKE_TYPED_DICTIONARY_INFO_EXPANDED(m_type, m_variant_type, Variant, Variant::NIL) \ |
563 |
| - MAKE_TYPED_DICTIONARY_INFO_NIL(m_type, m_variant_type) |
564 |
| - |
565 |
| -MAKE_TYPED_DICTIONARY_INFO_NIL(Variant, Variant::NIL) |
566 |
| -MAKE_TYPED_DICTIONARY_INFO(bool, Variant::BOOL) |
567 |
| -MAKE_TYPED_DICTIONARY_INFO(uint8_t, Variant::INT) |
568 |
| -MAKE_TYPED_DICTIONARY_INFO(int8_t, Variant::INT) |
569 |
| -MAKE_TYPED_DICTIONARY_INFO(uint16_t, Variant::INT) |
570 |
| -MAKE_TYPED_DICTIONARY_INFO(int16_t, Variant::INT) |
571 |
| -MAKE_TYPED_DICTIONARY_INFO(uint32_t, Variant::INT) |
572 |
| -MAKE_TYPED_DICTIONARY_INFO(int32_t, Variant::INT) |
573 |
| -MAKE_TYPED_DICTIONARY_INFO(uint64_t, Variant::INT) |
574 |
| -MAKE_TYPED_DICTIONARY_INFO(int64_t, Variant::INT) |
575 |
| -MAKE_TYPED_DICTIONARY_INFO(float, Variant::FLOAT) |
576 |
| -MAKE_TYPED_DICTIONARY_INFO(double, Variant::FLOAT) |
577 |
| -MAKE_TYPED_DICTIONARY_INFO(String, Variant::STRING) |
578 |
| -MAKE_TYPED_DICTIONARY_INFO(Vector2, Variant::VECTOR2) |
579 |
| -MAKE_TYPED_DICTIONARY_INFO(Vector2i, Variant::VECTOR2I) |
580 |
| -MAKE_TYPED_DICTIONARY_INFO(Rect2, Variant::RECT2) |
581 |
| -MAKE_TYPED_DICTIONARY_INFO(Rect2i, Variant::RECT2I) |
582 |
| -MAKE_TYPED_DICTIONARY_INFO(Vector3, Variant::VECTOR3) |
583 |
| -MAKE_TYPED_DICTIONARY_INFO(Vector3i, Variant::VECTOR3I) |
584 |
| -MAKE_TYPED_DICTIONARY_INFO(Transform2D, Variant::TRANSFORM2D) |
585 |
| -MAKE_TYPED_DICTIONARY_INFO(Plane, Variant::PLANE) |
586 |
| -MAKE_TYPED_DICTIONARY_INFO(Quaternion, Variant::QUATERNION) |
587 |
| -MAKE_TYPED_DICTIONARY_INFO(AABB, Variant::AABB) |
588 |
| -MAKE_TYPED_DICTIONARY_INFO(Basis, Variant::BASIS) |
589 |
| -MAKE_TYPED_DICTIONARY_INFO(Transform3D, Variant::TRANSFORM3D) |
590 |
| -MAKE_TYPED_DICTIONARY_INFO(Color, Variant::COLOR) |
591 |
| -MAKE_TYPED_DICTIONARY_INFO(StringName, Variant::STRING_NAME) |
592 |
| -MAKE_TYPED_DICTIONARY_INFO(NodePath, Variant::NODE_PATH) |
593 |
| -MAKE_TYPED_DICTIONARY_INFO(RID, Variant::RID) |
594 |
| -MAKE_TYPED_DICTIONARY_INFO(Callable, Variant::CALLABLE) |
595 |
| -MAKE_TYPED_DICTIONARY_INFO(Signal, Variant::SIGNAL) |
596 |
| -MAKE_TYPED_DICTIONARY_INFO(Dictionary, Variant::DICTIONARY) |
597 |
| -MAKE_TYPED_DICTIONARY_INFO(Array, Variant::ARRAY) |
598 |
| -MAKE_TYPED_DICTIONARY_INFO(PackedByteArray, Variant::PACKED_BYTE_ARRAY) |
599 |
| -MAKE_TYPED_DICTIONARY_INFO(PackedInt32Array, Variant::PACKED_INT32_ARRAY) |
600 |
| -MAKE_TYPED_DICTIONARY_INFO(PackedInt64Array, Variant::PACKED_INT64_ARRAY) |
601 |
| -MAKE_TYPED_DICTIONARY_INFO(PackedFloat32Array, Variant::PACKED_FLOAT32_ARRAY) |
602 |
| -MAKE_TYPED_DICTIONARY_INFO(PackedFloat64Array, Variant::PACKED_FLOAT64_ARRAY) |
603 |
| -MAKE_TYPED_DICTIONARY_INFO(PackedStringArray, Variant::PACKED_STRING_ARRAY) |
604 |
| -MAKE_TYPED_DICTIONARY_INFO(PackedVector2Array, Variant::PACKED_VECTOR2_ARRAY) |
605 |
| -MAKE_TYPED_DICTIONARY_INFO(PackedVector3Array, Variant::PACKED_VECTOR3_ARRAY) |
606 |
| -MAKE_TYPED_DICTIONARY_INFO(PackedVector4Array, Variant::PACKED_VECTOR4_ARRAY) |
607 |
| -MAKE_TYPED_DICTIONARY_INFO(PackedColorArray, Variant::PACKED_COLOR_ARRAY) |
608 |
| -/* |
609 |
| -MAKE_TYPED_DICTIONARY_INFO(IPAddress, Variant::STRING) |
610 |
| -*/ |
611 |
| - |
612 |
| -#undef MAKE_TYPED_DICTIONARY_INFO |
613 |
| -#undef MAKE_TYPED_DICTIONARY_INFO_NIL |
614 |
| -#undef MAKE_TYPED_DICTIONARY_INFO_EXPANDED |
615 |
| -#undef MAKE_TYPED_DICTIONARY_INFO_WITH_OBJECT |
616 |
| - |
617 | 416 | #define CLASS_INFO(m_type) (GetTypeInfo<m_type *>::get_class_info())
|
618 | 417 |
|
619 | 418 | } // namespace godot
|
|
0 commit comments