MCPcopy Create free account
hub / github.com/emscripten-core/emscripten / value_object

Class value_object

system/include/emscripten/bind.h:880–1002  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

878
879template<typename ClassType>
880class value_object : public internal::noncopyable {
881public:
882 typedef ClassType class_type;
883
884 value_object(const char* name) {
885 using namespace internal;
886
887 auto ctor = &raw_constructor<ClassType>;
888 auto dtor = &raw_destructor<ClassType>;
889
890 _embind_register_value_object(
891 TypeID<ClassType>::get(),
892 name,
893 getSignature(ctor),
894 reinterpret_cast<GenericFunction>(ctor),
895 getSignature(dtor),
896 reinterpret_cast<GenericFunction>(dtor));
897 }
898
899 ~value_object() {
900 using namespace internal;
901 _embind_finalize_value_object(internal::TypeID<ClassType>::get());
902 }
903
904 template<typename InstanceType, typename FieldType>
905 value_object& field(const char* fieldName, FieldType InstanceType::*field) {
906 using namespace internal;
907
908 auto getter = &MemberAccess<InstanceType, FieldType>
909 ::template getWire<ClassType>;
910 auto setter = &MemberAccess<InstanceType, FieldType>
911 ::template setWire<ClassType>;
912
913 _embind_register_value_object_field(
914 TypeID<ClassType>::get(),
915 fieldName,
916 TypeID<FieldType>::get(),
917 getSignature(getter),
918 reinterpret_cast<GenericFunction>(getter),
919 getContext(field),
920 TypeID<FieldType>::get(),
921 getSignature(setter),
922 reinterpret_cast<GenericFunction>(setter),
923 getContext(field));
924 return *this;
925 }
926
927 template<typename InstanceType, typename ElementType, int N>
928 value_object& field(const char* fieldName, ElementType (InstanceType::*field)[N]) {
929 using namespace internal;
930
931 typedef std::array<ElementType, N> FieldType;
932 static_assert(sizeof(FieldType) == sizeof(ElementType[N]));
933
934 auto getter = &MemberAccess<InstanceType, FieldType>
935 ::template getWire<ClassType>;
936 auto setter = &MemberAccess<InstanceType, FieldType>
937 ::template setWire<ClassType>;

Callers

nothing calls this directly

Calls 3

getSignatureFunction · 0.85
getContextFunction · 0.85
getFunction · 0.50

Tested by

no test coverage detected