OSCollection
Абстрактный суперкласс для наборов Libkern.
OSCollection является абстрактным суперклассом для всех наборов объекта C++ Libkern. Это определяет необходимые интерфейсы для управления пространством памяти и итерации через произвольный набор (см. OSIterator и классы OSCollectionIterator). Это до конкретных подклассов для определения их определенных функций управления контентом.
Используйте ограничения
За очень немногими исключениями в Наборе I/O все находящиеся в Libkern классы C++, функции и макросы небезопасны использовать в основном контексте прерывания. Консультируйтесь с документацией Набора I/O, связанной с основными прерываниями для получения дополнительной информации.
OSCollection не обеспечивает защиты параллелизма; это до контекста использования для обеспечивания любой необходимой защиты. Некоторые части Набора I/O, такие как IORegistryEntry, обрабатывают синхронизацию через определенные функции членства для установки свойств.
Наследование
Не применимый
Соответствует
Не применимый
Оператор импорта
Не применимый
Objective C
@import Kernel;
Доступность
Доступный в OS X v10.0 и позже.
-
Создает глубокую копию набора.
Объявление
C++
virtual OSCollection *copyCollection( OSDictionary *cycleDict = 0);
Параметры
cycleDict
Словарь всех наборов, скопированных до сих пор, для запуска копии в высокоуровневой передаче
NULL
дляcycleDict
.Возвращаемое значение
Недавно скопированный набор,
NULL
при отказе.Обсуждение
Эта функция копирует набор и все содержавшие наборы рекурсивно. Объекты, не полученные из OSCollection, сохраняются, а не копируются.
Подклассы OSCollection должны переопределить эту функцию для надлежащей поддержки глубоких копий.
-
Гарантирует, что набор имеет достаточно пространства для хранения требуемого числа объектов.
Объявление
C++
virtual unsigned int ensureCapacity( unsigned int
newCapacity
) = 0;Параметры
newCapacity
Общее количество объектов набор должно быть в состоянии сохранить.
Возвращаемое значение
Новая способность набора, который может отличаться от числа, которое требуют (если меньший, перераспределение отказавшего хранения).
Обсуждение
Подклассы реализуют эту чисто виртуальную функцию-член для корректировки их хранения так, чтобы они могли содержать, по крайней мере,
newCapacity
объекты. Наборы Libkern обычно выделяют хранение в сети магазинов их полного инкремента.Методы подклассов, добавляющие объекты к набору, должны вызвать эту функцию прежде, чем добавить любой объект и должны проверить возвращаемое значение на успех.
Подклассы набора могут сократить свое хранение, когда число падений содержащих в нем объектов ниже некоторого порога, но никакие наборы Libkern в настоящее время не делают.
-
Освобождает набор, выпуская любые сохраненные объекты.
Объявление
C++
virtual void flushCollection() = 0;
Обсуждение
Подклассы реализуют эту чисто виртуальную функцию-член для удаления их всего содержания. Это не должно выпускать сам набор.
-
Возвращает число объектов, которые набор может хранить без перераспределения.
Объявление
C++
virtual unsigned int getCapacity() const = 0;
Возвращаемое значение
Число возражает, что набор может сохранить без перераспределения.
Обсуждение
Подклассы должны реализовать эту чисто виртуальную функцию-член.
-
Возвращает инкремент хранения набора.
Объявление
C++
virtual unsigned int getCapacityIncrement() const = 0;
Возвращаемое значение
Инкремент хранения набора.
Обсуждение
Подклассы должны реализовать эту чисто виртуальную функцию-член. Большинство подклассов набора выделяет свое хранение в сети магазинов полного инкремента.
Посмотрите
ensureCapacity
поскольку, как используется полный инкремент. -
Возвращает число объектов в наборе.
Объявление
C++
virtual unsigned int getCount() const = 0;
Возвращаемое значение
Число объектов в наборе.
Обсуждение
Подклассы должны реализовать эту чисто виртуальную функцию-член.
-
Возвращает следующий элемент набора.
Объявление
C++
virtual bool getNextObjectForIterator( void *
iterationContext
, OSObject **nextObject
) const = 0;Параметры
iterationContext
Итеративный контекст.
nextObject
Объект возвратился в отношении вызывающей стороны.
Возвращаемое значение
true
если объект был найден,false
иначе.Обсуждение
Эту чисто виртуальную функцию-член, которую должны реализовать подклассы, вызывает OSCollectionIterator для получения следующего объекта для данного итеративного контекста. Объект коллекции должен интерпретировать
iterationContext
соответственно, усовершенствуйте контекст от его текущего объекта до следующего объекта (если это существует), возвратите тот объект ссылкой вnextObject
, и возвратитесьtrue
для вызова функции. Если существует никакой следующий объект, объект коллекции должен возвратитьсяfalse
.Для ассоциативных наборов возвратился объект, должен быть ключ, используемый для доступа к его присваиваемому значению, а не самому значению.
-
Дорожки обновляют к набору.
Объявление
C++
void haveUpdated();
Обсуждение
Подклассы вызывают эту функцию прежде, чем внести любое изменение в их содержание (не после, поскольку имя подразумевает). Отслеживание обновления используется для итераторов набора, и осуществлять определенные меры защиты в IORegistry.
-
Инициализирует объект OSCollection.
Объявление
C++
virtual bool init();
Возвращаемое значение
true
на успехе,false
иначе.Обсуждение
Эта функция используется для инициализации состояния в недавно создаваемом объекте OSCollection.
-
Инициализирует итеративный контекст для подкласса набора.
Объявление
C++
virtual bool initIterator( void *
iterationContext
) const = 0;Параметры
iterationContext
Итеративный контекст для инициализации.
Возвращаемое значение
true
если инициализация была успешна,false
иначе.Обсуждение
Эту чисто виртуальную функцию-член, которую должны реализовать подклассы, вызывает объект OSCollectionIterator инициализировать итеративный контекст для набора. Объект коллекции должен интерпретировать
iterationContext
соответственно и инициализируйте его содержание для начала итерации.Эта функция может неоднократно вызываться для данного контекста, каждый раз, когда итератор сбрасывается через OSCollectionIterator:: функция сброса.
-
Возвращает размер в байтах итеративного контекста подкласса.
Объявление
C++
virtual unsigned int iteratorSize() const = 0;
Возвращаемое значение
Размер в байтах итеративного контекста необходим подклассу OSCollection.
Обсуждение
Эту чисто виртуальную функцию-член, которую должны реализовать подклассы, вызывает объект OSCollectionIterator так, чтобы она могла выделить хранение, необходимое для итеративного контекста. Итеративный контекст содержит данные, необходимые для итерации через набор.
-
Устанавливает инкремент хранения набора.
Объявление
C++
virtual unsigned int setCapacityIncrement( unsigned
increment
) = 0;Возвращаемое значение
Новый инкремент хранения набора, который может отличаться от числа, которое требуют.
Обсуждение
Подклассы должны реализовать эту чисто виртуальную функцию-член. Большинство подклассов набора выделяет свое хранение в сети магазинов полного инкремента.
Подклассы набора должны корректно обработать
increment
из нуля путем применения (и возврата) положительная минимальная способность.Установка полного инкремента не инициировала непосредственную корректировку хранения набора.
См. ensureCapacity для того, как используется полный инкремент.
-
Рекурсивно биты опции наборов в этом наборе и всех дочерних наборах.
Объявление
C++
virtual unsigned setOptions( unsigned
options
, unsignedmask
, void *context = 0);Параметры
options
Битовое поле, значения которого поворачивают опции на (1) или прочь (0).
mask
Маска, указывающая, который биты в
options
измениться. Передайте 0 для получения целого текущего битового поля опций, не изменяя настроек.context
Неиспользованный.
Возвращаемое значение
Битовое поле опций, как это было перед операцией присвоения.
Обсуждение
Расширения ядра не должны вызывать эту функцию.
Единственная использующаяся в настоящее время опция
kImmutable
.Если опции фактически изменяются, подклассы должны переопределить эту функцию для рекурсивного применения опций к их содержанию.
-
Объявление
CPlusPlus
typedef enum { kImmutable = 0x00000001, kSort = 0x00000002, kMASK = ( unsigned) -1 } _OSCollectionFlags;
Константы
Обсуждение
Используемый с
setOptions
указать содержание набора должно или не должно изменяться.Объект IORegistryEntry отмечает наборы, неизменные, когда установлено как свойства ключа реестра, это присоединено к плоскости. Это обычно - консультативный флаг, используемый для отладки; установка его не означает, что набор фактически запретит модификации.
Оператор импорта