[[anasayfa|]] / [[basit_dili_kuralları|]] ====== Kütüphane Desteyi ====== Basit yazılım dili Baytkod altyapılı olarak çalışır. Fakat Basit hem Baytkod altyapılı kütüphaneler, hemde gerçek kütüphaneler kullanır. BEK (Basit Eklentiler Kütüphanesi) dosyaları Basit ile kodlanabilen ve derlenebilen özel kütüphanelerdir. Bu türler işletim sistemine bağlı değildir. 32 ve 64 Bit olarak özellikle ayırt edilmezler. Bu dosyalar üniversaldir. Bir kere derlendikten sonra her projede, her makine için ve istersen 32 Bit, istersende 64 Bit olarak kullanılabilir. BEK dosyaları Basit uygulamalarına birçok öğeler sunabilir. Bunlar şöyle: * Değişkenler, Dizilimler, İşaretler, ProsedürBağları * Prosedürler * Yapılar * Objeler, Bileşenler * Salt Kaynaklar * SaltVeriAlanları Bir BEK dosyası normal bir Basit projesi olarak kodlanır. Dışarıya sunacağı öğeleri "Erişilir" olarak belirtilmesi lazımdır. Derleme modeli olarak proje ayarlarından "Basit Eklentiler Kütüphanesi" seçilmesi lazımdır. Bit kütüphanenin "Başlat" prosedürü olmaz! Örnek Kütüphane Dosyası: Erişilir Yapı yapım ? Dışarıdan okunabilir ? Değişken Rakam a; b YapıSon Yapı diğerYapım ? Dışarıdan okunamaz ? Değişken Rakam a; b YapıSon Erişilir Değişken Rakam seriNo; ciltNo ? Dışarıdan okunabilir ? Değişken Rakam rak1; rak2 ? Dışarıdan okunamaz ? Erişilir Prosedür merhabaDe () Metindir ? Dışardan çalıştırılabilir ? Sonuç "Merhaba Dünya" ProsedürSon Prosedür birProsedür () Metindir ? Dışarıdan çalıştırılamaz ? Sonuç "tüh, olmuyor" ProsedürSon SaltVeriAlanı verilerim Rakam 1; 2; 3; 4; 5 SaltVeriAlanıSon Kütüphane dosyasını bağlayıp, çalıştırma örneği: Kütüphane bağlantıAdı Kaynağı "KütüphaneDosyası" İthal Değişken Rakam seriNo; ciltNo İthal Prosedür merhabaDe () Metindir İthal SaltVeriAlanı verilerim KütüphaneSon Prosedür Başlat () MetinselDenetim bağlantıAdı.merhabaDe() ProsedürSon Gerçek kütüphaneleri Basit derleyemez, ama kullanabilir. Bu dosyalar Mac işletim sisteminde DyLib ve SO (Shared Object), Linux işletim sisteminde SO (Shared Object) ve Windows işletim sisteminde DLL dosyalarıdır. Gerçek kütüphaneler STDCALL ve CCALL/CDECL modellerinde desteklenmektedir. Windows işletim sisteminde genellikle STDCALL modelinde kütüphaneler derlenir. Mac ve Linux işletim sistemlerinde genellikle CCALL/CDECL modeli kullanılır. Basitin kullanacağı kütüphaneler mutlaka STDCALL veya CCALL/CDECL olarak hazırlanmalı ve derlenmeli. Eğer kütüphane bağlantısı kurulacağı zaman STDCALL veya CCALL/CDECL özellikle belirtilmezse, o halde Basit Windows için otomatik olarak STDCALL ve Mac/Linux için otomatik olarak CCALL/CDECL kullanır. CCALL ve CDECL aynı şeydir. Basit standartlaştırmak için CDECL anahtar kelimesini STDCALL ile benzerlik taşısın diye, CCALL olarakta kabul eder. Örnek: Kütüphane bağlantıAdı Kaynağı "KütüphaneDosyası" ; CCALL İthal Değişken Rakam seriNo; ciltNo İthal Prosedür merhabaBe () AsciiMetnidir İthal SaltVeriAlanı verilerim KütüphaneSon Gerçek bir kütüphane sadece prosedürler sunabilir. Ayrıca Basit sadece 6 adet parametreye kadar bu tür prosedürleri destekliyor. Yani bir prosedür parametresiz, tek parametreli, çift parametreli, üç parametreli, dört parametreli, beş parametreli veya alt parametreli olarak destekleniyor. C/C++ ve Basit veri türleri tam olarak uyumlu değil. Tür karşılıkları şöyle: ^ Basit Veri Türü ^ Sonuç Verme Türü ^ C/C++ Veri Türü ^ | YarıBayt | YarıBayttır | char | | Bayt, Ascii| Bayttır, Asciidir | unsigned char | | KüçükRakam | KüçükRakamdır | short | | ÇiftBayt, Karakter, SafKüçükRakam | ÇiftBayttır, Karakterdir, SafKüçükRakamdır | unsigned short | | Rakam | Rakamdır | long | | SafRakam, Renk, Saat | SafRakamdır, Renktir, Saattir | unsigned long | | EsnekRakam | EsnekRakamdır | int | | SafEsnekRakam, Tarih, TarihSaat | SafEsnekRakamdır, Tarihtir, TarihSaattir | unsigned int | | KüçükVirgül | KüçükVirgüldür | float | | Virgül | Virgüldür | double | Basit'in Metin ve AsciiMetni türleri zaten dizilimdir ve özellikle dizilim olduklarını vurgulamak hata verecektir. Basit'ten C/C++'a “Dizilimsel Metin” türü veri akışı sağlanamıyor. Dizilim olarak belirlenebilir türler şöyledir: ^ Basit Veri Türü ^ Sonuç Verme Türü ^ C/C++ Veri Türü ^ | Dizilimsel YarıBayt | Dizilimsel YarıBayttır | char* | | Dizilimsel Bayt, Ascii| Dizilimsel Bayttır, Asciidir | unsigned char* | | Dizilimsel KüçükRakam | Dizilimsel KüçükRakamdır | short* | | Dizilimsel ÇiftBayt, Karakter, SafKüçükRakam | Dizilimsel ÇiftBayttır, Karakterdir, SafKüçükRakamdır | unsigned short* | | Dizilimsel Rakam | Dizilimsel Rakamdır | long* | | Dizilimsel SafRakam, Renk, Saat | Dizilimsel SafRakamdır, Renktir, Saattir | unsigned long* | | Dizilimsel EsnekRakam | Dizilimsel EsnekRakamdır | int* | | Dizilimsel SafEsnekRakam, Tarih, TarihSaat | Dizilimsel SafEsnekRakamdır, Tarihtir, TarihSaattir | unsigned int* | | Dizilimsel KüçükVirgül | Dizilimsel KüçükVirgüldür | float* | | Dizilimsel Virgül | Dizilimsel Virgüldür | double* | Basit'in bazı veri türlerinin karşılığı C/C++'da yoktur ve bu sebepten dolayı bazı veri türleri natif bağlantılarda ne parametre türü, nede sonuç verme türü olarak kullanılamaz. Bu veri türleri şöyledir: * ProsedürBağı * Esnek * İz * Yapı * Obje * Bileşen Bunlar dışında “GenişRakam” ve “SafGenişRakam” Basit 1.0 sürümünde C/C++ ile veri akışında desteklenmiyor. Ayrıca “İşaretli” tanımlamalar C/C++ ile uyumlu değildir ve kullanılamaz. “İşaret” türü tanımlamalar C/C++ ile uyum sağlar, fakat Basit ile özel olarak aynı biçimde kullanılaması gerekir. Bu türün C/C++'ta birçok karşılığı bulunuyor: char*, unsigned char*, short*, unsigned short*, long*, unsigned long*, int*, unsigned int*, float*, double* C/C++'ta hangi biçimde organize ediliyorsa, aynı biçimde Basit'te kullanılması gerekiyor. Aksi taktirde problemlere sebebiyet verebilir. Eğer prosedürün C/C++'ta sonuç verme türü yoksa, yani türü “void” ise, Basit'te sonuç verme türü girilmez, aksi taktirde uyumlu tür girilmelidir: ^ Basit ^ C/C++ ^ | Prosedür hesapla ( Virgül a; b ) | void hesapla ( double a, double b ) | | Prosedür hesapla ( Virgül a; b; Ascii c ) Virgüldürdouble hesapla ( double a, double b, unsigned char c ) | | Prosedür geriVer ( Metin a; b ) Metindirunsigned short* geriVer ( unsigned short* a, unsigned short* b ) | | Prosedür isaretiVer ( Bayt hangisi ) İşarettirunsigned int* isaretiVer ( unsigned char hangisi ) | | Prosedür tamamdir () | void tamamdir () | Örneklerde de görüldüğü gibi, prosedür tanımlama isimlerinde Türkçe karakterler yoktur. Natif kütüphanede nasıl giriliyor ise, aynı şekilde girilmelidir. Hatta karakterlerin büyük ve küçük yazılışlarına bile dikkat edilmelidir. Eğer natif kütüphanede geçen prosedür adı “geriVer” ise, Basit'te yapılan ithal tanımlama adıda aynı olmalıdır. Eğer “geriver” veya “GeriVer” veya “Geriver” gibi farklı bir biçimde girilse, prosedür tanımı doğrulanamaz ve ithal edilemez. Unikod desteyi C/C++ yazılım dillerinde standartlaştırılmamıştır ve işletim sistemlerinin sunduğu imkanlara bağlıdır. C/C++ standartlarında Unikod için özel bir destek yoktur. Bu yüzden C/C++ prosedürleriyle çalışırken daha çok Ascii karakterleriyle çalışmak gerekir veya işletim sisteminin sunduğu imkanlardan yararlanmalıdır. Windows birçok API (Windows NT ver üzeri için geçerlidir) prosedürlerini hem Ascii (*_A), hemde Unikod (*_W) olarak sunuyor. Mac ve Linux ise bu konuda özel birşey sunmuyor, fakat metinleri UTF8 biçiminde yönetiyorlar. Windows NT 4 ve üzeri sürümleri için "Metin", eski sürümler için "AsciiMetni" türü kullanılabilir. Mac ve Linux için ise "AsciiMetni" kullanmak daha iyi olur. Kütüphane kapsamına girilebilen elemanlar ve giriliş biçimleri şöyledir: ^ Eleman ^ Giriliş Biçimi ^ | İthal Prosedür | Normal bir Prosedür tanımı gibidir | | İthal ProsedürBağı | Normal bir ProsedürBağı tanımı gibidir | | İthal Değişken | Normal bir Değişken tanımı gibidir, fakat başlangıç değeri girilemez | | İthal Dizilim | Normal bir Dizilim tanımı gibidir, fakat başlangıç değeri girilemez | | İthal Belirle | Normal bir Belirle tanımı gibidir, fakat başlangıç değeri girilemez | | İthal İşaret | İthal İşaret TanımlamaAdı | | İthal Yapı | İthal Yapı TanımlamaAdı | | İthal Obje | İthal Obje TanımlamaAdı | | İthal Bileşen | İthal Bileşen TanımlamaAdı | | İthal GörselKayank | İthal GörselKaynak TanımlamaAdı | | İthal MetinselKaynak | İthal MetinselKaynak TanımlamaAdı | | İthal SaltKaynak | İthal SaltKaynak TanımlamaAdı | | İthal SaltVeriAlanı | İthal SaltVeriAlanı TanımlamaAdı | ====== İndir ====== {{ ::kutuphane_destegi.pdf |Kütüphane Desteyi - Ayrıntılı PDF}}