microuiHelpers.def 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. DEFINITION MODULE microuiHelpers;
  2. (* Utility procedures for the microui Modula-2 port.
  3. Bitwise operations on CARDINAL (ISO M2 has none), real-to-string
  4. formatting for the widget labels, and a basic strtod replacement.
  5. Compilation (from modula2/):
  6. gm2 -fiso -I. -c microuiHelpers.mod
  7. *)
  8. FROM SYSTEM IMPORT ADDRESS, BYTE;
  9. PROCEDURE BITAND(a, b : CARDINAL) : CARDINAL;
  10. PROCEDURE BITOR(a, b : CARDINAL) : CARDINAL;
  11. PROCEDURE BITXOR(a, b : CARDINAL) : CARDINAL;
  12. PROCEDURE BITNOT(a : CARDINAL) : CARDINAL;
  13. PROCEDURE BITLSL(a, n : CARDINAL) : CARDINAL;
  14. PROCEDURE BITASR(a, n : CARDINAL) : CARDINAL;
  15. PROCEDURE HasFlag(val, flag : CARDINAL) : BOOLEAN;
  16. PROCEDURE HasNoFlag(val, flag : CARDINAL) : BOOLEAN;
  17. PROCEDURE StrLen(s : ARRAY OF CHAR) : CARDINAL;
  18. PROCEDURE CopyBytes(src, dst : ADDRESS; len : CARDINAL);
  19. (* Conversions from the integer types to SHORTREAL. GNU Modula-2 16.0.1
  20. miscompiles the type conversion SHORTREAL(x) for an integer x (it yields
  21. 0), so these helpers go through the standard FLOAT function and assign the
  22. result to a SHORTREAL. *)
  23. PROCEDURE IntToReal(n : INTEGER) : SHORTREAL;
  24. PROCEDURE CardToReal(n : CARDINAL) : SHORTREAL;
  25. (* Real-to-string: formats val into buf.
  26. prec < 0: %g style (prec = number of significant digits, up to 6).
  27. prec >= 0: fixed-point with prec decimal places.
  28. Returns the number of characters written (excluding NUL). *)
  29. PROCEDURE RealToStr(VAR buf : ARRAY OF CHAR; val : SHORTREAL; prec : INTEGER) : CARDINAL;
  30. (* Integer-to-string for "%d" style. *)
  31. PROCEDURE IntToStr(VAR buf : ARRAY OF CHAR; val : INTEGER) : CARDINAL;
  32. (* Hex to-string for "%02X" style (2-digit uppercase hex). *)
  33. PROCEDURE HexByte(VAR buf : ARRAY OF CHAR; val : CARDINAL) : CARDINAL;
  34. (* Minimal strtod: parses a decimal floating-point number from s.
  35. endptr receives the first character not consumed (may be NIL). *)
  36. PROCEDURE StrToReal(s : ARRAY OF CHAR; endptr : ADDRESS) : SHORTREAL;
  37. END microuiHelpers.