Merge pull request #2133 from def-/cleanup

Cleanup
This commit is contained in:
Andreas Rumpf 2015-02-15 15:12:39 +01:00
commit d8c4c57637
23 changed files with 36 additions and 171 deletions

View file

@ -51,10 +51,10 @@ Files: "configure;makefile"
Files: "*.ini" Files: "*.ini"
Files: "koch.nim" Files: "koch.nim"
Files: "icons/nimrod.ico" Files: "icons/nim.ico"
Files: "icons/nimrod.rc" Files: "icons/nim.rc"
Files: "icons/nimrod.res" Files: "icons/nim.res"
Files: "icons/nimrod_icon.o" Files: "icons/nim_icon.o"
Files: "icons/koch.ico" Files: "icons/koch.ico"
Files: "icons/koch.rc" Files: "icons/koch.rc"
Files: "icons/koch.res" Files: "icons/koch.res"

View file

@ -9,9 +9,9 @@
when defined(gcc) and defined(windows): when defined(gcc) and defined(windows):
when defined(x86): when defined(x86):
{.link: "icons/nimrod.res".} {.link: "icons/nim.res".}
else: else:
{.link: "icons/nimrod_icon.o".} {.link: "icons/nim_icon.o".}
import import
commands, lexer, condsyms, options, msgs, nversion, nimconf, ropes, commands, lexer, condsyms, options, msgs, nversion, nimconf, ropes,

View file

@ -1,136 +0,0 @@
# Configuration file for the Nim Compiler.
# (c) 2015 Andreas Rumpf
# Feel free to edit the default values as you need.
# You may set environment variables with
# @putenv "key" "val"
# Environment variables cannot be used in the options, however!
cc = gcc
# example of how to setup a cross-compiler:
arm.linux.gcc.exe = "arm-linux-gcc"
arm.linux.gcc.linkerexe = "arm-linux-gcc"
cs:partial
path="$lib/core"
path="$lib/pure"
path="$lib/pure/collections"
path="$lib/pure/concurrency"
path="$lib/impure"
path="$lib/wrappers"
# path="$lib/wrappers/cairo"
# path="$lib/wrappers/gtk"
# path="$lib/wrappers/lua"
# path="$lib/wrappers/opengl"
path="$lib/wrappers/pcre"
path="$lib/wrappers/readline"
path="$lib/wrappers/sdl"
# path="$lib/wrappers/x11"
path="$lib/wrappers/zip"
path="$lib/wrappers/libffi"
path="$lib/windows"
path="$lib/posix"
path="$lib/js"
path="$lib/pure/unidecode"
@if nimbabel:
babelpath="$home/.babel/pkgs/"
@end
@if release or quick:
obj_checks:off
field_checks:off
range_checks:off
bound_checks:off
overflow_checks:off
assertions:off
stacktrace:off
linetrace:off
debugger:off
line_dir:off
dead_code_elim:on
@end
@if release:
opt:speed
@end
# additional options always passed to the compiler:
--parallel_build: "0" # 0 to auto-detect number of processors
hint[LineTooLong]=off
#hint[XDeclaredButNotUsed]=off
@if unix:
@if not bsd:
# -fopenmp
gcc.options.linker = "-ldl"
gpp.options.linker = "-ldl"
clang.options.linker = "-ldl"
tcc.options.linker = "-ldl"
@end
@if bsd or haiku:
# BSD got posix_spawn only recently, so we deactivate it for osproc:
define:useFork
# at least NetBSD has problems with thread local storage:
tlsEmulation:on
@end
@end
# Configuration for the Intel C/C++ compiler:
@if windows:
icl.options.speed = "/Ox /arch:SSE2"
icl.options.always = "/nologo"
@end
# Configuration for the GNU C/C++ compiler:
@if windows:
#gcc.path = r"$nimrod\dist\mingw\bin"
@if gcc:
tlsEmulation:on
@end
@end
@if macosx:
cc = clang
tlsEmulation:on
gcc.options.always = "-w -fasm-blocks"
gpp.options.always = "-w -fasm-blocks -fpermissive"
@else:
gcc.options.always = "-w"
gpp.options.always = "-w -fpermissive"
@end
gcc.options.speed = "-O3 -fno-strict-aliasing"
gcc.options.size = "-Os"
gcc.options.debug = "-g3 -O0"
gpp.options.speed = "-O3 -fno-strict-aliasing"
gpp.options.size = "-Os"
gpp.options.debug = "-g3 -O0"
#passl = "-pg"
# Configuration for the LLVM GCC compiler:
llvm_gcc.options.debug = "-g"
llvm_gcc.options.always = "-w"
llvm_gcc.options.speed = "-O2"
llvm_gcc.options.size = "-Os"
# Configuration for the LLVM CLang compiler:
clang.options.debug = "-g"
clang.options.always = "-w"
clang.options.speed = "-O3"
clang.options.size = "-Os"
# Configuration for the Visual C/C++ compiler:
vcc.options.linker = "/DEBUG /Zi /Fd\"$projectName.pdb\" /F33554432" # set the stack size to 8 MB
vcc.options.debug = "/Zi /Fd\"$projectName.pdb\""
vcc.options.always = "/nologo"
vcc.options.speed = "/Ox /arch:SSE2"
vcc.options.size = "/O1"
# Configuration for the Tiny C Compiler:
tcc.options.always = "-w"

