#include "asn1fix_internal.h"

int
asn1f_fetch_tag(asn1p_t *asn, asn1p_module_t *mod, asn1p_expr_t *expr, struct asn1p_type_tag_s *tag) {
	int ret;

	if(expr->tag.tag_class != TC_NOCLASS) {
		*tag = expr->tag;
		return 0;
	}

	if(expr->expr_type == A1TC_EXTENSIBLE) {
		memset(tag, 0, sizeof(*tag));
		tag->tag_class = -1;
		return 0;
	}

	if(expr->meta_type == AMT_TYPE) {
		memset(tag, 0, sizeof(*tag));
		tag->tag_class = TC_UNIVERSAL;
		tag->tag_value = expr_type2uclass_value[expr->expr_type];
		return (tag->tag_value == 0) ? -1 : 0;
	}

	if(expr->meta_type == AMT_TYPEREF) {
		arg_t arg;

		memset(&arg, 0, sizeof(arg));
		arg.asn = asn;
		arg.mod = mod;
		arg.expr = expr;

		expr = asn1f_lookup_symbol(&arg, expr->reference, &mod);
		if(expr == NULL) return -1;

		if(expr->_mark & TM_RECURSION)
			return -1;

		expr->_mark |= TM_RECURSION;
		ret = asn1f_fetch_tag(asn, mod, expr, tag);
		expr->_mark &= ~TM_RECURSION;
		return ret;
	}

	return -1;
}

