I am working on a binding for a dll which requires a bit of mema / memr / memw, 
and this brought me to looking at symget / symset / symdat

With minor tweeking, I updated to 64bits the viewnoun verb from the 
"Guides/Named Noun Internals" page (running J903):



NB. 64 bit version

viewnoun=: 3 : 0

s=. symget <y NB. pointer to symbol table entry

sys=. memr s,0 2 4 NB. pointers to name, header

h=. 1{sys NB. header pointer

fheader=. memr h,0 7 4 NB. fixed header

NB. 'offset flag size type refcount len rank'=. fheader

'offset flag size type refcount len rank'=. fheader

     rank =. 2 NB. hard coded patch !!!

shape=. memr h,56,rank,4 NB. shape

data=. memr (h+offset),0,len,type

sys;fheader;shape;data

)



  abc=:10+ i. 2 3

viewnoun 'abc'

┌─────────────────────────────┬─────────────────────┬───┬─────────────────┐

│94112853474752 94112853484736│72 0 1 4 1 6 37355522│2 3│10 11 12 13 14 15│

└─────────────────────────────┴─────────────────────┴───┴─────────────────┘


Something has clearly changed in the data organization.

* where has the rank info gone to? why do I get 37355522 instead?

* does "reserved size for data" still exist? does the 1 actually mean anything 
or is it just a placeholder?





----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to