NAME=avrD msvc simple
FILE=--
CMDS=e anal.cpp.abi=msvc;"avrD .?AVClassName@@"
EXPECT=<<EOF
ClassName
EOF
RUN

NAME=avrD msvc empty
FILE=--
CMDS=e anal.cpp.abi=msvc;"avrD .?AV@@"
EXPECT=<<EOF
EOF
RUN

NAME=avrD msvc namespaces
FILE=--
CMDS=e anal.cpp.abi=msvc;"avrD .?AVClassInInnerNamespace@InnerNamespace@OuterNamespace@@"
EXPECT=<<EOF
OuterNamespace::InnerNamespace::ClassInInnerNamespace
EOF
RUN

NAME=avra and avrr msvc x86
FILE=bins/pe/cpp-msvc-x86.exe
CMDS=<<EOF
aar
avra
?e --
avrr
acll
EOF
EXPECT=<<EOF
Complete Object Locator at 0x00417860:
	signature: 0
	vftableOffset: 0
	cdOffset: 0
	typeDescriptorAddr: 0x004198b0
	classDescriptorAddr: 0x00417874
	objectBase: 0x00000000

	Type Descriptor at 0x004198b0:
		vtableAddr: 0x004121fc
		spare: 0x00000000
		name: .?AVAlbum@@

	Class Hierarchy Descriptor at 0x00417874:
		signature: 0
		attributes: 0
		numBaseClasses: 0x1
		baseClassArrayAddr: 0x00417884

		Base Class Descriptor:
			typeDescriptorAddr: 0x004198b0
			numContainedBases: 0
			where:
				mdisp: 0
				pdisp: -1
				vdisp: 0
			attributes: 0x40

			Type Descriptor at 0x004198b0:
				vtableAddr: 0x004121fc
				spare: 0x00000000
				name: .?AVAlbum@@


Complete Object Locator at 0x004178a8:
	signature: 0
	vftableOffset: 0
	cdOffset: 0
	typeDescriptorAddr: 0x004198c4
	classDescriptorAddr: 0x004178bc
	objectBase: 0x00000000

	Type Descriptor at 0x004198c4:
		vtableAddr: 0x004121fc
		spare: 0x00000000
		name: .?AVInAbsentia@@

	Class Hierarchy Descriptor at 0x004178bc:
		signature: 0
		attributes: 0
		numBaseClasses: 0x2
		baseClassArrayAddr: 0x004178cc

		Base Class Descriptor:
			typeDescriptorAddr: 0x004198c4
			numContainedBases: 0x1
			where:
				mdisp: 0
				pdisp: -1
				vdisp: 0
			attributes: 0x40

			Type Descriptor at 0x004198c4:
				vtableAddr: 0x004121fc
				spare: 0x00000000
				name: .?AVInAbsentia@@

		Base Class Descriptor:
			typeDescriptorAddr: 0x004198b0
			numContainedBases: 0
			where:
				mdisp: 0
				pdisp: -1
				vdisp: 0
			attributes: 0x40

			Type Descriptor at 0x004198b0:
				vtableAddr: 0x004121fc
				spare: 0x00000000
				name: .?AVAlbum@@


Complete Object Locator at 0x004178f4:
	signature: 0
	vftableOffset: 0
	cdOffset: 0
	typeDescriptorAddr: 0x004198e0
	classDescriptorAddr: 0x00417908
	objectBase: 0x00000000

	Type Descriptor at 0x004198e0:
		vtableAddr: 0x004121fc
		spare: 0x00000000
		name: .?AVtype_info@@

	Class Hierarchy Descriptor at 0x00417908:
		signature: 0
		attributes: 0
		numBaseClasses: 0x1
		baseClassArrayAddr: 0x00417918

		Base Class Descriptor:
			typeDescriptorAddr: 0x004198e0
			numContainedBases: 0
			where:
				mdisp: 0
				pdisp: -1
				vdisp: 0
			attributes: 0x40

			Type Descriptor at 0x004198e0:
				vtableAddr: 0x004121fc
				spare: 0x00000000
				name: .?AVtype_info@@


--
Album
  (vtable at 0x412164)
  virtual_0 @ 0x40105d (vtable + 0x0)
  virtual_4 @ 0x4010a7 (vtable + 0x4)
InAbsentia: Album
  (vtable at 0x4121a4)
  virtual_0 @ 0x401088 (vtable + 0x0)
  virtual_4 @ 0x4010b3 (vtable + 0x4)
type_info
  (vtable at 0x4121fc)
  virtual_0 @ 0x401136 (vtable + 0x0)
EOF
RUN
