Object constructor

Object(
  1. Container container,
  2. String tag,
  3. Map<String, dynamic> manifest, {
  4. int? id,
  5. Object? response,
})

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();
}