OSSerialize
OSSerialize координирует сериализацию объектов C++ Libkern в поток XML.
Этот класс является по большей части внутренним к классам OSContainer, используемым для передачи таблиц свойства между ядром и пространством пользователя. Это не должно использоваться непосредственно. Классы, участвующие в сериализации, переопределяют OSObject::serialize
. функция.
Используйте ограничения
За очень немногими исключениями в Наборе I/O все находящиеся в Libkern классы C++, функции и макросы небезопасны использовать в основном контексте прерывания. Консультируйтесь с документацией Набора I/O, связанной с основными прерываниями для получения дополнительной информации.
OSSerialize не обеспечивает защиты параллелизма; это до контекста использования для обеспечивания любой необходимой защиты. Некоторые части Набора I/O, такие как IORegistryEntry, обрабатывают синхронизацию через определенные функции членства для сериализации свойств.
Наследование
Не применимый
Соответствует
Не применимый
Оператор импорта
Не применимый
Objective C
@import Kernel;
Доступность
Доступный в OS X v10.0 и позже.
-
Добавляет отдельный символ к потоку XML.
Объявление
C++
virtual bool addChar( const char
aChar
);Параметры
aChar
Символ для добавления к потоку XML.
Возвращаемое значение
true
еслиchar
успешно добавляется к потоку XML,false
иначе. -
Добавляет струну до к потоку XML.
Объявление
C++
virtual bool addString( const char *
cString
);Параметры
cString
Струна до для добавления к потоку XML.
Возвращаемое значение
true
еслиcString
успешно добавляется к потоку XML,false
иначе. -
Добавляет конечный тэг XML к потоку XML.
Объявление
C++
virtual bool addXMLEndTag( const char *
tagString
);Параметры
tagString
Имя XML-тэга для испускания; например, «строка».
Возвращаемое значение
true
если конечный тэг XML дляtagString
успешно добавляется к потоку XML,false
иначе.Обсуждение
Эта функция испускает именованный тег, которому предшествует символ наклонной черты для указания закрытия объекта, все включенные в паре угловых скобок.
Вызов к этой функции должен сбалансировать более ранний вызов к
addXMLStartTag
использование того жеtagString
. -
Добавляет XML, запускают тег к потоку XML.
Объявление
C++
virtual bool addXMLStartTag( const OSMetaClassBase *
object
, const char *tagString
);Параметры
object
Сериализируемый объект.
tagString
Имя XML-тэга для испускания; например, «строка».
Возвращаемое значение
true
если XML запускает тег дляtagString
успешно добавляется к потоку XML,false
иначе.Обсуждение
Эта функция испускает именованный тег, включенный в паре угловых скобок.
Класс, реализующий сериализацию, должен вызвать эту функцию с именем XML-тэга, лучше всего представляющего сериализированное содержание объекта. Ограниченное количество тегов поддерживается библиотекой I/O Kit пространства пользователя:
массив
dict
целое число
ключ
набор
строка
Вызов к этой функции должен быть сбалансирован с одной к
addXMLEndTag
использование того жеtagString
. -
Сбрасывает объект OSSerialize.
Объявление
C++
virtual void clearText();
Обсуждение
Эта функция является полезной оптимизацией при сериализации того же объекта неоднократно.
-
Проверки, был ли объект уже сериализирован в поток XML, испустив ссылку, если это имеет.
Объявление
C++
virtual bool previouslySerialized( const OSMetaClassBase *
object
);Параметры
object
Объект проверить.
Возвращаемое значение
true
еслиobject
был уже сериализирован этим объектом OSSerialize, и ссылка на него успешно добавляется к потоку XML,false
иначе.Обсуждение
Эта функция оба сокращает размер сгенерированного XML путем испускания более коротких ссылок на существующие объекты с тем же значением (особенно для OSString, OSSymbol и OSData), и также сохраняет ссылки экземпляра так, чтобы библиотека I/O Kit пространства пользователя могла восстановить идентичный график объектных отношений.
Все классы то переопределение
OSObject::serialize
. должен вызвать эту функцию прежде, чем сделать любую фактическую сериализацию; если это возвращаетсяtrue
,serialize
реализация может сразу возвратитьсяtrue
. -
Возвращает текст XML, сериализированный до сих пор.
Объявление
C++
virtual char * text() const;
Возвращаемое значение
Nul-завершенные данные XML, сериализированные до сих пор.
-
Создает и инициализирует пустой объект OSSerialize.
Объявление
C++
static OSSerialize * withCapacity( unsigned int
capacity
);Параметры
capacity
Начальный размер буфера XML.
Возвращаемое значение
Новый экземпляр OSSerialize с сохранить количеством 1;
NULL
при отказе.Обсуждение
Сериализатор будет расти по мере необходимости для размещения большего количества данных.