Kullanıcı Aletleri

Site Aletleri


kuetuephane_desteyi

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ür  double hesapla ( double a, double b, unsigned char c )
Prosedür geriVer ( Metin a; b ) Metindir  unsigned short* geriVer ( unsigned short* a, unsigned short* b )
Prosedür isaretiVer ( Bayt hangisi ) İşarettir  unsigned 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

Bu başlık henüz mevcut değil

Henüz mevcut olmayan bir başlığın linkiyle geldiniz. Bu sayfayı oluştur tuşuna tıklayarak sayfayı oluşturabilirsiniz.

kuetuephane_desteyi.txt · Son değiştirilme: 20.11.2020 22:33 Değiştiren: admin