demo.odin 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #foreign_system_library "winmm" when ODIN_OS == "windows";
  2. #import win32 "sys/windows.odin" when ODIN_OS == "windows";
  3. #import "fmt.odin";
  4. timeGetTime :: proc() -> u32 #foreign #dll_import
  5. GetSystemTimeAsFileTime :: proc(SystemTimeAsFileTime : ^win32.FILETIME) #foreign #dll_import
  6. GetCommandLineArguments :: proc() -> []string {
  7. argString := win32.GetCommandLineA();
  8. fullArgString := to_odin_string(argString);
  9. // Count Spaces
  10. for r : fullArgString {
  11. fmt.println(r);
  12. }
  13. }
  14. to_odin_string :: proc(c: ^byte) -> string {
  15. s: string;
  16. s.data = c;
  17. while (c + s.count)^ != 0 {
  18. s.count += 1;
  19. }
  20. return s;
  21. }
  22. //("Hellope!\x00" as string).data
  23. MAGIC_VALUE :: 0xCA5E713F;
  24. timing_file_header :: struct #ordered {
  25. MagicValue : u32;
  26. }
  27. timing_file_date :: struct #ordered {
  28. E : [2]u32;
  29. }
  30. timing_file_entry_flag :: enum {
  31. Complete = 0x1,
  32. NoErrors = 0x2,
  33. }
  34. timing_file_entry :: struct #ordered {
  35. StarDate : timing_file_date;
  36. Flags : u32;
  37. MillisecondsElapsed : u32;
  38. }
  39. timing_entry_array :: struct #ordered {
  40. Entries : []timing_file_entry;
  41. }
  42. GetClock :: proc () -> u32 {
  43. return timeGetTime();
  44. }
  45. GetDate :: proc() -> timing_file_date {
  46. Result : timing_file_date;
  47. FileTime : win32.FILETIME;
  48. GetSystemTimeAsFileTime(^FileTime);
  49. Result.E[0] = FileTime.lo;
  50. Result.E[1] = FileTime.hi;
  51. return Result;
  52. }
  53. main :: proc () {
  54. EntryClock := GetClock();
  55. GetCommandLineArguments();
  56. }