summary refs log tree commit diff stats
path: root/lib
diff options
context:
space:
mode:
authorCharles Blake <cblake@csail.mit.edu>2015-08-03 12:27:30 -0400
committerCharles Blake <cblake@csail.mit.edu>2015-08-03 12:27:30 -0400
commit7cb9f363d65d9ad3c52bf4cf35af3eb71988ac06 (patch)
tree55f8d59c37ec9dcaeaac7a9d15ea9b498929cbc2 /lib
parentc373c7209ab01ce9b2570fb0134ad52457f9ee91 (diff)
parent85699b744ddeefcb53996073168c205f00772a6d (diff)
downloadNim-7cb9f363d65d9ad3c52bf4cf35af3eb71988ac06.tar.gz
Merge ../Nim into devel
Diffstat (limited to 'lib')
-rw-r--r--lib/core/macros.nim5
-rw-r--r--lib/pure/times.nim16
2 files changed, 15 insertions, 6 deletions
diff --git a/lib/core/macros.nim b/lib/core/macros.nim
index c89fa354a..5d852cdb1 100644
--- a/lib/core/macros.nim
+++ b/lib/core/macros.nim
@@ -719,10 +719,13 @@ proc `$`*(node: NimNode): string {.compileTime.} =
 proc ident*(name: string): NimNode {.compileTime,inline.} = newIdentNode(name)
   ## Create a new ident node from a string
 
-iterator children*(n: NimNode): NimNode {.inline.}=
+iterator items*(n: NimNode): NimNode {.inline.} =
+  ## Iterates over the children of the NimNode ``n``.
   for i in 0 ..< n.len:
     yield n[i]
 
+iterator children*(n: NimNode): NimNode {.inline.} = items
+
 template findChild*(n: NimNode; cond: expr): NimNode {.
   immediate, dirty.} =
   ## Find the first child node matching condition (or nil).
diff --git a/lib/pure/times.nim b/lib/pure/times.nim
index f1315a9fd..78629af71 100644
--- a/lib/pure/times.nim
+++ b/lib/pure/times.nim
@@ -26,11 +26,6 @@ type
   WeekDay* = enum ## represents a weekday
     dMon, dTue, dWed, dThu, dFri, dSat, dSun
 
-when not defined(JS):
-  var
-    timezone {.importc, header: "<time.h>".}: int
-    tzname {.importc, header: "<time.h>" .}: array[0..1, cstring]
-
 when defined(posix) and not defined(JS):
   type
     TimeImpl {.importc: "time_t", header: "<time.h>".} = int
@@ -49,6 +44,9 @@ when defined(posix) and not defined(JS):
   proc posix_gettimeofday(tp: var Timeval, unused: pointer = nil) {.
     importc: "gettimeofday", header: "<sys/time.h>".}
 
+  var
+    timezone {.importc, header: "<time.h>".}: int
+    tzname {.importc, header: "<time.h>" .}: array[0..1, cstring]
   # we also need tzset() to make sure that tzname is initialized
   proc tzset() {.importc, header: "<time.h>".}
   # calling tzset() implicitly to initialize tzname data.
@@ -60,11 +58,19 @@ elif defined(windows):
   when defined(vcc):
     # newest version of Visual C++ defines time_t to be of 64 bits
     type TimeImpl {.importc: "time_t", header: "<time.h>".} = int64
+    # visual c's c runtime exposes these under a different name
+    var
+      timezone {.importc: "_timezone", header: "<time.h>".}: int
+      tzname {.importc: "_tzname", header: "<time.h>"}: array[0..1, cstring]
   else:
     type TimeImpl {.importc: "time_t", header: "<time.h>".} = int32
+    var
+      timezone {.importc, header: "<time.h>".}: int
+      tzname {.importc, header: "<time.h>" .}: array[0..1, cstring]
 
   type
     Time* = distinct TimeImpl
+  
 
 elif defined(JS):
   type