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 charaChar);Параметры
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 intcapacity);Параметры
capacityНачальный размер буфера XML.
Возвращаемое значение
Новый экземпляр OSSerialize с сохранить количеством 1;
NULLпри отказе.Обсуждение
Сериализатор будет расти по мере необходимости для размещения большего количества данных.
