У меня большой проект смешанного C / C ++. Я создал простой визуализатор для класса ICU UnicodeString следующим образом ...
[inside autoexp.dat]
icu_4_2::UnicodeString {
preview ([$c.fUnion.fFields.fArray,su])
}
... и это прекрасно работает. Внутри отладчика везде, где я вижу объект, теперь я вижу текст в строке предварительного просмотра.
Затем я создал класс-оболочку, содержащий один из этих объектов, следующим образом ...
class StringHandleData
{
public:
icu_4_2::UnicodeString str;
};
... а затем создал еще один визуализатор для этого ...
[inside autoexp.dat]
StringHandleData {
preview ([$c.str.fUnion.fFields.fArray,su])
}
... опять же, отлично работает. Всякий раз, когда я вижу объект StringHandleData в отладчике, я вижу текст в строке.
Однако, моя проблема возникает, когда я определяю определение типа, которое я могу использовать внутри кода C, как это ...
typedef void* StringHandle;
... который под капотом на самом деле просто ptr объекта StringHandleData. Поэтому, когда я пытаюсь создать визуализатор для типа StringHandle, как этот ...
[inside autoexp.dat]
StringHandle {
preview ([((StringHandleData)$c).str.fUnion.fFields.fArray,su])
}
... это не работает. Я пробовал много других способов кастования объекта, но пока безуспешно. Если я подойду к окну просмотра и приведу StringHandle следующим образом ... (StringHandleData *) stringHandle , тогда отладчик выполняет приведение и предварительный просмотр правильно, но я просто не могу заставить его это сделать автоматически изнутри autoexp.dat
Спасибо за любую помощь.