PyFields PyType::fields() const { CIDebugSymbols *symbols = ExtensionCommandContext::instance()->symbols(); PyFields fields; if (isArrayType(name()) || isPointerType(name())) return fields; for (ULONG fieldIndex = 0;; ++fieldIndex) { ULONG size = 0; symbols->GetFieldName(m_module, m_typeId, fieldIndex, NULL, 0, &size); if (size == 0) break; std::string name(size - 1, '\0'); if (FAILED(symbols->GetFieldName(m_module, m_typeId, fieldIndex, &name[0], size, NULL))) break; fields.push_back(PyField(name, *this)); } return fields; }