View file

@ -1,4 +1,4 @@
# Nimrod configuration file. # Nimrod configuration file.
# The file is used only to add the path of the backend to the compiler options. # The file is used only to add the path of the backend to the compiler options.
path="../nimrod_backend" path="../nim_backend"

View file

@ -21,7 +21,7 @@ type
cmdParams, # Two valid parameters were provided cmdParams, # Two valid parameters were provided
cmdInteractive # No parameters were provided, run interactive mode cmdInteractive # No parameters were provided, run interactive mode
TParamConfig = object of TObject TParamConfig = object of RootObj
action: TCommand # store the type of operation action: TCommand # store the type of operation
paramA, paramB: int # possibly store the valid parameters paramA, paramB: int # possibly store the valid parameters
@ -63,7 +63,7 @@ proc parseCmdLine(): TParamConfig =
stdout.write USAGE stdout.write USAGE
quit "Unexpected option: " & key, 2 quit "Unexpected option: " & key, 2
of cmdEnd: break of cmdEnd: break
except EInvalidValue: except ValueError:
stdout.write USAGE stdout.write USAGE
quit "Invalid value " & val & " for parameter " & key, 3 quit "Invalid value " & val & " for parameter " & key, 3
@ -85,7 +85,7 @@ proc parseUserInput(question: string): int =
try: try:
result = input.parseInt result = input.parseInt
break break
except EInvalidValue: except ValueError:
if input.len < 1: quit "Blank line detected, quitting.", 0 if input.len < 1: quit "Blank line detected, quitting.", 0
echo "Sorry, `$1' doesn't seem to be a valid integer" % input echo "Sorry, `$1' doesn't seem to be a valid integer" % input

View file

@ -1,10 +1,10 @@
In this directory you will find the nimrod commandline version of the In this directory you will find the nim commandline version of the
cross-calculator sample. cross-calculator sample.
The commandline interface can be used non interactively through switches, or The commandline interface can be used non interactively through switches, or
interactively when running the command without parameters. interactively when running the command without parameters.
Compilation is fairly easy despite having the source split in different Compilation is fairly easy despite having the source split in different
directories. Thanks to the nimrod.cfg file, which adds the ../nimrod_backend directories. Thanks to the nim.cfg file, which adds the ../nim_backend
directory as a search path, you can compile and run the example just fine from directory as a search path, you can compile and run the example just fine from
the command line with 'nimrod c -r nimcalculator.nim'. the command line with 'nim c -r nimcalculator.nim'.

View file

