ClassInfo<T> constructor
ClassInfo<T> ({})
Implementation
ClassInfo({
String? name,
required T Function(JsScript, List argv) newInstance,
Map<String, JsFunction<T>> functions = const {},
Map<String, JsField<T, dynamic>> fields = const {},
}) : type = T, name = name == null ? T.toString() : name {
members.add(_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!
));
}
});
if (!functions.containsKey("toString")) {
members.add(_MemberInfo(
"toString",
MEMBER_FUNCTION,
(self, argv) => self.toString()
));
}
}