blob: dd886b60f9b646ce7e3ceb239c6270866269af26 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@available(added=7)
library fuchsia.data;
// Maximum number of items in a dictionary's value.
const MAX_NUM_VALUE_ITEMS uint32 = 1024;
const MAX_NUM_ENTRIES uint32 = 1024;
const MAX_KEY_LENGTH uint32 = 1024;
@available(replaced=12)
const MAX_VALUE_LENGTH uint32 = 1024;
@available(added=12, replaced=14)
const MAX_VALUE_LENGTH uint32 = 8192;
@available(added=14)
const MAX_VALUE_LENGTH uint32 = 32768;
/// A dictionary is a sequence of key/value pairs.
/// Keys must be unique and sorted in lexicographically increasing order.
type Dictionary = table {
// A list of dictionary entries, where each entry is a (key, value) pair.
//
// Required.
1: entries vector<DictionaryEntry>:MAX_NUM_ENTRIES;
};
/// A key/value pair in a `Dictionary`.
type DictionaryEntry = struct {
// The key for a dictionary entry.
key string:MAX_KEY_LENGTH;
// The value associated with the `key`.
value DictionaryValue:optional;
};
/// A dictionary's value is a string, a list of strings, or a list of objects.
type DictionaryValue = flexible union {
1: str string:MAX_VALUE_LENGTH;
2: str_vec vector<string:MAX_VALUE_LENGTH>:MAX_NUM_VALUE_ITEMS;
3: obj_vec vector<Dictionary>:MAX_NUM_VALUE_ITEMS;
};