Skip to content

Commit 8d21c06

Browse files
committed
Add ability to change case of stuff
1 parent 7d0004b commit 8d21c06

7 files changed

Lines changed: 193 additions & 57 deletions

File tree

‎golang/codegen/purego_to.odin‎

Lines changed: 7 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -370,12 +370,8 @@ purego_generate_function_symbol_declarations :: proc(
370370

371371
if _, is_type := sym.value.(runic.Type); is_type do continue
372372

373-
upper_sym_name, upper_sym_name_err := strings.to_pascal_case(sym_name)
374-
if upper_sym_name_err != .None do continue
375-
defer delete(upper_sym_name)
376-
377373
strings.write_rune(&buf, '\t')
378-
strings.write_string(&buf, upper_sym_name)
374+
strings.write_string(&buf, sym_name)
379375
strings.write_rune(&buf, ' ')
380376
purego_write_symbol(&buf, sym, rs.externs, rn)
381377

@@ -412,18 +408,14 @@ purego_generate_type_symbol_getters :: proc(
412408

413409
if _, is_type := sym.value.(runic.Type); !is_type do continue
414410

415-
upper_sym_name, upper_sym_name_err := strings.to_pascal_case(sym_name)
416-
if upper_sym_name_err != .None do continue
417-
defer delete(upper_sym_name)
418-
419411
strings.write_string(&buf, "func ")
420-
strings.write_string(&buf, upper_sym_name)
412+
strings.write_string(&buf, sym_name)
421413
strings.write_string(&buf, "() ")
422414
write_type(&buf, sym.value.(runic.Type), rn, rs.externs, false)
423415
strings.write_string(&buf, " {\n\treturn *(*")
424416
write_type(&buf, sym.value.(runic.Type), rn, rs.externs, false)
425417
strings.write_string(&buf, ")(unsafe.Pointer(runicPtr")
426-
strings.write_string(&buf, upper_sym_name)
418+
strings.write_string(&buf, sym_name)
427419
strings.write_string(&buf, "))\n}\n")
428420
}
429421

@@ -455,18 +447,14 @@ purego_generate_type_symbol_setters :: proc(
455447

456448
if _, is_type := sym.value.(runic.Type); !is_type do continue
457449

458-
upper_sym_name, upper_sym_name_err := strings.to_pascal_case(sym_name)
459-
if upper_sym_name_err != .None do continue
460-
defer delete(upper_sym_name)
461-
462450
strings.write_string(&buf, "func Set")
463-
strings.write_string(&buf, upper_sym_name)
451+
strings.write_string(&buf, sym_name)
464452
strings.write_string(&buf, "(value ")
465453
write_type(&buf, sym.value.(runic.Type), rn, rs.externs, false)
466454
strings.write_string(&buf, ") {\n\t*(*")
467455
write_type(&buf, sym.value.(runic.Type), rn, rs.externs, false)
468456
strings.write_string(&buf, ")(unsafe.Pointer(runicPtr")
469-
strings.write_string(&buf, upper_sym_name)
457+
strings.write_string(&buf, sym_name)
470458
strings.write_string(&buf, ")) = value\n}\n")
471459
}
472460

@@ -500,12 +488,8 @@ purego_generate_type_symbol_pointers :: proc(
500488

501489
if _, is_type := sym.value.(runic.Type); !is_type do continue
502490

503-
upper_sym_name, upper_sym_name_err := strings.to_pascal_case(sym_name)
504-
if upper_sym_name_err != .None do continue
505-
defer delete(upper_sym_name)
506-
507491
strings.write_string(&buf, "\trunicPtr")
508-
strings.write_string(&buf, upper_sym_name)
492+
strings.write_string(&buf, sym_name)
509493
strings.write_string(&buf, " uintptr\n")
510494
}
511495

@@ -541,15 +525,11 @@ purego_generate_symbol_registrations :: proc(
541525
sym_name, sym := entry.key, entry.value
542526
_, is_type := sym.value.(runic.Type)
543527

544-
upper_sym_name, upper_sym_name_err := strings.to_pascal_case(sym_name)
545-
if upper_sym_name_err != .None do continue
546-
defer delete(upper_sym_name)
547-
548528
strings.write_string(&buf, "\t\t{&")
549529
if is_type {
550530
strings.write_string(&buf, "runicPtr")
551531
}
552-
strings.write_string(&buf, upper_sym_name)
532+
strings.write_string(&buf, sym_name)
553533
strings.write_string(&buf, ", \"")
554534
strings.write_string(&buf, sym.remap.? or_else sym_name)
555535
strings.write_string(&buf, "\"},")

‎golang/codegen/purego_to_test.odin‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,12 @@ var.windows_globals = Array
113113
package_name = "greatwave",
114114
purego = true,
115115
out = "test_data/to_purego_golang_test.go",
116+
change_case = {
117+
functions = .Pascal,
118+
variables = .Pascal,
119+
constants = .Pascal,
120+
types = .Pascal,
121+
},
116122
extern = {sources = extern_sources, remaps = extern_remaps},
117123
}
118124

‎golang/codegen/to.odin‎

Lines changed: 17 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ package golang_codegen
1818

1919
import "core:io"
2020
import "core:os"
21+
import "core:path/slashpath"
2122
import "core:strings"
2223
import "root:errors"
2324
import om "root:ordered_map"
2425
import "root:runic"
25-
import "core:path/slashpath"
2626

2727
GO_RESERVED :: []string {
2828
"break",
@@ -229,12 +229,8 @@ generate_constants :: proc(rs: runic.Runestone, rn: runic.To) -> string {
229229

230230
if const.value == nil do continue
231231

232-
upper_name, upper_name_err := strings.to_pascal_case(const_name)
233-
if upper_name_err != .None do continue
234-
defer delete(upper_name)
235-
236232
strings.write_rune(&buf, '\t')
237-
strings.write_string(&buf, upper_name)
233+
strings.write_string(&buf, const_name)
238234
strings.write_rune(&buf, ' ')
239235

240236
if builtin, is_builtin := const.type.spec.(runic.Builtin);
@@ -272,12 +268,8 @@ generate_types :: proc(rs: runic.Runestone, rn: runic.To) -> string {
272268
for entry, idx in rs.types.data {
273269
typ_name, typ := entry.key, entry.value
274270

275-
upper_case_type_name, pascal_err := strings.to_pascal_case(typ_name)
276-
if pascal_err != .None do continue
277-
defer delete(upper_case_type_name)
278-
279271
strings.write_string(&buf, "type ")
280-
strings.write_string(&buf, upper_case_type_name)
272+
strings.write_string(&buf, typ_name)
281273
strings.write_rune(&buf, ' ')
282274
write_type(&buf, typ, rn, rs.externs, true)
283275

@@ -422,15 +414,13 @@ write_typespecifier :: proc(
422414
for member in s.members {
423415
strings.write_rune(buf, '\t')
424416

425-
upper_member_name, upper_member_name_err := strings.to_pascal_case(
426-
member.name,
427-
)
428-
if upper_member_name_err != .None {
429-
upper_member_name = strings.clone(member.name)
417+
pascal_name, pascal_err := strings.to_pascal_case(member.name)
418+
if pascal_err != .None {
419+
pascal_name = strings.clone(member.name)
430420
}
431-
defer delete(upper_member_name)
421+
defer delete(pascal_name)
432422

433-
strings.write_string(buf, upper_member_name)
423+
strings.write_string(buf, pascal_name)
434424
strings.write_rune(buf, ' ')
435425
write_type(buf, member.type, rn, externs, false)
436426
strings.write_rune(buf, '\n')
@@ -442,20 +432,21 @@ write_typespecifier :: proc(
442432
strings.write_string(buf, "struct /* union */ {\n")
443433
for member in s.members {
444434
strings.write_rune(buf, '\t')
445-
strings.write_string(buf, member.name)
435+
436+
pascal_name, pascal_err := strings.to_pascal_case(member.name)
437+
if pascal_err != .None {
438+
pascal_name = strings.clone(member.name)
439+
}
440+
defer delete(pascal_name)
441+
442+
strings.write_string(buf, pascal_name)
446443
strings.write_rune(buf, ' ')
447444
write_type(buf, member.type, rn, externs, false)
448445
strings.write_rune(buf, '\n')
449446
}
450447
strings.write_string(buf, "}")
451448
case string:
452-
upper_case_name, err := strings.to_pascal_case(s)
453-
if err != .None {
454-
upper_case_name = strings.clone(s)
455-
}
456-
defer delete(upper_case_name)
457-
458-
strings.write_string(buf, upper_case_name)
449+
strings.write_string(buf, string(s))
459450
case runic.Unknown:
460451
strings.write_string(buf, "unsafe.Pointer /* unknown \"")
461452
strings.write_string(buf, string(s))

0 commit comments

Comments
 (0)