Kütüphane Desteği
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 universaldir. Bir kere derlendikten sonra her projede, her makina 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 |
C/C++ |
YarıBayt |
char |
Bayt, Ascii |
unsigned char |
KüçükRakam |
short |
ÇiftBayt, Karakter, SafKüçükRakam |
unsigned short |
Rakam, Renk, Saat |
long |
SafRakam |
unsigned long |
EsnekRakam |
int |
SafEsnekRakam |
unsigned int |
KüçükVirgül |
float |
Virgül |
double |
AsciiMetni |
unsigned char*, char * |
Metin |
unsigned short*, short* |
İşaretli parametreler ve sonuç verme C/C++ prosedürleri ile uyumlu değil ve bu yüzden desteklenmiyor. Ayrıca Dizilimler tek dimensiyonlu olarak desteklenir. "AsciiMetni" ve "Metin" türleri zaten birer Dizilimdir. Bu türlerden Dizilim türü yapılamaz.
Esnek, Renk, Saat, Tarih ve TarihSaat türleri desteklenmiyor. Yapısal ve objesel türler desteklenmiyor. C struct ve C++ class maalesef desteklenmiyor. Fakat geniş çaplı veri aktarımı bellekte alan rezervasyonu yoluyla yapılabilir.
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.