Pascalutils เป็นห้องสมุดวัตถุสำหรับ Delphi และ freepascal ของโครงสร้างข้อมูลที่ใช้น้ำตาลวากยสัมพันธ์คล้ายกับภาษาสมัยใหม่อื่น ๆ เท่าที่ไวยากรณ์อนุญาต
ห้องสมุดได้รับการทดสอบสำหรับ
รับแหล่งที่มาและเพิ่มไดเรกทอรี ต้นฉบับ ไปยังเส้นทางการค้นหาโครงการ สำหรับ FPC เพิ่มไดเรกทอรี ต้นฉบับ ลงในไฟล์ fpc.cfg
โคลนที่เก็บ git clone https://github.com/isemenkov/pascalutils
เพิ่มหน่วยที่คุณต้องการใช้ในประโยค uses
Tany Class อธิบายคอนเทนเนอร์ประเภทที่ปลอดภัยสำหรับค่าเดียว
uses
utils.any;
type
generic TAny<T> = classคลาส Toptional แสดงถึงค่าเสริม: ทุก toptional มีค่าหรือไม่เหมือนใน Rust Lang
uses
utils.optional;
type
generic TOptional<T> = classรายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
โดยทั่วไปประเภทผลลัพธ์จะมีค่าที่ส่งคืนหรือข้อผิดพลาดและสามารถให้การห่อหุ้มชั้นหนึ่งของรูปแบบทั่วไป (ค่า, ERR) ที่แพร่หลายตลอดโปรแกรม GO
uses
utils.result;
type
generic TResult<V, E> = classรายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
TVOidResult มีธงตกลงหรือประเภทข้อผิดพลาดเช่นในภาษา GO หรือ Rust มันเป็นประเภท tresult เฉพาะที่ไม่มีค่า
uses
utils.result;
type
generic TVoidResult<E> = classรายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
คลาส TDATASIZE ให้อินเทอร์เฟซเพื่อจัดการขนาดข้อมูล
uses
utils.datasize;
type
TDataSize = classรายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
คลาส TtimeInterval ให้อินเทอร์เฟซเพื่อจัดการช่วงเวลา
uses
utils.timeinterval;
type
TTimeInterval = classรายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
คลาส Tpair รวมกันเป็นคู่ของค่าซึ่งอาจเป็นประเภทต่าง ๆ (T1 และ T2) ค่าแต่ละค่าสามารถเข้าถึงได้ผ่านสมาชิกสาธารณะที่หนึ่งและสองเช่นในภาษา C ++
uses
utils.pair;
type
generic TPair<T1, T2> = classรายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
TTuple เป็นวัตถุที่สามารถเก็บรวบรวมองค์ประกอบ แต่ละองค์ประกอบอาจเป็นประเภทที่แตกต่างเช่นในภาษา C ++
uses
utils.tuple;
type
generic TTuple3<T1, T2, T3> = class
generic TTuple4<T1, T2, T3, T4> = class
generic TTuple5<T1, T2, T3, T4, T5> = class
generic TTuple6<T1, T2, T3, T4, T5, T6> = class
generic TTuple7<T1, T2, T3, T4, T5, T6, T7> = class
generic TTuple8<T1, T2, T3, T4, T5, T6, T7, T8> = class
generic TTuple9<T1, T2, T3, T4, T5, T6, T7, T8, T9> = class
generic TTuple10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> = classรายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
TVARIANT เป็นเทมเพลตคลาสซึ่งแสดงถึงสหภาพที่ปลอดภัย อินสแตนซ์ของ tvariant ในเวลาใดก็ตามไม่ว่าจะมีค่าหนึ่งในประเภทอื่น
uses
utils.variant;
type
generic TVariant2<T1, T2> = class
generic TVariant3<T1, T2, T3> = class
generic TVariant4<T1, T2, T3, T4> = class
generic TVariant5<T1, T2, T3, T4, T5> = class
generic TVariant6<T1, T2, T3, T4, T5, T6> = class
generic TVariant7<T1, T2, T3, T4, T5, T6, T7> = class
generic TVariant8<T1, T2, T3, T4, T5, T6, T7, T8> = class
generic TVariant9<T1, T2, T3, T4, T5, T6, T7, T8, T9> = class
generic TVariant10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> = classรายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
Functor เป็นอินสแตนซ์ของคลาสที่มี Call ใช้ฟังก์ชันสมาชิก ฟังก์ชั่นสมาชิกนี้อนุญาตให้วัตถุใช้กับไวยากรณ์เดียวกันกับการเรียกใช้ฟังก์ชันปกติและดังนั้นประเภทของมันจึงสามารถใช้เป็นพารามิเตอร์เทมเพลตเมื่อคาดว่าจะมีประเภทฟังก์ชันทั่วไป
uses
utils.functor;
type
generic TUnaryFunctor<V, R> = classรายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
Functor เป็นอินสแตนซ์ของคลาสที่มี Call ใช้ฟังก์ชันสมาชิก ฟังก์ชั่นสมาชิกนี้อนุญาตให้วัตถุใช้กับไวยากรณ์เดียวกันกับการเรียกใช้ฟังก์ชันปกติและดังนั้นประเภทของมันจึงสามารถใช้เป็นพารามิเตอร์เทมเพลตเมื่อคาดว่าจะมีประเภทฟังก์ชันทั่วไป
uses
utils.functor;
type
generic TBinaryFunctor<V, R> = classรายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
มันเป็น functor เปรียบเทียบพิเศษที่กลับมา 0 (ศูนย์) ตลอดเวลา ค่าที่แท้จริงไม่ได้ใช้ functor นี้สามารถใช้สำหรับคอนเทนเนอร์สำหรับค่าที่ไม่สามารถเรียงลำดับได้
uses
utils.functor;
type
TUnsortableFunctor =
class ( { $IFDEF FPC } specialize { $ENDIF } TBinaryFunctor<V, Integer>);รายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
มันเป็น functor ที่ส่งคืนค่าลบหาก Avalue1 ควรจัดเรียงก่อน Avalue2 ค่าบวกถ้า Avalue1 ควรจัดเรียงหลังจาก Avalue2, ศูนย์ถ้า Avalue1 และ Avalue2 เท่ากัน
uses
utils.functor;
type
generic TDefaultCompareFunctor<V> =
class ( { $IFDEF FPC } specialize { $ENDIF } TBinaryFunctor<V, Integer>)
public
function Call (AValue1, AValue2 : V) : Integer;
end ;รายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
มันเป็น functor ที่กลับมาจริงถ้า Avalue1 <Avalue2
uses
utils.functor;
type
generic TDefaultLessFunctor<V> =
class ( { $IFDEF FPC } specialize { $ENDIF } TBinaryFunctor<V, Boolean>);รายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
มันเป็น functor ที่กลับมาจริงถ้า avalue1> avalue2
uses
utils.functor;
type
generic TDefaultGreaterFunctor<V> =
class ( { $IFDEF FPC } specialize { $ENDIF } TBinaryFunctor<V, Boolean>);รายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
มันเป็น functor ที่กลับมาจริงถ้า avalue1 = avalue2
uses
utils.functor;
type
generic TDefaultEqualFunctor<V> =
class ( { $IFDEF FPC } specialize { $ENDIF } TBinaryFunctor<V, Boolean>);รายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
มันเป็น functor ที่ส่งคืนค่าลบหากควรจัดเรียงคีย์คู่ 1 ก่อนคีย์คู่ 2 ค่าบวกถ้าคีย์คู่ควรเรียงลำดับหลังจากคีย์คู่ 2, ศูนย์ถ้าคีย์คู่ 1 และคีย์คู่ 2 คีย์เท่ากับ
uses
utils.functor, utils.pair;
uses
generic TDefaultPairKeyCompareFunctor<K, V> =
class ( { $IFDEF FPC } specialize { $ENDIF } TBinaryFunctor
< { $IFDEF FPC } specialize { $ENDIF } TPair<K, V>, Integer>)รายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
API.CSTRING เป็น wrapper รอบ c language api cstring char * ค่า
uses
utils.api.cstring;
type
API = class
type
CString = class
end ;รายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
TarrayerRorsstack เป็นสแต็คทั่วไปเหนืออาร์เรย์ของ T ซึ่งมีรหัสข้อผิดพลาด
uses
utils.errorsstack;
type
generic TArrayErrorsStack<T> = classรายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
Tlisterrorsstack เป็นสแต็คทั่วไปมากกว่ารายการคลาส T ซึ่งมีรหัสข้อผิดพลาด
uses
utils.errorsstack;
type
generic TListErrorsStack<T> = classรายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
Tforwarditerator เป็นคลาสพื้นฐานสำหรับตัววนซ้ำทิศทางไปข้างหน้าแบบกำหนดเอง
uses
utils.enumerate;
type
generic TForwardIterator<V, Iterator> = classรายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
TbidirectionAliterator เป็นคลาสพื้นฐานสำหรับการทำซ้ำไปข้างหน้าและย้อนหลัง
uses
utils.enumerate;
type
generic TBidirectionalIterator<V, Iterator> = classรายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
คลาส Tenumerator เพิ่มตัวนับให้กับวัตถุที่วนซ้ำสิ่งที่มีตัววนซ้ำตาม tforwarditerator หรือ tbidirectionaliterator และส่งคืน (วัตถุที่ระบุ) เช่นในภาษา Python
uses
utils.enumerate;
type
generic TEnumerator<V, Iterator> = classรายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
คลาส TFilterenumerator ให้ตัวกรองตัวกรองโดย Unaryfunctor
uses
utils.enumerate, utils.functor;
type
generic TFilterEnumerator<V, Iterator, Functor> = classFunctor ขึ้นอยู่กับ utils.functor.tunaryfunctor อินเตอร์เฟสและใช้ในการกรองค่ารายการ
รายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
taccumulate ค่าสะสมโดยใช้ฟังก์ชั่นไบนารี (ระบุผ่านอาร์กิวเมนต์ functor)
uses
utils.functional, utils.functor;
type
generic TAccumulate<V, Iterator, Functor> = classFunctor ขึ้นอยู่กับ utils.functor.tbinaryfunctor อินเตอร์เฟสและใช้เพื่อสะสมค่าผลลัพธ์
รายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
TMAP ใช้ functor ที่กำหนดกับแต่ละรายการของวัตถุที่ได้รับการติดตั้ง)
uses
utils.functional, utils.functor;
type
generic TMap<V, Iterator, Functor> = classFunctor ขึ้นอยู่กับ utils.functor.tunaryfunctor อินเตอร์เฟสและใช้ในการแก้ไขค่ารายการ
รายละเอียดเพิ่มเติมอ่านใน หน้า Wiki