📄 dglintf.inc_h
字号:
function Distance(const Iterator:_IIterator):integer; //{$ifdef _DGL_Inline} inline; {$endif}
procedure Assign (const Iterator:_IIterator); //{$ifdef _DGL_Inline} inline; {$endif}
procedure Next();overload; {$ifdef _DGL_Inline} inline; {$endif}
procedure Next(const Step:integer);overload; {$ifdef _DGL_Inline} inline; {$endif}
procedure Previous(); {$ifdef _DGL_Inline} inline; {$endif}
function Clone():_IIterator; overload; {$ifdef _DGL_Inline} inline; {$endif}
function Clone(const NextStep:integer):_IIterator;overload; {$ifdef _DGL_Inline} inline; {$endif}
end;
_DGL_TObjIterator = class(TObject)
public
class function IteratorTraits():TIteratorTraits; virtual; abstract;
class procedure SetValue(const SelfItData:_IIterator;const aValue: _ValueType); virtual; abstract;
class function GetValue(const SelfItData:_IIterator): _ValueType; virtual; abstract;
class function GetNextValue(const SelfItData:_IIterator;const Step:integer): _ValueType; virtual; abstract;
class procedure SetNextValue(const SelfItData:_IIterator;const Step:integer;const aValue:_ValueType); virtual; abstract;
class function IsEqual(const SelfItData:_IIterator;const Iterator:_IIterator):boolean; virtual; abstract;
class function Distance(const SelfItData:_IIterator;const Iterator:_IIterator):integer; virtual; abstract;
class procedure Assign (var SelfItData:_IIterator;const Iterator:_IIterator); virtual; abstract;
class procedure Next(var SelfItData:_IIterator);overload; virtual; abstract;
class procedure Next(var SelfItData:_IIterator;const Step:integer);overload; virtual; abstract;
class procedure Previous(var SelfItData:_IIterator); virtual; abstract;
class function Clone(const SelfItData:_IIterator):_IIterator;overload; virtual; abstract;
class function Clone(const SelfItData:_IIterator;const NextStep:integer):_IIterator;overload; virtual; abstract;
class function Map_GetKey(const SelfItData:_IIterator): _KeyType; virtual; abstract;
end;
//容器(Container)的统一说明
//----------------------------------------------------------------------------
// 作用描述: 用来保存和组织多个数据,是抽象出的存储概念,和实现无关
// 主要方法:ItBegin方法:返回指向容器里第一个元素的 迭代器
// ItEnd方法:返回指向容器里最后一个元素的后面一个位置的 迭代器
// Clear方法:清空容器中的所有数据
// Size方法:容器中的元素个数
// IsEmpty方法:容器是否为空,返回值等价于(0=Size());
// GetSelfObj方法:返回接口存在的原始对象(self指针),内部使用
// Erase方法: 删除容器中值等于参数Value的元素,返回删除的元素个数
// Erase方法: 从容器中删除迭代器指向的元素
// Insert方法: 在容器指定位置插入一个或多个元素
// Assign方法: 整个容器清空重新赋值
// Clone方法:创建一个新的容器,并拥有和自身一样的元素
// 使用方式:
// 注意事项:
// 作 者: HouSisong ,2004.08.31
// [相关资料]: (如果有的话)
// [维护记录]: (类发布后,其修改需要记录下来:修改人、时间、主要原因内容)
//----------------------------------------------------------------------------
_IContainer = interface
function ItBegin(): _IIterator;
function ItEnd(): _IIterator;
procedure Clear();
function Size(): Integer;
function IsEmpty(): Boolean;
function EraseValue(const Value:_ValueType):integer; overload;
procedure Erase(const ItPos:_IIterator); overload;
procedure Erase(const ItBegin,ItEnd: _IIterator); overload;
procedure Insert(const Value:_ValueType); overload;
procedure Insert(const ItPos:_IIterator;const Value:_ValueType); overload;
procedure Insert(const ItPos:_IIterator;const num:integer;const Value:_ValueType); overload;
procedure Insert(const ItPos:_IIterator;const ItBegin,ItEnd:_IIterator);overload;
procedure Assign(const num:integer;const Value: _ValueType);overload;
procedure Assign(const ItBegin,ItEnd:_IIterator);overload;
function Clone():_IContainer;
procedure CloneToInterface(out NewContainer_Interface); //NewContainer:=_IContainer.Clone();
function GetSelfObj():TObject;
end;
//序列容器(SerialContainer)的统一说明
//----------------------------------------------------------------------------
// 作用描述: 元素按顺序储存的容器
// 主要方法:(参见_IContainer)
// PushBack方法:在容器后部插入一个或多个元素
// PopBack方法: 弹出最后一个元素
// Back方法: 返回最后一个元素
// PushFront方法:在容器的最前面插入一个元素
// PopFront方法: 弹出第一个元素
// Front方法: 返回第一个元素
// IsEquals方法:判断两个容器中的元素是否完全相等
// 使用方式:
// 注意事项:
// 作 者: HouSisong ,2004.09.09
// [相关资料]: (如果有的话)
// [维护记录]: (类发布后,其修改需要记录下来:修改人、时间、主要原因内容)
//----------------------------------------------------------------------------
_ISerialContainer = interface(_IContainer)
procedure PushBack(const Value: _ValueType); overload;
procedure PushBack(const num:integer;Value: _ValueType); overload;
procedure PushBack(const ItBegin,ItEnd: _IIterator); overload;
procedure PopBack();
function GetBackValue():_ValueType;
procedure SetBackValue(const aValue:_ValueType);
property Back: _ValueType read GetBackValue write SetBackValue;
procedure PushFront(const Value: _ValueType);overload ;
procedure PushFront(const num:integer;Value: _ValueType); overload;
procedure PushFront(const ItBegin,ItEnd: _IIterator); overload;
procedure PopFront();
function GetFrontValue():_ValueType;
procedure SetFrontValue(const aValue:_ValueType);
property Front: _ValueType read GetFrontValue write SetFrontValue;
function IsEquals(const AContainer: _IContainer): Boolean;
function IsLess(const AContainer: _IContainer): Boolean;
procedure Resize(const num:integer); overload;
procedure Resize(const num:integer;const Value:_ValueType); overload;
end;
//向量(Vector)的统一说明
//----------------------------------------------------------------------------
// 作用描述: 用线性的内存空间(数组)来组织数据,容器的一个具体实现
// 主要方法:IndexOf方法:返回元素在容器中的位置
// Items属性:以序号的方式快速的访问容器中的元素,时间复杂度O(1)
// Reserve方法: 容器预留一些空间(减少动态分配)
// Resize方法: 改变容器大小
// 使用方式:
// 注意事项:
// 作 者: HouSisong ,2004.08.31
// [相关资料]: (如果有的话)
// [维护记录]: (类发布后,其修改需要记录下来:修改人、时间、主要原因内容)
//----------------------------------------------------------------------------
_IVector = interface(_ISerialContainer)
function GetItemValue(const Index: Integer): _ValueType;
procedure SetItemValue(const Index: Integer;const Value: _ValueType);
property Items[const Index: Integer]: _ValueType read GetItemValue write SetItemValue;
function IndexOf(const Value: _ValueType): Integer;
procedure InsertByIndex(const Index: Integer;const Value: _ValueType);
function NewIterator(const Index: Integer):_IIterator;
procedure Reserve(const ReserveSize: integer);
procedure EraseByIndex(const Index: integer); overload;
end;
//链表(List)的统一说明
//----------------------------------------------------------------------------
// 作用描述: 数据以数据接点串连的方式组织,容器的一个具体实现
// 主要方法:Unique方法:若相邻元素相同,只留下一个
// Splice方法:将AContainer内的元素转移到自己的Pos处
// Merge方法: 将AContainer内的已序元素转移到已序的自己,并且自己仍保持有序
// Reverse方法: 将元素反序
// 使用方式:
// 注意事项: 作为参数的:_IList的实际类型必须和自身的类类型一致!
// 作 者: HouSisong ,2004.08.31
// [相关资料]: (如果有的话)
// [维护记录]: (类发布后,其修改需要记录下来:修改人、时间、主要原因内容)
//----------------------------------------------------------------------------
_IList = interface(_ISerialContainer)
procedure Unique(); overload;
procedure Unique(const TestBinaryFunction:TTestBinaryFunction); overload;
procedure Unique(const TestBinaryFunction:TTestBinaryFunctionOfObject); overload;
procedure Splice(const ItPos:_IIterator; AList:_IList); overload; //全部转移
procedure Splice(const ItPos:_IIterator; AList:_IList;const ACItPos:_IIterator); overload;//转移ACItPos一个
procedure Splice(const ItPos:_IIterator; AList:_IList;const ACItBegin,ACItEnd:_IIterator); overload;
procedure Reverse();
function EraseValueIf(const TestFunction:TTestFunction):integer; overload;
function EraseValueIf(const TestFunction:TTestFunctionOfObject):integer; overload;
procedure Sort(); overload;
procedure Sort(const TestBinaryFunction:TTestBinaryFunction); overload;
procedure Sort(const TestBinaryFunction:TTestBinaryFunctionOfObject); overload;
procedure Merge(AList:_IList); overload;
procedure Merge(AList:_IList;const TestBinaryFunction:TTestBinaryFunction); overload;
procedure Merge(AList:_IList;const TestBinaryFunction:TTestBinaryFunctionOfObject);overload;
end;
//单向链表(SList)的统一说明
//----------------------------------------------------------------------------
// 作用描述: 数据以数据接点单向串连的方式组织,容器的一个具体实现
// 主要方法:
// 使用方式:
// 注意事项:
// 作 者: HouSisong ,2006.10.22
// [相关资料]: (如果有的话)
// [维护记录]: (类发布后,其修改需要记录下来:修改人、时间、主要原因内容)
//----------------------------------------------------------------------------
_ISList = interface(_ISerialContainer)
end;
//队列(Deque)的统一说明
//----------------------------------------------------------------------------
// 作用描述: 与Vector相仿并能够在前端也快速插入和删除元素,容器的一个具体实现
// 主要方法:
// 使用方式:
// 注意事项:
// 作 者: HouSisong ,2004.08.31
// [相关资料]: (如果有的话)
// [维护记录]: (类发布后,其修改需要记录下来:修改人、时间、主要原因内容)
//----------------------------------------------------------------------------
_IDeque = interface(_IVector)
end;
//对堆栈(Stack)的统一说明
//----------------------------------------------------------------------------
// 作用描述: 容器配接器的一种,一端开口,先进后出队列
// 主要方法:Push方法:压入一个元素
// Pop方法:弹出元素
// Top方法:返回开口处的当前值
// Clear方法:清空容器中的数据
// Size方法:返回容器中的元素个数
// IsEmpty方法:判断容器是否为空
// IsEquals方法:判断两个容器中的元素是否完全相等
// Clone方法:创建一个新的容器,并拥有和自身一样的元素
// Assign方法: 整个容器清空重新赋值
// GetSelfObj方法:返回接口存在的原始对象(self指针),内部使用
// 使用方式:
// 注意事项:
// 作 者: HouSisong ,2004.08.31
// [相关资料]: (如果有的话)
// [维护记录]: (类发布后,其修改需要记录下来:修改人、时间、主要原因内容)
//----------------------------------------------------------------------------
_IStack = interface
procedure Push(const Value: _ValueType);
procedure Pop();
function GetTopValue():_ValueType;
procedure SetTopValue(const aValue:_ValueType);
property Top: _ValueType read GetTopValue write SetTopValue;
procedure Clear();
function Size(): Integer;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -