print_ifclose(indent);
else if (streq (type, "opaque")) { alt = "opaque"; } if (alt) { print_ifopen (indent, alt); print_ifarg (objname); } else { print_ifopen (indent, "vector"); print_ifarg ("(char *)"); f_print (fout, "%s", objname); } print_ifarg (amax); if (!alt) { print_ifsizeof (indent + 1, prefix, type); } break; case REL_ARRAY: if (streq (type, "string")) { alt = "string"; } else if (streq (type, "opaque")) { alt = "bytes"; } if (streq (type, "string")) { print_ifopen (indent, alt); print_ifarg (objname); } else { if (alt) { print_ifopen (indent, alt); } else { print_ifopen (indent, "array"); } print_ifarg ("(char **)"); if (*objname == '&') { f_print (fout, "%s.%s_val, (u_int *) %s.%s_len", objname, name, objname, name); } else { f_print (fout, "&%s->%s_val, (u_int *) &%s->%s_len", objname, name, objname, name); } } print_ifarg (amax); if (!alt) { print_ifsizeof (indent + 1, prefix, type); } break; case REL_ALIAS: print_ifopen (indent, type); print_ifarg (objname); break; } print_ifclose (indent);
print_ifstat(int indent, const char *prefix, const char *type, relation rel,	     const char *amax, const char *objname, const char *name){	const char *alt = NULL;	switch (rel) {	case REL_POINTER:		print_ifopen(indent, "pointer");		print_ifarg("(char **)");		f_print(fout, "%s", objname);		print_ifsizeof(prefix, type);		break;	case REL_VECTOR:		if (streq(type, "string")) {			alt = "string";		} else if (streq(type, "opaque")) {			alt = "opaque";		}		if (alt) {			print_ifopen(indent, alt);			print_ifarg(objname);		} else {			print_ifopen(indent, "vector");			print_ifarg("(char *)");			f_print(fout, "%s", objname);		}		print_ifarg(amax);		if (!alt) {			print_ifsizeof(prefix, type);		}		break;	case REL_ARRAY:		if (streq(type, "string")) {			alt = "string";		} else if (streq(type, "opaque")) {			alt = "bytes";		}		if (streq(type, "string")) {			print_ifopen(indent, alt);			print_ifarg(objname);		} else {			if (alt) {				print_ifopen(indent, alt);			} else {				print_ifopen(indent, "array");			}			print_ifarg("(char **)");			if (*objname == '&') {				f_print(fout, "%s.%s_val, (u_int *)%s.%s_len",					objname, name, objname, name);			} else {				f_print(fout, "&%s->%s_val, (u_int *)&%s->%s_len",					objname, name, objname, name);			}		}		print_ifarg(amax);		if (!alt) {			print_ifsizeof(prefix, type);		}		break;	case REL_ALIAS:		print_ifopen(indent, type);		print_ifarg(objname);		break;	}	print_ifclose(indent);}