Merge branch 'devel' of https://github.com/Araq/Nimrod into devel
This commit is contained in:
commit
9e772a80f3
7 changed files with 107 additions and 21 deletions
|
|
@ -1579,6 +1579,16 @@ var
|
|||
MSG_OOB* {.importc, header: "<sys/socket.h>".}: cint
|
||||
## Out-of-band data.
|
||||
|
||||
|
||||
when defined(linux):
|
||||
var
|
||||
MAP_POPULATE* {.importc, header: "<sys/mman.h>".}: cint
|
||||
## Populate (prefault) page tables for a mapping.
|
||||
else:
|
||||
var
|
||||
MAP_POPULATE*: cint = 0
|
||||
|
||||
|
||||
when defined(macosx):
|
||||
var
|
||||
MSG_HAVEMORE* {.importc, header: "<sys/socket.h>".}: cint
|
||||
|
|
|
|||
|
|
@ -409,6 +409,23 @@ template mapIt*(varSeq, pred: expr) =
|
|||
let it {.inject.} = varSeq[i]
|
||||
varSeq[i] = pred
|
||||
|
||||
template newSeqWith*(len: int, init: expr): expr =
|
||||
## creates a new sequence, calling `init` to initialize each value. Example:
|
||||
##
|
||||
## .. code-block:: nimrod
|
||||
## var seq2D = newSeqWith(20, newSeq[bool](10))
|
||||
## seq2D[0][0] = true
|
||||
## seq2D[1][0] = true
|
||||
## seq2D[0][1] = true
|
||||
##
|
||||
## import math
|
||||
## var seqRand = newSeqWith(20, random(10))
|
||||
## echo seqRand
|
||||
var result {.gensym.} = newSeq[type(init)](len)
|
||||
for i in 0 .. <len:
|
||||
result[i] = init
|
||||
result
|
||||
|
||||
when isMainModule:
|
||||
import strutils
|
||||
block: # concat test
|
||||
|
|
@ -557,4 +574,11 @@ when isMainModule:
|
|||
doAssert b.distribute(5, true)[4].len == 5
|
||||
doAssert b.distribute(5, false)[4].len == 2
|
||||
|
||||
block: # newSeqWith tests
|
||||
var seq2D = newSeqWith(4, newSeq[bool](2))
|
||||
seq2D[0][0] = true
|
||||
seq2D[1][0] = true
|
||||
seq2D[0][1] = true
|
||||
doAssert seq2D == @[@[true, true], @[true, false], @[false, false], @[false, false]]
|
||||
|
||||
echo "Finished doc tests"
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ proc mapMem*(m: var TMemFile, mode: TFileMode = fmRead,
|
|||
nil,
|
||||
mappedSize,
|
||||
if readonly: PROT_READ else: PROT_READ or PROT_WRITE,
|
||||
if readonly: MAP_PRIVATE else: MAP_SHARED,
|
||||
if readonly: (MAP_PRIVATE or MAP_POPULATE) else: (MAP_SHARED or MAP_POPULATE),
|
||||
m.handle, offset)
|
||||
if result == cast[pointer](MAP_FAILED):
|
||||
osError(osLastError())
|
||||
|
|
@ -207,7 +207,7 @@ proc open*(filename: string, mode: TFileMode = fmRead,
|
|||
nil,
|
||||
result.size,
|
||||
if readonly: PROT_READ else: PROT_READ or PROT_WRITE,
|
||||
if readonly: MAP_PRIVATE else: MAP_SHARED,
|
||||
if readonly: (MAP_PRIVATE or MAP_POPULATE) else: (MAP_SHARED or MAP_POPULATE),
|
||||
result.handle,
|
||||
offset)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue