Tabi bu baslik cok kucuk olacak
C=++ c++'in bir alt kumesi genel olarak. Fakat birkac eklnetisi de var. Bunlari tanitayim
Oncelikle bu eklentiler ozellikle gercek c++ derleyicilerinin comment olarak gorecegi sekilde ayarlandi
1- //c=++_type
Su an her .cepp dosyanizin basinda butun tanimlayacaginiz class ve singleton typelari icin bu komut ile decleration yapmaniz gerekiyor (Bunu daha sonra ya kaldiricam ya da normal c++ forward decleration ile degistiricem)
Ornek:
//c=++_type cSoldier;
//c=++_type sTest;
class cSoldier ....
....
....
gibi. Eger bunu yapmazsaniz. Class tanimlamasini yaparken Unknown type at line xx erroru alacaksiniz
2- //c=++_max
C=++' da her tanimladiginiz class icin o tipten bir anda bellekte bulunabilecek maksimum obje sayisini vermeniz lazim. Bu kmout buna yariyor
Bunun sebebi su: compiler yarattiginiz her class icin max obje sayisi buyuklugunde bir obje havuzu ayiriyor bellekte. Daha sonra siz her new dediginizde o havuzdan bir tane donduruyor size. delete ettiginizde o obje havuzda yine free hale geliyor. dolayisiyla binlerce obje yaratip silebilirsiniz fakat herhangi bir anda en fazla max obje sayisi kadar objeniz olabilir o classtan. Eger new dediginizde havuzda hic free obje kalmamissa new 0 dondurur. tipki c++'da bellek bitince oldugu gibi
class cSoldier //c=++_max 32
{
public:
...
};
3- Singletonlar
Singleton aslinda bir design patterndir. c++' da direk boyle birsey yok. Fakat cok kullanildiklari ve c64de bazi ekstra optimizasyonlara izin verdigi icin ben dile ekledim
Singleton bir class gibidir. yine attributeleri ve metodlari varid fakat o classtan yalnizca bir obje uretilir ve hep o kullanilir. Bunlar genelde bir programdaki temel yonetici objeler veya hardwaredeki bazi temel arabirim yoneticileri vs olabilir: Application, EnemyManager, NetworkManager, Renderer falan gibi heybetli isimli obje ve classlar olurlar genelde.
C=++ ta singletonlari kullanmak icin class tanimlar gibi singleton tanimlayip (isim class gibi c ile degil 's' ile baslamali ve //c=++_max olmadan) daha sonrada kod icinde TheXXX diye erismelisiniz.
class sTest{
public:
cByte mInit();
};
...
TheTest->mInit();
...
sXYZ isimli singleton objesine TheXYZ diye ulasiyoruz
singleton attributelerini compiler sizin icin rastgele yerlestirebilecegi gibi siz bellekte istediginiz adrese yerlestirebilirsiniz. Boylece cesitli hardware registerlerine singleton attribute olarak erismeniz mumkun. Yerlestirme icin //c=++_at eklentisini kullanin
class sVIC{
public:
cByte mSetBorderColor(cByte iColor);
cByte aBorderColor; //c=++_at 0xd020
};
cByte sVIC::mSetBorderColor(cByte iColor){
this->aBorderColor = iColor
return 0;
}
gibi. Bu sekilde komple Hardware tarafini programin geri kalanindan abstract edebilirsiniz. Hatta mesela sVIC icin PC uzerinde emulator bir class yazarsaniz. c64 oyununuz direk PCye de port edilebilir.