+
+struct psi_decl_arg *psi_decl_arg_get_by_name(struct psi_plist *args,
+ const char *name)
+{
+ size_t i = 0;
+ struct psi_decl_arg *arg;
+
+ if (args)
+ while (psi_plist_get(args, i++, &arg)) {
+ if (!strcmp(name, arg->var->name)) {
+ return arg;
+ }
+ }
+
+ return NULL;
+}
+
+struct psi_decl_arg *psi_decl_arg_get_by_var(struct psi_decl_var *var,
+ struct psi_plist *args, struct psi_decl_arg *func)
+{
+ struct psi_decl_arg *arg = psi_decl_arg_get_by_name(args, var->name);
+
+ if (arg) {
+ assert(!var->arg || var->arg == arg);
+
+ return var->arg = arg;
+ }
+
+ if (func && !strcmp(var->name, func->var->name)) {
+ return var->arg = func;
+ }
+
+ return NULL;
+}