Başka bir alternatif de var! Kendi kütüphaneni yazabilirsin...:)
Bakın Allah'ın işine ki yukarıdaki tartışmayı okurken, tam da Apple Open Source kodlarına bakıyordum...
Örneğin şuna: http://www.opensource.apple.com/source/CommonCrypto/CommonCrypto-60026/Source/API/CommonBigNum.c
Sık sık buradaki kodlara bakıyor (çalma değil!) kendimce modellemeler yapıyorum. Amacım tekerleği tekrar icad etmek değil ama daha pürüzsüz yapmak isterdim. Tabi anlam veremediğim şeyleri anlayabilirsem...
Bakınız; şuradaki kodlamanın yararını (değerin dönüş şeklini) anlayabildiniz mi? Aşağıdaki kod, yukarıda verdiğim bağlantıdan alıntılandı:
CCStatus
CCBigNumSquare(CCBigNumRef res, const CCBigNumRef a)
{
CC_DEBUG_LOG(ASL_LEVEL_ERR, "Entering\n");
ccz_sqr(res, a);
return kCCSuccess;
}
Aşağı yukarı tüm işlevler yukarıdakine benzer biçimde ve kCCSuccess değişkenin (CCSstatus yapısını) döndürüyor. Herhalde ccz_sqr() işlevi, sonucu oraya yazmakta. Tabi C kodu olduğu için belli olanaklar kısıtlı olduğu için böyle yapılmış olabilir. Ama neden işaretçi kullanmadıklarını anlayamadım ve izini sürmek istesem de çekirdeğe (göya open source!) erişemedim:
Alıntı:
>
> #include <corecrypto/ccz.h>
> #include <corecrypto/ccn.h> /* For ccn_sizeof(). */
> #include <corecrypto/cc_priv.h> /* For CC_LOAD32_BE. */
> ```
>
Aslında Apple'ın kodlama tarzını beğeniyorum. Örneğin işlevlerin hangi kütüphaneden çağrıldığını öndeki takıdan (yukarıda ccz.h) anlayabiliyoruz. Malumunuz proje büyüdükçe (gerçi Eclipse gibi akıllı IDE'ler mevcut) neyin nerede olduğun, nereden çağrıldığı tam bir karmaşa olabilir...:)
Ancak kodları çok ilkel buluyorum. Bilemiyorum, belki ilkellik sağlamlığı ve sadeliği getiriyor olabilir. Tıpkı yukarıdaki sade işlev gibi. Önce loglama (Türkçesi ne olabilir?) yapıyor, sonra hesaplama: Basit...
--
[ Bu gönderi, <http://ddili.org/forum>'dan dönüştürülmüştür. ]