"use strict";
var import_Resource = require("#models/Resource.js");
/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import_Resource.Resource.add({
  tag: "datatype",
  name: "list",
  description: "List",
  xref: "core\xA77.19.1.8",
  details: 'A list is defined as a collection of entries of the same data type, with a finite count from 0 to 65534. A cluster specification may define further constraints on the maximum possible count. The list entry data type shall be any defined data type, except a list data type, or any data type derived from a list.\nThe quality columns for a list definition are for the list.\nThe list entries are indicated with an index that is an unsigned integer starting at 0 (zero). The maintained order of entries, by index, is defined in the cluster specification, or undefined. Data that is defined as a list is indicated with "list[X]" where X is the entry type. The data type of the list entry has its own qualities, constraints, and conformance.\nTo define qualities for the list entry data type, make the list entry data type a defined local derived data type, with a table including the columns required to define and constrain the data type.\nFor example: Derived data types defined here:\nSummerStruct defined here:\nUsed Here:\nThere is an inline shortcut to define the list entry data type constraints. See List Constraints.\nFor example:\nIt is recommended to put a maximum constraint on the list and list entry data types.\nIt is recommended that a list entry data type be a struct, to enable the addition of new fields to the list\u2019s entries in the future.\n  - The cluster data version shall be incremented when the list order or entries change.\n  - An entry shall NOT be NULL.\n  - The list shall support reading and reporting all entries.\n  - The list shall support reporting, updates, and/or deletion of one or more entries.\n  - If the list is writable, it shall support writing or deleting the entire list.\n  - If the list is writable, it shall support updating one or more individual entries by indicating an index per updated entry.\n  - If the list is writable, it shall support deleting one or more individual entries by indicating an index per deleted entry.\n  - If the list is writable, it shall support adding one or more individual entries.\n  - A list may define an entry that is a struct that is fabric-scoped (see Section 7.6.4, \u201CFabric-Scoped Access\u201D).\n### Fabric-Scoped List\n  - A fabric-scoped list shall define an entry data type that is a struct, which shall also be fabric-scoped (see Fabric-Scoped Struct).\nEach entry in a fabric-scoped list shall be fabric-scoped to a particular fabric or no fabric.\n### Fabric-Filtered List\nA fabric-scoped list supports a fabric-filter that filters the view of the list for read and write interactions. This filter simplifies client side logic that does not want to read or write fabric data that is not associated with the accessing fabric.\n  - An interaction upon a list with fabric-filtering shall only indicate and access entries where the associated fabric matches the accessing fabric, and all other entries shall be ignored.\n  - Fabric-filtered list entries shall be in the same order as the full list.\n  - Fabric-filtered list entries shall be indexed from 0 with no gaps, as if the other entries did not exist.\n  - For a write interaction, fabric-filtering shall be enabled.\n  - When writing to a fabric-scoped list, the write interaction shall be on an accessing fabric, otherwise, the write interaction shall fail (see Interaction Model Specification).\n  - For a read interaction on a list, fabric-filtering may be enabled.\n  - For a read interaction on a list, with fabric-filtering disabled, the list shall be reported as a full list with all entries.\nFor example: A fabric-scoped full list with each entry having an associated FabricIndex and Value field:\nwould be a fabric-filtered list when accessed with fabric B:\nReading a fabric-filtered list entry index 2 accessed with fabric B reports:\nWriting fabric-filtered list entry index 1 when accessed with fabric B:\nchanges the full list to:'
});
//# sourceMappingURL=list.resource.js.map
