mirror of
https://github.com/SHOGGOTH-SECTOR/sica-fondt.git
synced 2026-08-01 08:30:20 +00:00
Place useful parts of the surrounding repos into sica-fondt by layer, per the
body model (Ada = membrane; brain/endocrine/capabilities/knowledge non-Ada):
- brain/ LLM reasoning + providers (dapr, hermes, MoMoA)
- capabilities/ REPRAG sidecars: hermes tools/skills, dapr tools, parallel
dispatch, A51 channels, and the OSINT cluster
- knowledge/ LORAG corpus: 754 cyber-skills, agency personas, secure-coding,
MITRE ATT&CK data
- reference/ defensive threat-reference (C3, shhbruh doc) + AdaYaml parser
License handling: AGPL sources (worldosint, advanced_evolution, mercury,
Reticulum) and GPL DeTTECT are SPEC-only clean-room/port descriptions — no
copyleft code copied. MIT/Apache/data parts copied as working trees.
Safety: shhbruh escape/persistence material and C3 covert-C2 kept as reference
only, not wired into the running organism. See CONSOLIDATION.md.
https://claude.ai/code/session_01UehUqEXXJJCsHoA4voCU5c
240 lines
8.0 KiB
Ada
240 lines
8.0 KiB
Ada
-- part of AdaYaml, (c) 2017 Felix Krause
|
|
-- released under the terms of the MIT license, see the file "copying.txt"
|
|
|
|
with Yaml.Dom.Node;
|
|
|
|
package body Yaml.Dom.Sequence_Data is
|
|
use type Count_Type;
|
|
|
|
type Iterator is new Iterators.Forward_Iterator with record
|
|
Container : not null access constant Instance;
|
|
end record;
|
|
|
|
function First (Object : Iterator) return Cursor is
|
|
((Container => Object.Container, Index => 1));
|
|
|
|
function Next (Object : Iterator; Position : Cursor)
|
|
return Cursor is
|
|
((Container => Object.Container,
|
|
Index => Natural'Min (Position.Index,
|
|
Object.Container.Data.Last_Index) + 1));
|
|
|
|
function "=" (Left, Right : Instance) return Boolean is
|
|
begin
|
|
if Left.Data.Length /= Right.Data.Length then
|
|
return False;
|
|
else
|
|
for Index in 1 .. Left.Data.Length loop
|
|
if Left.Data (Positive (Index)) /= Right.Data (Positive (Index)) then
|
|
return False;
|
|
end if;
|
|
end loop;
|
|
return True;
|
|
end if;
|
|
end "=";
|
|
|
|
function Capacity (Container : Instance) return Count_Type is
|
|
(Container.Data.Capacity);
|
|
|
|
procedure Reserve_Capacity (Container : in out Instance;
|
|
Capacity : in Count_Type) is
|
|
begin
|
|
Container.Data.Reserve_Capacity (Capacity);
|
|
end Reserve_Capacity;
|
|
|
|
function Length (Object : Instance) return Count_Type is
|
|
(Object.Data.Length);
|
|
|
|
function Is_Empty (Container : Instance) return Boolean is
|
|
(Container.Data.Is_Empty);
|
|
|
|
procedure Clear (Container : in out Instance) is
|
|
begin
|
|
Container.Data.Clear;
|
|
end Clear;
|
|
|
|
function To_Cursor (Container : Instance;
|
|
Index : Natural) return Cursor is
|
|
((Container => Container'Unrestricted_Access, Index => Index));
|
|
|
|
function To_Index (Position : Cursor) return Natural is
|
|
(Position.Index);
|
|
|
|
function Has_Element (Position : Cursor) return Boolean is
|
|
(Position.Container /= null and then Position.Index > 0 and then
|
|
Position.Index <= Position.Container.Data.Last_Index);
|
|
|
|
function Element (Object : Instance; Index : Positive)
|
|
return Node_Reference is
|
|
begin
|
|
Increase_Refcount (Object.Document);
|
|
return ((Ada.Finalization.Controlled with
|
|
Data => Object.Data.Element (Index),
|
|
Document => Object.Document));
|
|
end Element;
|
|
|
|
function Element (Object : Instance; Position : Cursor)
|
|
return Node_Reference is
|
|
(Object.Element (Positive (Position.Index)));
|
|
|
|
procedure Iterate (Object : Instance;
|
|
Process : not null access procedure
|
|
(Item : not null access Node.Instance)) is
|
|
begin
|
|
for Item of Object.Data loop
|
|
Process.all (Item);
|
|
end loop;
|
|
end Iterate;
|
|
|
|
function Iterate (Object : Instance)
|
|
return Iterators.Forward_Iterator'Class is
|
|
(Iterator'(Container => Object'Unrestricted_Access));
|
|
|
|
procedure Replace_Element (Container : in out Instance;
|
|
Index : in Positive;
|
|
New_Item : in Node_Reference) is
|
|
begin
|
|
Container.Data.Replace_Element (Index, New_Item.Data);
|
|
end Replace_Element;
|
|
|
|
procedure Replace_Element (Container : in out Instance;
|
|
Position : in Cursor;
|
|
New_Item : in Node_Reference) is
|
|
begin
|
|
Container.Data.Replace_Element (Position.Index, New_Item.Data);
|
|
end Replace_Element;
|
|
|
|
procedure Insert (Container : in out Instance;
|
|
Before : in Positive;
|
|
New_Item : in Node_Reference) is
|
|
begin
|
|
Container.Data.Insert (Before, New_Item.Data);
|
|
end Insert;
|
|
|
|
procedure Insert (Container : in out Instance;
|
|
Before : in Cursor;
|
|
New_Item : in Node_Reference) is
|
|
begin
|
|
Container.Data.Insert (Before.Index, New_Item.Data);
|
|
end Insert;
|
|
|
|
procedure Insert (Container : in out Instance;
|
|
Before : in Cursor;
|
|
New_Item : in Node_Reference;
|
|
Position : out Cursor) is
|
|
Raw_Cursor : Node_Vectors.Cursor;
|
|
begin
|
|
Container.Data.Insert (Container.Data.To_Cursor (Before.Index),
|
|
New_Item.Data, Raw_Cursor);
|
|
Position := (Container => Container'Unrestricted_Access,
|
|
Index => Node_Vectors.To_Index (Raw_Cursor));
|
|
end Insert;
|
|
|
|
procedure Prepend (Container : in out Instance;
|
|
New_Item : in Node_Reference) is
|
|
begin
|
|
Container.Data.Prepend (New_Item.Data);
|
|
end Prepend;
|
|
|
|
procedure Append (Container : in out Instance;
|
|
New_Item : in Node_Reference) is
|
|
begin
|
|
Container.Data.Append (New_Item.Data);
|
|
end Append;
|
|
|
|
procedure Delete (Container : in out Instance;
|
|
Index : in Positive;
|
|
Count : in Count_Type := 1) is
|
|
begin
|
|
Container.Data.Delete (Index, Count);
|
|
end Delete;
|
|
|
|
procedure Delete (Container : in out Instance;
|
|
Position : in out Cursor;
|
|
Count : in Count_Type := 1) is
|
|
begin
|
|
Container.Data.Delete (Position.Index, Count);
|
|
end Delete;
|
|
|
|
procedure Delete_First (Container : in out Instance;
|
|
Count : in Count_Type := 1) is
|
|
begin
|
|
Container.Data.Delete_First (Count);
|
|
end Delete_First;
|
|
|
|
procedure Delete_Last (Container : in out Instance;
|
|
Count : in Count_Type := 1) is
|
|
begin
|
|
Container.Data.Delete_Last (Count);
|
|
end Delete_Last;
|
|
|
|
procedure Reverse_Elements (Container : in out Instance) is
|
|
begin
|
|
Container.Data.Reverse_Elements;
|
|
end Reverse_Elements;
|
|
|
|
procedure Swap (Container : in out Instance;
|
|
I, J : in Positive) is
|
|
begin
|
|
Container.Data.Swap (I, J);
|
|
end Swap;
|
|
|
|
procedure Swap (Container : in out Instance;
|
|
I, J : in Cursor) is
|
|
begin
|
|
Container.Data.Swap (I.Index, J.Index);
|
|
end Swap;
|
|
|
|
function First_Index (Container : Instance) return Positive is
|
|
(Container.Data.First_Index);
|
|
|
|
function First (Container : Instance) return Cursor is
|
|
((Container => Container'Unrestricted_Access,
|
|
Index => Container.Data.First_Index));
|
|
|
|
function First_Element (Container : Instance) return Node_Reference is
|
|
(Container.Element (Container.Data.First_Index));
|
|
|
|
function Last_Index (Container : Instance) return Natural is
|
|
(Container.Data.Last_Index);
|
|
|
|
function Last (Container : Instance) return Cursor is
|
|
((Container => Container'Unrestricted_Access,
|
|
Index => Container.Data.Last_Index));
|
|
|
|
function Last_Element (Container : Instance) return Node_Reference is
|
|
(Container.Element (Container.Data.Last_Index));
|
|
|
|
function Next (Position : Cursor) return Cursor is
|
|
((Container => Position.Container,
|
|
Index => Natural'Min (Position.Index,
|
|
Position.Container.Data.Last_Index) + 1));
|
|
|
|
procedure Next (Position : in out Cursor) is
|
|
begin
|
|
Position.Index := Natural'Min (Position.Index,
|
|
Position.Container.Data.Last_Index) + 1;
|
|
end Next;
|
|
|
|
function Previous (Position : Cursor) return Cursor is
|
|
((Container => Position.Container,
|
|
Index => Position.Index - 1));
|
|
|
|
procedure Previous (Position : in out Cursor) is
|
|
begin
|
|
Position.Index := Position.Index - 1;
|
|
end Previous;
|
|
|
|
package body Friend_Interface is
|
|
function For_Document (Document : not null access Document_Instance)
|
|
return Instance is
|
|
(Document => Document, Data => <>);
|
|
|
|
procedure Raw_Append (Container : in out Instance;
|
|
New_Item : not null access Node.Instance) is
|
|
begin
|
|
Container.Data.Append (Node_Pointer (New_Item));
|
|
end Raw_Append;
|
|
end Friend_Interface;
|
|
end Yaml.Dom.Sequence_Data;
|