StringStream & more stdlib modules support for JS/NimScript (#14095)

* StringStream & more stdlib modules support for JS/NimScript

* change back pegs test in line with #14134
This commit is contained in:
hlaaftana 2020-04-28 20:44:52 +03:00 • committed by GitHub
commit cd9af6b804
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
22 changed files with 852 additions and 356 deletions

View file

@ -13,18 +13,24 @@
template volatileLoad*[T](src: ptr T): T =
## Generates a volatile load of the value stored in the container `src`.
## Note that this only effects code generation on `C` like backends
when defined(js):
when nimvm:
src[]
else:
var res: T
{.emit: [res, " = (*(", type(src[]), " volatile*)", src, ");"].}
res
when defined(js):
src[]
else:
var res: T
{.emit: [res, " = (*(", type(src[]), " volatile*)", src, ");"].}
res
template volatileStore*[T](dest: ptr T, val: T) =
## Generates a volatile store into the container `dest` of the value
## `val`. Note that this only effects code generation on `C` like
## backends
when defined(js):
when nimvm:
dest[] = val
else:
{.emit: ["*((", type(dest[]), " volatile*)(", dest, ")) = ", val, ";"].}
when defined(js):
dest[] = val
else:
{.emit: ["*((", type(dest[]), " volatile*)(", dest, ")) = ", val, ";"].}