xml_example.odin 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package xml_example
  2. import "core:encoding/xml"
  3. import "core:mem"
  4. import "core:strings"
  5. import "core:fmt"
  6. Error_Handler :: proc(pos: xml.Pos, fmt: string, args: ..any) {
  7. }
  8. FILENAME :: "../../../../tests/core/assets/xml/nl_NL-xliff-1.0.xliff"
  9. DOC :: #load(FILENAME)
  10. OPTIONS :: xml.Options{
  11. flags = {
  12. .Ignore_Unsupported, .Intern_Comments,
  13. },
  14. expected_doctype = "",
  15. }
  16. _main :: proc() {
  17. using fmt
  18. println("--- DOCUMENT TO PARSE ---")
  19. println(string(DOC))
  20. println("--- /DOCUMENT TO PARSE ---\n")
  21. doc, err := xml.parse(DOC, OPTIONS, FILENAME, Error_Handler)
  22. defer xml.destroy(doc)
  23. buf: strings.Builder
  24. defer strings.destroy_builder(&buf)
  25. w := strings.to_writer(&buf)
  26. xml.print(w, doc)
  27. println(strings.to_string(buf))
  28. if err != .None {
  29. printf("Parse error: %v\n", err)
  30. } else {
  31. println("DONE!")
  32. }
  33. }
  34. main :: proc() {
  35. using fmt
  36. track: mem.Tracking_Allocator
  37. mem.tracking_allocator_init(&track, context.allocator)
  38. context.allocator = mem.tracking_allocator(&track)
  39. _main()
  40. if len(track.allocation_map) > 0 {
  41. println()
  42. for _, v in track.allocation_map {
  43. printf("%v Leaked %v bytes.\n", v.location, v.size)
  44. }
  45. }
  46. }