Quick actions

cmd+k|ctrl+k

Navigation

Languages

Typeinfo Mk 2

Snippet info

Language

Nim

Visibility

unlisted

Author

legacy-anonymous

Created

2017-01-23T09:18:59Z

Updated

2017-01-23T09:18:59Z

import typeinfo

type
  Parent = object of RootObj
    x: int
  Child = object of Parent
    y: string

type CustomAny* = object
    value: pointer
    rawType: pointer

proc customToAny*[T](x: var T): CustomAny {.inline.} =
  result = cast[CustomAny](toAny(x))

proc compareRuntimeTypes[A, B](a: var A, b: var B): bool =
  result = customToAny(a).rawType == customToAny(b).rawType

var x = Parent(x: 4)
var y = Child(x: 4, y:"Hello")
var z = Parent(x: 6)

echo compareRuntimeTypes(x, y)
echo compareRuntimeTypes(x, z)
INFO