Object constructor
Object(})
Implementation
Object(Container container, String tag, Map<String, dynamic> manifest, { this.id, this.response }) :
_inheritDescriptor = RegExp(r'.+?@(.+)$').firstMatch(tag)?.group(1) ?? '',
super(container, _extractTag(tag), validName(_extractTag(tag), firstCapital: true), manifest) {
inheritFilename = _inheritDescriptor.indexOf(':') > 0 ? _inheritDescriptor.substring(0, _inheritDescriptor.indexOf(':')) : container.filename;
inheritTag = _inheritDescriptor.indexOf(':') > 0 ? _inheritDescriptor.substring(_inheritDescriptor.indexOf(':') + 1) : _inheritDescriptor;
if (isReserved(name)) {
throw Exception('Object node "$tag" in ${container.filename}.json is resulted with the name "$name", which is reserved by Dart language.');
}
for (final MapEntry<String, dynamic> entry in manifest.entries) {
final Field field = Field.fromEntry(this, entry);
if (fields.where((Field f) => f.name == field.name).isNotEmpty) {
throw Exception('Object declaration "$tag" in ${container.filename}.json field "${field.tag}" is parsed into a field with duplicating name "${field.name}".');
}
fields.add(field);
}
_flagBytes = (fields.where((Field f) => f.optional).length / 8).ceil();
}