← All compilation units

Flyology_JSON.Profiles

Description

Version identifiers are values rather than suffixes in declaration names. The initial implementation supports version 1 for each family; adding behavior under an existing family/version is incompatible.

BOM_Policy

type BOM_Policy is (Reject_BOM);
Enumeration literals
Reject_BOM

Compatibility_Family

type Compatibility_Family is (No_Extensions);
Enumeration literals
No_Extensions

Duplicate_Policy

type Duplicate_Policy is (Reject_Duplicates, Preserve_Unchecked);
Enumeration literals
Reject_Duplicates
Preserve_Unchecked

Output_Policy

type Output_Policy is (Ordinary_Compact);
Enumeration literals
Ordinary_Compact

Parser_Profile

type Parser_Profile is record
   Syntax        : Versioned_Syntax;
   Unicode       : Versioned_Unicode;
   Compatibility : Versioned_Compatibility;
   BOM           : BOM_Policy;
   Duplicates    : Duplicate_Policy;
   Top_Level     : Top_Level_Policy;
end record;
Record fields
Syntax
Unicode
Compatibility
BOM
Duplicates
Top_Level

Profile_Status

type Profile_Status is (Profile_Supported, Profile_Unsupported, Profile_Incompatible);

There is deliberately no profile factory, default, capacity, or policy constant. A caller constructs every field explicitly. The trusted profiles contain no accounting capability or hook.

Enumeration literals
Profile_Supported
Profile_Unsupported
Profile_Incompatible

Profile_Version

subtype Profile_Version is Positive;

Version identifiers are values rather than suffixes in declaration names. The initial implementation supports version 1 for each family; adding behavior under an existing family/version is incompatible.

Syntax_Family

type Syntax_Family is (RFC_8259);
Enumeration literals
RFC_8259

Top_Level_Policy

type Top_Level_Policy is (Accept_Any_Value, Require_Object);
Enumeration literals
Accept_Any_Value
Require_Object

Unicode_Family

type Unicode_Family is (Unicode_Scalars);
Enumeration literals
Unicode_Scalars

Validate

function Validate (Profile : Parser_Profile) return Profile_Status

Validate accepts only the declared initial family/version combinations. Parser/writer operations separately freeze a validated profile before consuming input or beginning a destination transaction.

Parameters
Profile
Return value

Validate

function Validate (Profile : Writer_Profile) return Profile_Status
Parameters
Profile
Return value

Versioned_Compatibility

type Versioned_Compatibility is record
   Family  : Compatibility_Family;
   Version : Profile_Version;
end record;
Record fields
Family
Version

Versioned_Output

type Versioned_Output is record
   Policy  : Output_Policy;
   Version : Profile_Version;
end record;
Record fields
Policy
Version

Versioned_Syntax

type Versioned_Syntax is record
   Family  : Syntax_Family;
   Version : Profile_Version;
end record;
Record fields
Family
Version

Versioned_Unicode

type Versioned_Unicode is record
   Family  : Unicode_Family;
   Version : Profile_Version;
end record;
Record fields
Family
Version

Writer_Profile

type Writer_Profile is record
   Syntax     : Versioned_Syntax;
   Unicode    : Versioned_Unicode;
   Formatting : Versioned_Output;
end record;
Record fields
Syntax
Unicode
Formatting