ΠŸΡ€Π΅Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° BitTorrent ΠΊΠ»ΠΈΠ΅Π½Ρ‚ сС прСмСства ΠΎΡ‚ C към C++

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° libtransmission, която Π΅ Π² основата Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Transmission BitTorrent, Π΅ ΠΏΡ€Π΅Π²Π΅Π΄Π΅Π½Π° Π½Π° C++. ΠŸΡ€Π΅Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ всС ΠΎΡ‰Π΅ ΠΈΠΌΠ° ΠΎΠ±Π²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ с внСдряванСто Π½Π° потрСбитСлски интСрфСйси (GTK интСрфСйс, Π΄Π΅ΠΌΠΎΠ½, CLI), написани Π½Π° Π΅Π·ΠΈΠΊΠ° C, Π½ΠΎ асСмблиранСто Π²Π΅Ρ‡Π΅ изисква C++ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€. ΠŸΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° само базираният Π½Π° Qt интСрфСйс бСшС написан Π½Π° C++ (ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ Π·Π° macOS бСшС Π² Objective-C, ΡƒΠ΅Π± ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡŠΡ‚ бСшС Π² JavaScript ΠΈ всичко останало бСшС Π² C).

ΠŸΡ€Π΅Π½Π°ΡΡΠ½Π΅Ρ‚ΠΎ бСшС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ΅Π½ΠΎ ΠΎΡ‚ Charles Kerr, Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π» Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π°Π²Ρ‚ΠΎΡ€ Π½Π° интСрфСйса Transmission, Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° Qt. ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π·Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° цСлия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ към C++ Π΅ усСщанСто, Ρ‡Π΅ ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² libtransmission, постоянно трябва Π΄Π° изобрСтяватС ΠΊΠΎΠ»Π΅Π»ΠΎΡ‚ΠΎ, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ ΠΈΠΌΠ° Π³ΠΎΡ‚ΠΎΠ²ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π² стандартната C++ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, бСшС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° създаванС Π½Π° ваши собствСни Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ tr_quickfindFirstK() ΠΈ tr_ptrArray() Π² ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²ΠΈΠ΅Ρ‚ΠΎ Π½Π° std: :partial_sort() ΠΈ std::vector()), ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ прСдоставянС Π½Π° C++ с ΠΏΠΎ-Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ срСдства Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠ°.

ΠžΡ‚Π±Π΅Π»ΡΠ·Π²Π° сС, Ρ‡Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π΅ си поставят Π·Π° Ρ†Π΅Π» Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π΄Π° ΠΏΡ€Π΅Π½Π°ΠΏΠΈΡˆΠ°Ρ‚ цялата libtransmission Π² C++, Π½ΠΎ Π²ΡŠΠ·Π½Π°ΠΌΠ΅Ρ€ΡΠ²Π°Ρ‚ Π΄Π° ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²ΡΡ‚ ΠΏΡ€Π΅Ρ…ΠΎΠ΄Π° към C++ постСпСнно, ΠΊΠ°Ρ‚ΠΎ сС Π·Π°ΠΏΠΎΡ‡Π½Π΅ с ΠΏΡ€Π΅Ρ…ΠΎΠ΄Π° към ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° C++ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π°. Π’ ΡΠ΅Π³Π°ΡˆΠ½Π°Ρ‚Π° си Ρ„ΠΎΡ€ΠΌΠ° C ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π²Π΅Ρ‡Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° асСмблиранС, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ към ΠΊΠΎΠ΄Π° са Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ някои спСцифични Π·Π° C++ конструкции, ΠΊΠ°Ρ‚ΠΎ ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π°Ρ‚Π° Π΄ΡƒΠΌΠ° β€žautoβ€œ ΠΈ прСобразувания Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° β€žstatic_castβ€œ. ΠŸΠ»Π°Π½ΠΈΡ€Π° сС ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π·Π° ΠΏΠΎ-стари C Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Π° останС Π·Π° ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚, Π½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ сСга сС Π½Π°ΡΡŠΡ€Ρ‡Π°Π²Π°Ρ‚ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ std::sort() вмСсто qsort() ΠΈ std::vector вмСсто tr_ptrArray. constexpr вмСсто tr_strdup() ΠΈ std::vector вмСсто tr_ptrArray.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€