inherit<M extends T> method
Implementation
ClassInfo<M> inherit<M extends T>({
String? name,
M Function(JsScript, List argv)? newInstance,
Map<String, JsFunction<M>> functions = const {},
Map<String, JsField<M, dynamic>> fields = const {},
}) {
List<_MemberInfo> members = List.from(this.members);
if (newInstance != null) {
members[0] = _MemberInfo(
this.name,
MEMBER_CONSTRUCTOR,
(script, argv) => newInstance(script, argv)
);
}
functions.forEach((name, func) {
members.add(_MemberInfo(
name,
MEMBER_FUNCTION | (func.isStatic ? MEMBER_STATIC : 0),
func.function
));
});
fields.forEach((name, field) {
if (field.getter != null) {
members.add(_MemberInfo(
name,
MEMBER_GETTER | (field.isStatic ? MEMBER_STATIC : 0),
field.getter!
));
}
if (field.setter != null) {
members.add(_MemberInfo(
name,
MEMBER_SETTER | (field.isStatic ? MEMBER_STATIC : 0),
field.setter!
));
}
});
return ClassInfo._(
name: name??M.toString(),
type: M,
members: members
);
}