Skip to content

Commit fb0c50d

Browse files
committed
add indents
1 parent b3c1fba commit fb0c50d

File tree

4 files changed

+87
-57
lines changed

4 files changed

+87
-57
lines changed

compiler/cbuilderbase.nim

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ type
44
Snippet* = string
55
Builder* = object
66
buf*: string
7+
indents*: int
78

89
template newBuilder*(s: string): Builder =
910
Builder(buf: s)
@@ -17,6 +18,30 @@ proc add*(builder: var Builder, s: string) =
1718
proc add*(builder: var Builder, s: char) =
1819
builder.buf.add(s)
1920

21+
proc addNewline*(builder: var Builder) =
22+
builder.add('\n')
23+
for i in 0 ..< builder.indents:
24+
builder.add('\t')
25+
26+
proc addLineEnd*(builder: var Builder, s: string) =
27+
builder.add(s)
28+
builder.addNewline()
29+
30+
proc addLineEndIndent*(builder: var Builder, s: string) =
31+
inc builder.indents
32+
builder.add(s)
33+
builder.addNewline()
34+
35+
proc addDedent*(builder: var Builder, s: string) =
36+
if builder.buf.len > 0 and builder.buf[^1] == '\t':
37+
builder.buf.setLen(builder.buf.len - 1)
38+
builder.add(s)
39+
dec builder.indents
40+
41+
proc addLineEndDedent*(builder: var Builder, s: string) =
42+
builder.addDedent(s)
43+
builder.addNewline()
44+
2045
proc addIntValue*(builder: var Builder, val: int) =
2146
builder.buf.addInt(val)
2247

compiler/cbuilderdecls.nim

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,15 @@ proc addVar(builder: var Builder, kind: VarKind = Local, name: string, typ: Snip
3232
if initializer.len != 0:
3333
builder.add(" = ")
3434
builder.add(initializer)
35-
builder.add(";\n")
35+
builder.addLineEnd(";")
3636

3737
template addVarWithType(builder: var Builder, kind: VarKind = Local, name: string, body: typed) =
3838
## adds a variable declaration to the builder, with the `body` building the type
3939
builder.addVarHeader(kind)
4040
body
4141
builder.add(" ")
4242
builder.add(name)
43-
builder.add(";\n")
43+
builder.addLineEnd(";")
4444

4545
template addVarWithInitializer(builder: var Builder, kind: VarKind = Local, name: string,
4646
typ: Snippet, initializerBody: typed) =
@@ -52,7 +52,7 @@ template addVarWithInitializer(builder: var Builder, kind: VarKind = Local, name
5252
builder.add(name)
5353
builder.add(" = ")
5454
initializerBody
55-
builder.add(";\n")
55+
builder.addLineEnd(";")
5656

5757
template addVarWithTypeAndInitializer(builder: var Builder, kind: VarKind = Local, name: string,
5858
typeBody, initializerBody: typed) =
@@ -64,7 +64,7 @@ template addVarWithTypeAndInitializer(builder: var Builder, kind: VarKind = Loca
6464
builder.add(name)
6565
builder.add(" = ")
6666
initializerBody
67-
builder.add(";\n")
67+
builder.addLineEnd(";")
6868

6969
proc addArrayVar(builder: var Builder, kind: VarKind = Local, name: string, elementType: Snippet, len: int, initializer: Snippet = "") =
7070
## adds an array variable declaration to the builder
@@ -78,7 +78,7 @@ proc addArrayVar(builder: var Builder, kind: VarKind = Local, name: string, elem
7878
if initializer.len != 0:
7979
builder.add(" = ")
8080
builder.add(initializer)
81-
builder.add(";\n")
81+
builder.addLineEnd(";")
8282

8383
template addArrayVarWithInitializer(builder: var Builder, kind: VarKind = Local, name: string, elementType: Snippet, len: int, body: typed) =
8484
## adds an array variable declaration to the builder with the initializer built according to `body`
@@ -90,7 +90,7 @@ template addArrayVarWithInitializer(builder: var Builder, kind: VarKind = Local,
9090
builder.addIntValue(len)
9191
builder.add("] = ")
9292
body
93-
builder.add(";\n")
93+
builder.addLineEnd(";")
9494

9595
template addTypedef(builder: var Builder, name: string, typeBody: typed) =
9696
## adds a typedef declaration to the builder with name `name` and type as
@@ -99,7 +99,7 @@ template addTypedef(builder: var Builder, name: string, typeBody: typed) =
9999
typeBody
100100
builder.add(" ")
101101
builder.add(name)
102-
builder.add(";\n")
102+
builder.addLineEnd(";")
103103

104104
proc addProcTypedef(builder: var Builder, callConv: TCallingConvention, name: string, rettype, params: Snippet) =
105105
builder.add("typedef ")
@@ -110,7 +110,7 @@ proc addProcTypedef(builder: var Builder, callConv: TCallingConvention, name: st
110110
builder.add(name)
111111
builder.add(")")
112112
builder.add(params)
113-
builder.add(";\n")
113+
builder.addLineEnd(";")
114114

115115
template addArrayTypedef(builder: var Builder, name: string, len: BiggestInt, typeBody: typed) =
116116
## adds an array typedef declaration to the builder with name `name`,
@@ -121,7 +121,7 @@ template addArrayTypedef(builder: var Builder, name: string, len: BiggestInt, ty
121121
builder.add(name)
122122
builder.add("[")
123123
builder.addIntValue(len)
124-
builder.add("];\n")
124+
builder.addLineEnd("];")
125125

126126
type
127127
StructInitializerKind = enum
@@ -521,12 +521,13 @@ proc addProcHeader(builder: var Builder, m: BModule, prc: PSym, name: string, pa
521521
builder.add(" __attribute__((noreturn))")
522522

523523
proc finishProcHeaderAsProto(builder: var Builder) =
524-
builder.add(";\n")
524+
builder.addLineEnd(";")
525525

526526
template finishProcHeaderWithBody(builder: var Builder, body: typed) =
527-
builder.add(" {\n")
527+
builder.addLineEndIndent(" {")
528528
body
529-
builder.add("}\n\n")
529+
builder.addLineEndDedent("}")
530+
builder.addNewline
530531

531532
proc addProcVar(builder: var Builder, m: BModule, prc: PSym, name: string, params, rettype: Snippet,
532533
isStatic = false, ignoreAttributes = false) =
@@ -552,7 +553,7 @@ proc addProcVar(builder: var Builder, m: BModule, prc: PSym, name: string, param
552553
if noreturn and hasAttribute in extccomp.CC[m.config.cCompiler].props:
553554
builder.add(" __attribute__((noreturn))")
554555
# ensure we are just adding a variable:
555-
builder.add(";\n")
556+
builder.addLineEnd(";")
556557

557558
proc addProcVar(builder: var Builder, callConv: TCallingConvention,
558559
name: string, params, rettype: Snippet, isStatic = false) =
@@ -567,4 +568,4 @@ proc addProcVar(builder: var Builder, callConv: TCallingConvention,
567568
builder.add(")")
568569
builder.add(params)
569570
# ensure we are just adding a variable:
570-
builder.add(";\n")
571+
builder.addLineEnd(";")

0 commit comments

Comments
 (0)