diff semiconginev2/core/utils.nim @ 1218:56781cc0fc7c compiletime-tests

did: renamge main package
author sam <sam@basx.dev>
date Wed, 17 Jul 2024 21:01:37 +0700
parents semicongine/core/utils.nim@04e446a7eb2b
children 841e12f33c47
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/semiconginev2/core/utils.nim	Wed Jul 17 21:01:37 2024 +0700
@@ -0,0 +1,42 @@
+type
+  HorizontalAlignment* = enum
+    Left
+    Center
+    Right
+  VerticalAlignment* = enum
+    Top
+    Center
+    Bottom
+
+func CleanString*(str: openArray[char]): string =
+  for i in 0 ..< len(str):
+    if str[i] == char(0):
+      result = join(str[0 ..< i])
+      break
+
+func ToCPointer*[T](list: openArray[T]): ptr T =
+  if list.len > 0: addr(list[0]) else: nil
+
+proc StaticExecChecked*(command: string, input = ""): string {.compileTime.} =
+  let (output, exitcode) = gorgeEx(
+      command = command,
+      input = input)
+  if exitcode != 0:
+    raise newException(Exception, &"Running '{command}' produced exit code: {exitcode}" & output)
+  return output
+
+proc AppName*(): string =
+  return string(Path(getAppFilename()).splitFile.name)
+
+func Size*[T: seq](list: T): uint64 =
+  uint64(list.len * sizeof(get(genericParams(typeof(list)), 0)))
+
+template TimeAndLog*(body: untyped): untyped =
+  let t0 = getMonoTime()
+  body
+  echo (getMonoTime() - t0).inNanoseconds.float / 1_000_000
+
+template TimeAndLog*(name: string, body: untyped): untyped =
+  let t0 = getMonoTime()
+  body
+  echo name, ": ", (getMonoTime() - t0).inNanoseconds.float / 1_000_000