| ; Test that the native PDB reader can enumerate pointer types. The output |
| ; being checked against is golden output generated by llvm-pdbutil without |
| ; the -native flag. Then we check that we generate the same output. |
| |
| ; RUN: llvm-pdbutil pretty -native -funcsigs %p/../Inputs/every-function.pdb \ |
| ; RUN: | FileCheck -check-prefix=PRETTY %s |
| |
| ; RUN: llvm-pdbutil diadump -native -funcsigs %p/../Inputs/every-function.pdb \ |
| ; RUN: | FileCheck -check-prefix=DUMP %s |
| |
| |
| ; PRETTY: void __cdecl (void*, unsigned int) |
| ; PRETTY-NEXT: void __cdecl (void*, unsigned __int64) |
| ; PRETTY-NEXT: int __cdecl () |
| ; PRETTY-NEXT: int () |
| ; PRETTY-NEXT: int __fastcall () |
| ; PRETTY-NEXT: int __vectorcall () |
| ; PRETTY-NEXT: int __cdecl (int) |
| ; PRETTY-NEXT: int __cdecl (int, char) |
| ; PRETTY-NEXT: void __cdecl (Struct) |
| ; PRETTY-NEXT: void (Struct::)() |
| ; PRETTY-NEXT: int (Struct::)() |
| ; PRETTY-NEXT: void (Struct::)() |
| ; PRETTY-NEXT: void (Struct::)() |
| ; PRETTY-NEXT: void (Struct::)() |
| ; PRETTY-NEXT: void (Struct::)() |
| ; PRETTY-NEXT: void __cdecl (const int) |
| ; PRETTY-NEXT: void __cdecl (Struct) |
| ; PRETTY-NEXT: void __cdecl (int*) |
| ; PRETTY-NEXT: void __cdecl (Struct*) |
| ; PRETTY-NEXT: void __cdecl (const int*) |
| ; PRETTY-NEXT: void __cdecl (Struct*) |
| ; PRETTY-NEXT: Struct __cdecl () |
| ; PRETTY-NEXT: void (Derived::)(Derived*) |
| ; PRETTY-NEXT: void (Derived::)(Derived&) |
| ; PRETTY-NEXT: void (Derived::)() |
| ; PRETTY-NEXT: void (Derived::)() |
| ; PRETTY-NEXT: Derived& (Derived::)(Derived*) |
| ; PRETTY-NEXT: Derived& (Derived::)(Derived&) |
| ; PRETTY-NEXT: void (Derived::)() |
| ; PRETTY-NEXT: void* (Derived::)(unsigned int) |
| ; PRETTY-NEXT: void (__vc_attributes::event_sourceAttribute::)(__vc_attributes::event_sourceAttribute::type_e) |
| ; PRETTY-NEXT: void (__vc_attributes::event_sourceAttribute::)() |
| ; PRETTY-NEXT: void (__vc_attributes::helper_attributes::v1_alttypeAttribute::)(__vc_attributes::helper_attributes::v1_alttypeAttribute::type_e) |
| ; PRETTY-NEXT: void (__vc_attributes::helper_attributes::usageAttribute::)(unsigned int) |
| ; PRETTY-NEXT: void (__vc_attributes::threadingAttribute::)(__vc_attributes::threadingAttribute::threading_e) |
| ; PRETTY-NEXT: void (__vc_attributes::threadingAttribute::)() |
| ; PRETTY-NEXT: void (__vc_attributes::aggregatableAttribute::)(__vc_attributes::aggregatableAttribute::type_e) |
| ; PRETTY-NEXT: void (__vc_attributes::aggregatableAttribute::)() |
| ; PRETTY-NEXT: void (__vc_attributes::event_receiverAttribute::)(__vc_attributes::event_receiverAttribute::type_e, bool) |
| ; PRETTY-NEXT: void (__vc_attributes::event_receiverAttribute::)(__vc_attributes::event_receiverAttribute::type_e) |
| ; PRETTY-NEXT: void (__vc_attributes::event_receiverAttribute::)() |
| ; PRETTY-NEXT: void (__vc_attributes::moduleAttribute::)(__vc_attributes::moduleAttribute::type_e, const char*, const char*, const char*, int, bool, const char*, int, const char*, const char*, int, bool, bool, const char*, const char*) |
| ; PRETTY-NEXT: void (__vc_attributes::moduleAttribute::)(__vc_attributes::moduleAttribute::type_e) |
| ; PRETTY-NEXT: void (__vc_attributes::moduleAttribute::)() |
| ; PRETTY-NEXT: void (Base1::)() |
| ; PRETTY-NEXT: void (Base1::)(Base1&) |
| ; PRETTY-NEXT: void (Base1::)() |
| ; PRETTY-NEXT: Base1& (Base1::)(Base1&) |
| ; PRETTY-NEXT: void* (Base1::)(unsigned int) |
| ; PRETTY-NEXT: void (Base2::)(Base2*) |
| ; PRETTY-NEXT: void (Base2::)(Base2&) |
| ; PRETTY-NEXT: void (Base2::)() |
| ; PRETTY-NEXT: void (Base2::)() |
| ; PRETTY-NEXT: Base2& (Base2::)(Base2*) |
| ; PRETTY-NEXT: Base2& (Base2::)(Base2&) |
| ; PRETTY-NEXT: void (Base2::)() |
| ; PRETTY-NEXT: void* (Base2::)(unsigned int) |
| ; PRETTY-NEXT: void __cdecl () |
| |
| ; DUMP: { |
| ; DUMP-NEXT: symIndexId: 2 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __cdecl |
| ; DUMP-NEXT: count: 2 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 4 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __cdecl |
| ; DUMP-NEXT: count: 2 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 5 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __cdecl |
| ; DUMP-NEXT: count: 0 |
| ; DUMP-NEXT: typeId: 6 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 7 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __stdcall |
| ; DUMP-NEXT: count: 0 |
| ; DUMP-NEXT: typeId: 6 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 8 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __fastcall |
| ; DUMP-NEXT: count: 0 |
| ; DUMP-NEXT: typeId: 6 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 9 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __vectorcall |
| ; DUMP-NEXT: count: 0 |
| ; DUMP-NEXT: typeId: 6 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 10 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __cdecl |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 6 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 11 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __cdecl |
| ; DUMP-NEXT: count: 2 |
| ; DUMP-NEXT: typeId: 6 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 12 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __cdecl |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 13 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 1 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 15 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 6 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 16 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 17 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 18 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 19 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 20 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __cdecl |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 21 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __cdecl |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 22 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __cdecl |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 23 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __cdecl |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 24 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __cdecl |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 25 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __cdecl |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 26 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __cdecl |
| ; DUMP-NEXT: count: 0 |
| ; DUMP-NEXT: typeId: 14 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 1 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 27 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 2 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 1 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 1 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 29 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 2 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 1 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 1 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 30 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 1 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 1 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 31 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 4 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 32 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 2 |
| ; DUMP-NEXT: typeId: 33 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 34 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 2 |
| ; DUMP-NEXT: typeId: 33 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 35 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 36 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 2 |
| ; DUMP-NEXT: typeId: 37 |
| ; DUMP-NEXT: thisAdjust: 4 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 38 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 2 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 1 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 40 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 1 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 41 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 2 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 1 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 43 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 2 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 1 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 45 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 2 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 1 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 47 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 1 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 48 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 2 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 1 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 50 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 1 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 51 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 3 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 1 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 53 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 2 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 1 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 54 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 1 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 55 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 16 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 1 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 57 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 2 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 1 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 58 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 1 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 59 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 61 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 2 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 1 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 62 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 1 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 63 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 2 |
| ; DUMP-NEXT: typeId: 64 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 65 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 2 |
| ; DUMP-NEXT: typeId: 37 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 66 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 2 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 1 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 1 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 68 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 2 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 1 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 1 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 69 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 1 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 1 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 70 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 4 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 71 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 2 |
| ; DUMP-NEXT: typeId: 72 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 73 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 2 |
| ; DUMP-NEXT: typeId: 72 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 74 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 1 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: thisAdjust: 0 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 75 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __thiscall |
| ; DUMP-NEXT: count: 2 |
| ; DUMP-NEXT: typeId: 37 |
| ; DUMP-NEXT: thisAdjust: 4 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |
| ; DUMP-NEXT: { |
| ; DUMP-NEXT: symIndexId: 76 |
| ; DUMP-NEXT: symTag: FunctionSig |
| ; DUMP-NEXT: callingConvention: __cdecl |
| ; DUMP-NEXT: count: 0 |
| ; DUMP-NEXT: typeId: 3 |
| ; DUMP-NEXT: constructor: 0 |
| ; DUMP-NEXT: constType: 0 |
| ; DUMP-NEXT: isConstructorVirtualBase: 0 |
| ; DUMP-NEXT: isCxxReturnUdt: 0 |
| ; DUMP-NEXT: unalignedType: 0 |
| ; DUMP-NEXT: volatileType: 0 |
| ; DUMP-NEXT: } |