From: Alberto B. <bar...@gm...> - 2009-10-29 13:14:14
|
Hi, I wrote a piace of code like this: class testVisitor = object(self) inherit nopCilVisitor method vinst (i:instr) = match i with | Call ( ret,Lval(Var vi,NoOffset),args,l) -> begin Printf.printf "-> %s" vi.vname end; DoChildren end let feature.... It's works and i can see the name of the function. Now i would inspect the type,value,name and other attributes on args of function. How can i do it? Thanks Alberto |
From: Mark H. <Mar...@cw...> - 2009-10-29 14:16:11
|
Hi Alberto, The function's return type and parameter types are encoded as part of the type of variable vi, just look in vi.vtype. You should get back a TFun, which includes the return type, the parameter types, a flag to say if the function is a varargs function, and the attributes of the function. The name of the arguments unfortunately isn't available as far as I know. I needed them for some work I was doing, and wound up creating a hash I could use to look them up when I needed them. The actual values that would be assigned to the formals are in "args" in your Call constructor. Cheers, Mark Alberto Barbaro wrote: > Hi, I wrote a piace of code like this: > > class testVisitor = object(self) > inherit nopCilVisitor > > method vinst (i:instr) = > match i with > | Call ( ret,Lval(Var vi,NoOffset),args,l) -> begin > Printf.printf "-> %s" vi.vname > end; DoChildren > end > > let feature.... > > It's works and i can see the name of the function. Now i would inspect > the type,value,name and other attributes on args of function. How can > i do it? > > Thanks > > Alberto > > ------------------------------------------------------------------------------ > Come build with us! The BlackBerry(R) Developer Conference in SF, CA > is the only developer event you need to attend this year. Jumpstart your > developing skills, take BlackBerry mobile applications to market and stay > ahead of the curve. Join us from November 9 - 12, 2009. Register now! > http://p.sf.net/sfu/devconference > _______________________________________________ > CIL-users mailing list > CIL...@li... > https://lists.sourceforge.net/lists/listinfo/cil-users > |