Даже самые простые правила для [Visualization] в autoexp.dat не будут работать - PullRequest
2 голосов
/ 05 марта 2012

Я пытаюсь визуализировать мой матричный класс более читабельным способом, чем массив массивов с использованием визуализатора текста.Однако даже самые простые правила не будут работать.Вот мое правило для autoexp.dat:

; Custom visualizers for RTSG data types.
RTSG::Matrix44<float> {
  preview(
    #(
      "foo", "bar"
    )
  )
  stringview(
    #(
      "foo", "bar"
    )
  )
}

Вот определение класса:

template <class T> class Matrix44
{
public:
    T       x[4][4];

    // omitted methods, no other data members are declared
}

Однако VS по-прежнему отображает его в окне наблюдения следующим образом:

{x=0x0283e530 }

и нет увеличительного стекла для запуска визуализатора текста.Что я делаю не так?

ОС: Win 7 64-bit, VS: 2008 v3.5 SP1

Обновление: Я также заметил, что VS был не всегдареагирует на любые изменения в autoexp.dat, но учитывает их с некоторой задержкой или после перезапуска отладчика несколько раз.Как описано в большинстве мест, нужно только один раз перезапустить отладчик, и изменения должны быть приняты во внимание, поскольку отладчик читает этот файл при каждом запуске.Похоже, это не так на моей машине.

Ответы [ 2 ]

3 голосов
/ 09 марта 2012

Это последний визуализатор для моего класса матрицы 4x4:

RTSG::Matrix44<*> {
  stringview(
    #(
      "'",
      [$e.x[0][0]], ['\t'], [$e.x[0][1]], ['\t'], [$e.x[0][2]], ['\t'], [$e.x[0][3]], ['\n'],
      [$e.x[1][0]], ['\t'], [$e.x[1][1]], ['\t'], [$e.x[1][2]], ['\t'], [$e.x[1][3]], ['\n'],
      [$e.x[2][0]], ['\t'], [$e.x[2][1]], ['\t'], [$e.x[2][2]], ['\t'], [$e.x[2][3]], ['\n'],
      [$e.x[3][0]], ['\t'], [$e.x[3][1]], ['\t'], [$e.x[3][2]], ['\t'], [$e.x[3][3]],
      "'"
    )
  )
}

Используется с визуализатором текста.Создает много одинарных кавычек, но все же лучше, чем 16 значений в столбце.В этой матрице используется хранилище с основными столбцами, индексы с переворачиванием для основных строк.

1 голос
/ 08 марта 2012

Вы пробовали использовать более общее правило:

RTSG::Matrix44<*> {
  preview(
    #(
      "foo", "bar"
    )
  )
  stringview(
    #(
      "foo", "bar"
    )
  )
}

Попробуйте также поместить его в начало файла autoexp.dat.

Если это не сработало, выМожно сказать, что простейшее правило не работает: p Cheers

...