Re[2]: 1. Работа с DOM HTMLayout
От: c-smile Канада http://terrainformatica.com
Дата: 24.11.06 03:18
Оценка: 52 (5)
Здравствуйте, Зверёк Харьковский, Вы писали:

Класс, зверски клево


Небольшой коментарий по поводу:

ЗХ>Примечание 2

ЗХ>Элементы DOM HTMLayout — это объекты со счетчиками ссылок, они удаляются, когда счетчик ссылок равен 0. Пользователь может контролировать счетчик ссылок функциями HTMLayout_UseElement, HTMLayout_UnuseElement. Пока элемент находится в DOM, счетчик ссылок у него > 0. Если пользователь удалил элемент из DOM (HTMLayoutDetachElement), то его можно продолжать использовать дальше, пока счетчик ссылок > 0.

Прямой аналог HTMLayout_UseElement, HTMLayout_UnuseElement это AddRef и Release в COM.

Поэтому голый HTMLayoutDetachElement звать не надо. А надо так:

1) HTMLayout_UseElement(el) <- ++refcount = 2
2) HTMLayoutDetachElement(el) <- удален из контейнера соответсвенно --refcount = 1
3) HTMLayoutInsertElement(some_other_parent, el); <- добавлен в другой контейнер, соответсвенно ++refcount = 2
4) HTMLayout_UnuseElement(el) <- --refcount = 1. ( refcount == 1 — parent держит данный элемент)

Для C++ есть класс в htmlayout_dom.hpp:

htmlayout::dom::element
.
Это smart pointer элемента DOM который делает Use/UnuseElement когда надо +
все API методы обернуты в нечто более привычное для C++ по нотации и способу пользования.


Зверь, еще раз большое спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.