BitTorrent client Transmission သည် C မှ C++ သို့ ပြောင်းသည်။

Transmission BitTorrent client ၏ အခြေခံဖြစ်သည့် libtransmission စာကြည့်တိုက်ကို C++ သို့ ဘာသာပြန်ထားပါသည်။ Transmission သည် C language ဖြင့် ရေးသားထားသော user interfaces (GTK interface၊ daemon၊ CLI) ကို အကောင်အထည်ဖော်ခြင်းနှင့် ဆက်စပ်မှုရှိနေဆဲဖြစ်သော်လည်း assembly သည် ယခုအခါ C++ compiler လိုအပ်ပါသည်။ ယခင်က Qt-based interface ကို C++ တွင်သာရေးသားခဲ့သည် (macOS အတွက် client သည် Objective-C တွင်ရှိပြီး၊ web interface သည် JavaScript တွင်ရှိပြီး ကျန်အားလုံးသည် C တွင်ရှိသည်)။

Qt ကိုအခြေခံ၍ Transmission interface ကိုရေးသားသူ Charles Kerr မှ porting ကိုလုပ်ဆောင်ခဲ့သည်။ ပရောဂျက်တစ်ခုလုံးကို C++ သို့ပြောင်းရခြင်း၏ အဓိကအကြောင်းရင်းမှာ စံ C++ စာကြည့်တိုက်တွင် အလားတူပြဿနာများအတွက် အဆင်သင့်ပြုလုပ်ထားသော ဖြေရှင်းနည်းများရှိသော်လည်း libtransmission သို့ ပြောင်းလဲမှုများပြုလုပ်သည့်အခါတွင် သင်သည် ဘီးကို အဆက်မပြတ်ပြန်လည်တီထွင်ရမည်ဟု ခံစားရခြင်းဖြစ်သည် (ဥပမာ၊ လိုအပ်သည် std ၏ရှေ့မှောက်တွင် သင့်ကိုယ်ပိုင်လုပ်ဆောင်ချက်များကို tr_quickfindFirstK() နှင့် tr_ptrArray() ဖန်တီးရန်- :partial_sort() နှင့် std::vector()) နှင့် C++ ကို ပိုမိုအဆင့်မြင့်သော အမျိုးအစားစစ်ဆေးခြင်းဆိုင်ရာ အထောက်အကူပြုပစ္စည်းများကို ပံ့ပိုးပေးပါသည်။

developer များသည် C++ တွင် libtransmission တစ်ခုလုံးကို ချက်ချင်းပြန်ရေးရန် ပန်းတိုင်ကို မသတ်မှတ်ထားသော်လည်း C++ မှ ပရောဂျက်ကို စုစည်းရန် ကူးပြောင်းခြင်းမှစတင်ကာ C++ အသွင်ကူးပြောင်းမှုကို တဖြည်းဖြည်းအကောင်အထည်ဖော်ရန် ရည်ရွယ်ထားကြောင်း မှတ်သားရပါသည်။ ၎င်း၏လက်ရှိပုံစံတွင်၊ C ကွန်ပလီတာအား စုစည်းမှုအတွက် အသုံးမပြုနိုင်တော့ပါ၊ အဘယ်ကြောင့်ဆိုသော် အချို့သော C++ သီးသန့်တည်ဆောက်ပုံများသည် "အလိုအလျောက်" သော့ချက်စာလုံးနှင့် "static_cast" အော်ပရေတာကို အသုံးပြု၍ ပြောင်းလဲမှုများကဲ့သို့သော C++ သီးသန့်တည်ဆောက်မှုများကို ထည့်သွင်းထားသည်။ အဟောင်း C လုပ်ဆောင်ချက်များအတွက် ပံ့ပိုးမှုသည် လိုက်ဖက်ညီမှုအတွက် ဆက်ရှိနေရန် စီစဉ်ထားသော်လည်း developer များအား tr_ptrArray အစား std::sort() နှင့် std::vector အစား ယခုအခါတွင် developer များအား std::sort() ကိုအသုံးပြုရန် တိုက်တွန်းထားပါသည်။ tr_ptrArray အစား tr_strdup() နှင့် std::vector အစား constexpr

source: opennet.ru

မှတ်ချက် Add