OfficeXml/autounit/SharedMLAdapters.tsf

148 lines
3.4 KiB
Plaintext

unit SharedMLAdapters;
interface
type Relationships = class
public
function create(_obj: Relationships);
function Init();
function GetRelationshipById(_key: string);
function GetRelationshipByTarget(_key: string);
function AddRelationship(_value: Relationship);
function RemoveRelationship(_value: Relationship);
property RelationshipCount: uinteger read relationship_count_;
private
object_: Relationships;
relationship_id_hash_: hash;
relationship_target_hash_: hash;
relationship_count_: uinteger;
end;
type Types = class
public
function create(_obj: Types);
function Init();
function GetDefaultByExtension(_key: string);
function AddDefault(_value: Default);
function RemoveDefault(_value: Default);
function Get_OverrideByPartName(_key: string);
function Add_Override(_value: _Override);
function Remove_Override(_value: _Override);
property DefaultCount: uinteger read default_count_;
property _OverrideCount: uinteger read _override_count_;
private
object_: Types;
default_extension_hash_: hash;
default_count_: uinteger;
_override_partname_hash_: hash;
_override_count_: uinteger;
end;
implementation
function Relationships.create(_obj: Relationships);
begin
object_ := _obj;
relationship_count_ := 0;
relationship_id_hash_ := array();
relationship_target_hash_ := array();
{self.}Init();
end;
function Relationships.Init();
begin
elements := object_.Relationships();
relationship_count_ := length(elements);
for k,v in elements do
begin
relationship_id_hash_[v.Id] := v;
relationship_target_hash_[v.Target] := v;
end
end;
function Relationships.GetRelationshipById(_key: string);
begin
return relationship_id_hash_[_key];
end;
function Relationships.GetRelationshipByTarget(_key: string);
begin
return relationship_target_hash_[_key];
end;
function Relationships.AddRelationship(_value: Relationship);
begin
relationship_id_hash_[_value.Id] := _value;
relationship_target_hash_[_value.Target] := _value;
relationship_count_++;
end;
function Relationships.RemoveRelationship(_value: Relationship);
begin
reindex(relationship_id_hash_, array(_value.Id: nil));
reindex(relationship_target_hash_, array(_value.Target: nil));
relationship_count_--;
end;
function Types.create(_obj: Types);
begin
object_ := _obj;
default_count_ := 0;
default_extension_hash_ := array();
_override_count_ := 0;
_override_partname_hash_ := array();
{self.}Init();
end;
function Types.Init();
begin
elements := object_.Defaults();
default_count_ := length(elements);
for k,v in elements do
default_extension_hash_[v.Extension] := v;
elements := object_.Overrides();
_override_count_ := length(elements);
for k,v in elements do
_override_partname_hash_[v.PartName] := v;
end;
function Types.GetDefaultByExtension(_key: string);
begin
return default_extension_hash_[_key];
end;
function Types.AddDefault(_value: Default);
begin
default_extension_hash_[_value.Extension] := _value;
default_count_++;
end;
function Types.RemoveDefault(_value: Default);
begin
reindex(default_extension_hash_, array(_value.Extension: nil));
default_count_--;
end;
function Types.Get_OverrideByPartName(_key: string);
begin
return _override_partname_hash_[_key];
end;
function Types.Add_Override(_value: _Override);
begin
_override_partname_hash_[_value.PartName] := _value;
_override_count_++;
end;
function Types.Remove_Override(_value: _Override);
begin
reindex(_override_partname_hash_, array(_value.PartName: nil));
_override_count_--;
end;
end.