sls1005 / nim-casting

A wrapper for the cast operators of C++

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Casting

This wraps the C++ cast operators for the Nim programming language.

Example

from casting import dynamicCast
type
  A {.inheritable, pure.} = object
    a: int
  B = object of A
    b: float
var x: B
let p: ptr A = dynamicCast[ptr A](x.addr)
if p.isNil():
  echo "failed to cast"
else:
  (p[]).a = 1
  assert x.a == 1

Note

  • Please use the built-in keyword cast if possible. This wrapper should only be used where cast fails, or is inappropriate to use.

Warning

  • Some of the procs provided by this package allow performing unsafe operations. Please be sure of knowing what you are doing with them.

Reference

About

A wrapper for the cast operators of C++

License:MIT License


Languages

Language:Nim 100.0%