22: def initialize(ptr, names, ty, len, enc, dec)
23: @ptr = ptr
24: @names = names
25: @ty = ty
26: @len = len
27: @enc = enc
28: @dec = dec
29:
30:
31: @names.each{|name|
32: instance_eval [
33: "def #{name}",
34: " v = @ptr[\"#{name}\"]",
35: " if( @len[\"#{name}\"] )",
36: " v = v.collect{|x| @dec[\"#{name}\"] ? @dec[\"#{name}\"].call(x) : x }",
37: " else",
38: " v = @dec[\"#{name}\"].call(v) if @dec[\"#{name}\"]",
39: " end",
40: " return v",
41: "end",
42: "def #{name}=(v)",
43: " if( @len[\"#{name}\"] )",
44: " v = v.collect{|x| @enc[\"#{name}\"] ? @enc[\"#{name}\"].call(x) : x }",
45: " else",
46: " v = @enc[\"#{name}\"].call(v) if @enc[\"#{name}\"]",
47: " end",
48: " @ptr[\"#{name}\"] = v",
49: " return v",
50: "end",
51: ].join("\n")
52: }
53: end