mirror of
https://github.com/kanaka/mal.git
synced 2024-10-27 14:52:16 +03:00
8a19f60386
- Reorder README to have implementation list after "learning tool" bullet. - This also moves tests/ and libs/ into impls. It would be preferrable to have these directories at the top level. However, this causes difficulties with the wasm implementations which need pre-open directories and have trouble with paths starting with "../../". So in lieu of that, symlink those directories to the top-level. - Move the run_argv_test.sh script into the tests directory for general hygiene.
35 lines
984 B
Ada
35 lines
984 B
Ada
with Ada.Strings.Hash;
|
|
|
|
package body Types.Strings is
|
|
|
|
function "=" (Left : in Instance;
|
|
Right : in String) return Boolean
|
|
is (Left.Data = Right);
|
|
|
|
function Alloc (Data : in String) return String_Ptr is
|
|
Ref : constant String_Ptr := new Instance (Data'Length);
|
|
begin
|
|
Garbage_Collected.Register (Garbage_Collected.Pointer (Ref));
|
|
Ref.all.Data := Data;
|
|
return Ref;
|
|
end Alloc;
|
|
|
|
function Hash (Item : in String_Ptr) return Ada.Containers.Hash_Type
|
|
is (Ada.Strings.Hash (Item.all.Data));
|
|
|
|
procedure Query_Element
|
|
(Container : in Instance;
|
|
Process : not null access procedure (Element : in String))
|
|
is
|
|
begin
|
|
Process.all (Container.Data);
|
|
end Query_Element;
|
|
|
|
function Same_Contents (Left, Right : in String_Ptr) return Boolean
|
|
is (Left = Right or else Left.all.Data = Right.all.Data);
|
|
|
|
function To_String (Container : in Instance) return String
|
|
is (Container.Data);
|
|
|
|
end Types.Strings;
|