Jump to page: 1 2
Thread overview
March 02, 2013

Evet sorum başlıkta olduğu gibi void* ı ubyte[] olarak nasıl cast yapabiliriz? :)

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

March 02, 2013

5 dk.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

March 02, 2013

Hocam cast(ubyte[]) (cast(void*) &print)[0..4] bu şekilde hallettim. Ama bu castlediğim veriyi kullanamadım. İşime yaramadı yani :)

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

March 02, 2013

Bilgisayar başında uyuya kalmışım. Bugün epey bir pedal çevirdim ve soğukta akşam eve döndüm.

Vücut 5 dk.'yı kaldıramadı demek ki...:)

Aşağıdaki gibi bir yapı kullanırsan sanırım her şey daha açık olur?

 struct foo(T) {
   private T[] bar;

   void* ptr() @property {
     return bar.ptr;
   }

   T[] slice() @property {
     return cast(T[])(ptr)[0..length];
   }

   size_t length() @property {
     return bar.length;
   }

   TypeInfo type() @property {
     return typeid(T);
   }

   string toString() @property {
     return std.string.
            format("%s:\t%s[%s]", ptr, type, length);
   }
 }

 import std.stdio;

void main(){
 auto arr = foo!ubyte([ 1, 2, 3 ]);
      arr.writeln();
      arr.slice.writeln("\t", typeid(arr.ptr()));
      arr.slice[1].writeln();

}/* Çıktısı:
7F139CB90FF0: ubyte[3]
[1, 2, 3]     void*
2
*/

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

March 02, 2013

Alıntı:

>

Bilgisayar başında uyuya kalmışım. Bugün epey bir pedal çevirdim ve soğukta akşam eve döndüm.

Vücut 5 dk.'yı kaldıramadı demek ki...

Aman hocam kendinize dikkat edin. Siz bize lazımsınız :)

ama tam olarak yapmak istediğim bu değildi. Bir işlevin adresini aldım onu byte dizisine çevirip daha sonradan byte dizisinden o adresi alıp işlevi çağırmak istiyorum :)

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

March 02, 2013

Hocam sanırım bu ubyte dizisi olayını verileri işlerken kullanmamalıyız :) Nedenine gelirsek ek işlemler yapmadan kullanamayız. Ek işlemler de gereksiz yavaşlamaya neden olacak. Ama kodları bytecode'a çevirip okuyup işlem yapabiliriz.

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

March 02, 2013

Ama peki şimdi biz verileri nasıl saklayacağız?

Türden bağımsız olmalı ve zaten her işlev kendi türünü biliyor cast veya farklı bir işlemle veriye türüne göre davranabilir. Bunları nasıl depolayacağız :)

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

March 03, 2013

Yapmak istediğin bellekteki bazı adresleri bir dizi içinde tutmak ise en doğru veri türü ''size_t*[] ptrs;'' olmalı. Neden ubyte'a çeviriyorsun? Hadi bir nedenden çevirmen gerekiyor, sonra bu adresleri tekrar elde etmeye (void*) çalıştığında 256'den küçük değerler ile karşılacaksın!

Böyle bir şeye ihtiyaç duyunca, aklıma sadece dizinin adreslerini alıp onların sahip olduğu elemanlara dilediğin şekilde ulaşmak isteyebileceğin geldi. Tabi bunu yapabilmek için veri türü ve uzunluğunu bilmememiz gerekli. O yüzden böyle bir yapı kurdum...

Ayrıca bu yapıyla herhangi bir türü kullanabileceğimizi gösterdim. Bu sadece bir gerçekleme ve aynısını kullanman gerekmez. Dilersen bazı işlevlerini görmezden gelebilirsin. Hatta slice()'ı oradan alıp başka bir yapı içinde de çalıştırabilirsin. Tabi o zaman türü bildiğimizi (örn. ubyte) varsayıyorum.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

March 03, 2013

Alıntı:

>

Neden ubyte'a çeviriyorsun?

Verileri ubyte[] olarak sakladım. Daha sonradan cast yaparak veriye erişiyorum. Bu veriler int, string, void* gibi bir çok farklı veri türü olabilir. Sanırım bir süre daha ara vermem gerekecek bu yapıya ya da yavaş ama eskisinden hızlı olacak şekilde yapmaya devam etmek.

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

March 03, 2013

Tamam ama ne verisi? Adres verisi ise kullandığımız işlemciler 8 bit olmadıkları için ubyte dizisi işimizi kesinlik görmez...

Bence senin türden bağımsız güzel bir veri yığınına ihtiyacın var. Rahatlatacak bu seni, şu BitStack 2.0'ı bitireyim bari...:)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

« First   ‹ Prev
1 2