@ -13,7 +13,7 @@ type
text*: string ## Description of the task to do. text*: string ## Description of the task to do.
priority*: int ## The priority can be any user defined integer. priority*: int ## The priority can be any user defined integer.
isDone*: bool ## Done todos are still kept marked. isDone*: bool ## Done todos are still kept marked.
modificationDate: TTime ## The modification time can't be modified from modificationDate: Time ## The modification time can't be modified from
## outside of this module, use the ## outside of this module, use the
## getModificationDate accessor. ## getModificationDate accessor.
@ -64,7 +64,7 @@ proc openDatabase*(path: string): TDbConn =
# - Procs related to TTodo objects # - Procs related to TTodo objects
# #
proc initFromDB(id: int64; text: string; priority: int, isDone: bool; proc initFromDB(id: int64; text: string; priority: int, isDone: bool;
modificationDate: TTime): TTodo = modificationDate: Time): TTodo =
## Returns an initialized TTodo object created from database parameters. ## Returns an initialized TTodo object created from database parameters.
## ##
## The proc assumes all values are right. Note this proc is NOT exported. ## The proc assumes all values are right. Note this proc is NOT exported.
@ -81,7 +81,7 @@ proc getId*(todo: TTodo): int64 =
return todo.id return todo.id
proc getModificationDate*(todo: TTodo): TTime = proc getModificationDate*(todo: TTodo): Time =
## Returns the last modification date of a TTodo entry. ## Returns the last modification date of a TTodo entry.
return todo.modificationDate return todo.modificationDate
@ -99,14 +99,14 @@ proc update*(todo: var TTodo; conn: TDbConn): bool =
FROM Todos WHERE id = ?""" FROM Todos WHERE id = ?"""
try: try:
let rows = conn.GetAllRows(query, $todo.id) let rows = conn.getAllRows(query, $todo.id)
if len(rows) < 1: if len(rows) < 1:
return return
assert(1 == len(rows), "Woah, didn't expect so many rows") assert(1 == len(rows), "Woah, didn't expect so many rows")
todo.text = rows[0][0] todo.text = rows[0][0]
todo.priority = rows[0][1].parseInt todo.priority = rows[0][1].parseInt
todo.isDone = rows[0][2].parseBool todo.isDone = rows[0][2].parseBool
todo.modificationDate = TTime(rows[0][3].parseInt) todo.modificationDate = Time(rows[0][3].parseInt)
result = true result = true
except: except:
echo("Something went wrong selecting for id " & $todo.id) echo("Something went wrong selecting for id " & $todo.id)
@ -202,12 +202,12 @@ proc getPagedTodos*(conn: TDbConn; params: TPagedParams;
#echo("Query " & string(query)) #echo("Query " & string(query))
#echo("args: " & args.join(", ")) #echo("args: " & args.join(", "))
var newId: biggestInt var newId: BiggestInt
for row in conn.fastRows(query, args): for row in conn.fastRows(query, args):
let numChars = row[0].parseBiggestInt(newId) let numChars = row[0].parseBiggestInt(newId)
assert(numChars > 0, "Huh, couldn't parse identifier from database?") assert(numChars > 0, "Huh, couldn't parse identifier from database?")
result.add(initFromDB(int64(newId), row[1], row[2].parseInt, result.add(initFromDB(int64(newId), row[1], row[2].parseInt,
row[3].parseBool, TTime(row[4].parseInt))) row[3].parseBool, Time(row[4].parseInt)))
proc getTodo*(conn: TDbConn; todoId: int64): ref TTodo = proc getTodo*(conn: TDbConn; todoId: int64): ref TTodo =

View file

@ -1,4 +1,4 @@
This directory contains the nimrod backend code for the todo cross platform This directory contains the nim backend code for the todo cross platform
example. example.
Unlike the cross platform calculator example, this backend features more code, Unlike the cross platform calculator example, this backend features more code,
@ -8,7 +8,7 @@ The test is not embedded directly in the backend.nim file to avoid being able
to access internal data types and procs not exported and replicate the to access internal data types and procs not exported and replicate the
environment of client code. environment of client code.
In a bigger project with several people you could run `nimrod doc backend.nim` In a bigger project with several people you could run `nim doc backend.nim`
(or use the doc2 command for a whole project) and provide the generated html (or use the doc2 command for a whole project) and provide the generated html
documentation to another programer for her to implement an interface without documentation to another programer for her to implement an interface without
having to look at the source code. having to look at the source code.

View file

@ -1,4 +1,4 @@
# Nimrod configuration file. # Nimrod configuration file.
# The file is used only to add the path of the backend to the compiler options. # The file is used only to add the path of the backend to the compiler options.
path="../nimrod_backend" path="../nim_backend"

View file

@ -69,11 +69,11 @@ template parseTodoIdAndSetCommand(newCommand: TCommand): stmt =
## Helper to parse a big todo identifier into todoId and set command. ## Helper to parse a big todo identifier into todoId and set command.
try: try:
let numChars = val.parseBiggestInt(newId) let numChars = val.parseBiggestInt(newId)
if numChars < 1: raise newException(EInvalidValue, "Empty string?") if numChars < 1: raise newException(ValueError, "Empty string?")
result.command = newCommand result.command = newCommand
result.todoId = newId result.todoId = newId
except EOverflow: except OverflowError:
raise newException(EInvalidValue, "Value $1 too big" % val) raise newException(ValueError, "Value $1 too big" % val)
template verifySingleCommand(actions: stmt): stmt = template verifySingleCommand(actions: stmt): stmt =
@ -111,7 +111,7 @@ proc parseCmdLine(): TParamConfig =
usesListParams = false usesListParams = false
p = initOptParser() p = initOptParser()
key, val: TaintedString key, val: TaintedString
newId: biggestInt newId: BiggestInt
result.initDefaults result.initDefaults
@ -178,7 +178,7 @@ proc parseCmdLine(): TParamConfig =
abort("Unexpected option '$1'." % [key], 6) abort("Unexpected option '$1'." % [key], 6)
of cmdEnd: of cmdEnd:
break break
except EInvalidValue: except ValueError:
abort("Invalid integer value '$1' for parameter '$2'." % [val, key], 7) abort("Invalid integer value '$1' for parameter '$2'." % [val, key], 7)
if not specifiedCommand: if not specifiedCommand:

View file

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Before After
Before After

3
icons/nim.rc Normal file
View file

@ -0,0 +1,3 @@
nimicon ICON "nim.ico"

View file

@ -1,3 +0,0 @@
nimrodicon ICON "nimrod.ico"

View file

@ -1235,11 +1235,12 @@ proc reversed*(s: string): string =
## returns the reverse of `s`, interpreting it as unicode characters. Unicode ## returns the reverse of `s`, interpreting it as unicode characters. Unicode
## combining characters are correctly interpreted as well: ## combining characters are correctly interpreted as well:
## ##
## .. code-block: ## .. code-block:: nim
##
## assert reversed("Reverse this!") == "!siht esreveR" ## assert reversed("Reverse this!") == "!siht esreveR"
## assert reversed("先秦兩漢") == "漢兩秦先" ## assert reversed("先秦兩漢") == "漢兩秦先"
## assert reversed("as⃝df̅") == "f̅ds⃝a" ## assert reversed("as⃝df̅") == "f̅ds⃝a"
## assert reversed("a⃞b⃞c⃞") == "c⃞b⃞a⃞" ## assert reversed("a⃞b⃞c⃞") == "c⃞b⃞a⃞"
var var
i = 0 i = 0
lastI = 0 lastI = 0

View file

@ -50,8 +50,8 @@
SetCompressor /SOLID /FINAL lzma SetCompressor /SOLID /FINAL lzma
; Installer and Uninstaller Icons ; Installer and Uninstaller Icons
; Icon "nimrod.ico" ; Icon "nim.ico"
; UninstallIcon "nimrod.ico" ; UninstallIcon "nim.ico"
; Set installation details to be shown by default ; Set installation details to be shown by default
ShowInstDetails show ShowInstDetails show