1
1
mirror of https://github.com/kanaka/mal.git synced 2024-09-21 02:27:10 +03:00
mal/impls/ada.2/types-strings.adb
Joel Martin 8a19f60386 Move implementations into impls/ dir
- 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.
2020-02-10 23:50:16 -06:00

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;