BitTorrent клиент Дамжуулалт нь C-ээс C++ руу шилждэг

Transmission BitTorrent клиентийн үндэс болсон libtransmission номын санг C++ хэл рүү хөрвүүлэв. Дамжуулалт нь C хэл дээр бичигдсэн хэрэглэгчийн интерфейсийг (GTK интерфейс, дэмон, CLI) хэрэгжүүлэхтэй холбоотой хэвээр байгаа боловч угсралтад одоо C++ хөрвүүлэгч шаардлагатай. Өмнө нь зөвхөн Qt-д суурилсан интерфэйсийг C++ хэл дээр бичдэг байсан (macOS-ийн үйлчлүүлэгч нь Objective-C дээр, вэб интерфэйс нь JavaScript дээр, бусад бүх зүйл нь C дээр байсан).

Зөөврийг Qt дээр суурилсан Transmission интерфейсийн зохиогч, төслийн удирдагч Чарльз Керр гүйцэтгэсэн. Төслийг бүхэлд нь C++ руу шилжүүлэх гол шалтгаан нь стандарт C++ номын санд ижил төстэй асуудлыг шийдвэрлэх бэлэн шийдлүүд байдаг ч libtransmission-д өөрчлөлт оруулахдаа дугуйг байнга шинээр зохион бүтээх шаардлагатай болдог гэсэн мэдрэмж юм (жишээлбэл, энэ нь зайлшгүй шаардлагатай байсан). std: :partial_sort() болон std::vector())-ийн дэргэд өөрийн tr_quickfindFirstK() болон tr_ptrArray() функцүүдийг үүсгэхийн зэрэгцээ C++-г төрөл шалгах илүү дэвшилтэт хэрэгслээр хангана.

Хөгжүүлэгчид C++ хэл дээрх libtransmission-ийг бүхэлд нь нэн даруй дахин бичих зорилго тавиагүй, харин C++ хөрвүүлэгч ашиглан төслийг эмхэтгэх шилжилтээс эхлээд аажмаар C++ рүү шилжихийг зорьж байгааг тэмдэглэв. "auto" түлхүүр үг болон "static_cast" операторыг ашиглан төрөл хөрвүүлэх гэх мэт C++-д хамаарах зарим бүтээцийг кодонд нэмсэн тул C хөрвүүлэгчийг одоогийн хэлбэрээрээ угсрахад ашиглах боломжгүй болсон. Тохиромжтой болгох үүднээс хуучин С функцүүдийн дэмжлэгийг хэвээр үлдээхээр төлөвлөж байгаа ч одоо хөгжүүлэгчид qsort()-ын оронд std::sort() болон tr_ptrArray-ийн оронд std::векторыг ашиглахыг зөвлөж байна. tr_strdup()-ын оронд constexpr, tr_ptrArray-ийн оронд std::вектор.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх