deprecate unsafeAddr; extend addr (#19373)
* deprecate unsafeAddr; extend addr addr is now available for all addressable locations, unsafeAddr is deprecated and become an alias for addr * follow @Vindaar's advice * change the signature of addr * unsafeAddr => addr (stdlib) * Update changelog.md * unsafeAddr => addr (tests) * Revert "unsafeAddr => addr (stdlib)" This reverts commit ab83c99c507048a8396e636bf22d55fdd84d7d1c. * doc changes; thanks to @konsumlamm Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com> Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>
This commit is contained in:
parent
a95399143f
commit
d102b2f54c
30 changed files with 69 additions and 66 deletions
|
|
@ -48,37 +48,37 @@ when false: # pending bug #13887
|
|||
## We can define custom pragmas in user code
|
||||
template byUnsafeAddr(lhs, typ, expr) =
|
||||
when typ is type(nil):
|
||||
let tmp = unsafeAddr(expr)
|
||||
let tmp = addr(expr)
|
||||
else:
|
||||
let tmp: ptr typ = unsafeAddr(expr)
|
||||
let tmp: ptr typ = addr(expr)
|
||||
template lhs: untyped = tmp[]
|
||||
|
||||
block:
|
||||
let s = @["foo", "bar"]
|
||||
let a {.byUnsafeAddr.} = s[0]
|
||||
doAssert a == "foo"
|
||||
doAssert a[0].unsafeAddr == s[0][0].unsafeAddr
|
||||
doAssert a[0].addr == s[0][0].addr
|
||||
|
||||
block: # nkAccQuoted
|
||||
# shows using a keyword, which requires nkAccQuoted
|
||||
template `cast`(lhs, typ, expr) =
|
||||
when typ is type(nil):
|
||||
let tmp = unsafeAddr(expr)
|
||||
let tmp = addr(expr)
|
||||
else:
|
||||
let tmp: ptr typ = unsafeAddr(expr)
|
||||
let tmp: ptr typ = addr(expr)
|
||||
template lhs: untyped = tmp[]
|
||||
|
||||
block:
|
||||
let s = @["foo", "bar"]
|
||||
let a {.`byUnsafeAddr`.} = s[0]
|
||||
doAssert a == "foo"
|
||||
doAssert a[0].unsafeAddr == s[0][0].unsafeAddr
|
||||
doAssert a[0].addr == s[0][0].addr
|
||||
|
||||
block:
|
||||
let s = @["foo", "bar"]
|
||||
let a {.`cast`.} = s[0]
|
||||
doAssert a == "foo"
|
||||
doAssert a[0].unsafeAddr == s[0][0].unsafeAddr
|
||||
doAssert a[0].addr == s[0][0].addr
|
||||
|
||||
block: # bug #15920
|
||||
template foo(lhs, typ, expr) =
|
||||
|
|
|
|||
|
|
@ -12,4 +12,4 @@ block: # cmpMem
|
|||
|
||||
doAssert cmpMem(a.addr, b.addr, sizeof(SomeHash)) > 0
|
||||
doAssert cmpMem(b.addr, a.addr, sizeof(SomeHash)) < 0
|
||||
doAssert cmpMem(a.addr, c.unsafeAddr, sizeof(SomeHash)) == 0
|
||||
doAssert cmpMem(a.addr, c.addr, sizeof(SomeHash)) == 0
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ block tsqlitebindatas: ## db_sqlite binary data
|
|||
db.exec(createTableStr)
|
||||
|
||||
var dbuf = newSeq[byte](orig.len*sizeof(float64))
|
||||
copyMem(unsafeAddr(dbuf[0]), unsafeAddr(orig[0]), dbuf.len)
|
||||
copyMem(addr(dbuf[0]), addr(orig[0]), dbuf.len)
|
||||
|
||||
var insertStmt = db.prepare("INSERT INTO test (id, name, data) VALUES (?, ?, ?)")
|
||||
insertStmt.bindParams(1, origName, dbuf)
|
||||
|
|
@ -42,7 +42,7 @@ block tsqlitebindatas: ## db_sqlite binary data
|
|||
var dataTest = db.getValue(sql"SELECT data FROM test WHERE id = ?", 1)
|
||||
let seqSize = int(dataTest.len*sizeof(byte)/sizeof(float64))
|
||||
var res: seq[float64] = newSeq[float64](seqSize)
|
||||
copyMem(unsafeAddr(res[0]), addr(dataTest[0]), dataTest.len)
|
||||
copyMem(addr(res[0]), addr(dataTest[0]), dataTest.len)
|
||||
doAssert res.len == orig.len
|
||||
doAssert res == orig
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue