64 class NodeCode (ReferenceCode) :
66 ReferenceCode.__init__(self, ref)
68 def declare_var(self, code_gen) :
69 code_gen.write_line(
'vx_node %s;' % self.ref.name)
71 def define_create(self, code_gen) :
72 code_gen.write_line(
"static vx_node usecase_node_create_%s (" % self.ref.name)
73 num_params = len(self.ref.ref)
78 code_gen.write_line(
" vx_graph graph %s" % (end_char))
81 for ref
in self.ref.ref :
83 if i == (num_params-1) :
85 if ref.type != Type.NULL :
86 if ((i == (num_params-2))
and (self.ref.ref[num_params-1].type == Type.NULL))
or \
87 ((i == (num_params-3))
and (self.ref.ref[num_params-2].type == Type.NULL)
and \
88 (self.ref.ref[num_params-1].type == Type.NULL)):
91 code_gen.write_line(
" %s %s_%d %s" % (Type.get_vx_name(ref.type), ref.type.name.lower(), i, end_char))
93 code_gen.write_line(
" )")
95 code_gen.write_open_brace()
96 code_gen.write_line(
"vx_node node = NULL;")
97 code_gen.write_line(
"vx_reference params[] =")
98 code_gen.write_open_brace()
100 for ref
in self.ref.ref :
102 if i == (num_params-1) :
104 if ref.type != Type.NULL :
105 code_gen.write_line(
" (vx_reference)%s_%d %s" % (ref.type.name.lower(), i, end_char))
107 code_gen.write_line(
" NULL %s" % (end_char))
109 code_gen.write_close_brace(
";")
111 code_gen.write_open_brace()
112 code_gen.write_line(
"vx_kernel kernel = vxGetKernelByName(vxGetContext((vx_reference)graph), \"%s\");" % self.ref.kernel)
113 code_gen.write_newline()
114 code_gen.write_line(
"if (vxGetStatus((vx_reference)kernel)==VX_SUCCESS)");
115 code_gen.write_open_brace();
116 code_gen.write_line(
"node = tivxCreateNodeByKernelRef(graph, kernel, params, %d);" % (num_params))
117 code_gen.write_close_brace()
118 code_gen.write_line(
"vxReleaseKernel(&kernel);")
119 code_gen.write_close_brace()
120 code_gen.write_newline()
121 code_gen.write_line(
"return node;")
122 code_gen.write_close_brace()
123 code_gen.write_newline()
125 def call_create(self, code_gen) :
126 num_params = len(self.ref.ref)
128 code_gen.write_if_status();
129 code_gen.write_open_brace();
130 code_gen.write_line(
"usecase->%s = usecase_node_create_%s (" % (self.ref.name, self.ref.name))
134 code_gen.write_line(
" graph %s" % (end_char))
136 for ref
in self.ref.ref :
138 if i == (num_params-1) :
140 if ((i == (num_params-2))
and (self.ref.ref[num_params-1].type == Type.NULL))
or \
141 ((i == (num_params-3))
and (self.ref.ref[num_params-2].type == Type.NULL)
and \
142 (self.ref.ref[num_params-1].type == Type.NULL)):
144 if ref.type != Type.NULL :
145 code_gen.write_line(
" usecase->%s %s" % (ref.name, end_char))
147 code_gen.write_line(
" );")
148 self.set_ref_name(code_gen)
149 code_gen.write_if_status();
150 code_gen.write_open_brace();
151 code_gen.write_line(
"status = vxSetNodeTarget(usecase->%s, VX_TARGET_STRING, %s);" % (self.ref.name, Target.get_vx_enum_name(self.ref.target)))
152 code_gen.write_close_brace();
153 code_gen.write_close_brace();
155 def call_delete(self, code_gen) :
156 num_params = len(self.ref.ref)
158 code_gen.write_if_status();
159 code_gen.write_open_brace();
160 code_gen.write_line(
"status = vxReleaseNode( &usecase->%s );" % (self.ref.name))
161 code_gen.write_close_brace();
def __init__(self, image_in1, matrix_in2, interp3, image_out4, name="default", target=Target.DEFAULT)
Constructor used to create this object.