- gras_assert0(discriminant || referenced_type,
- "Attempt to create a generic reference without discriminant");
+ TRY(gras_ddt_new(name,dst));
+ res=*dst;
+
+ gras_assert0(pointer_type, "Cannot get the description of data pointer");
+
+ for (arch=0; arch<gras_arch_count; arch ++){
+ res->size[arch] = pointer_type->size[arch];
+ res->alignment[arch] = pointer_type->alignment[arch];
+ res->aligned_size[arch] = pointer_type->aligned_size[arch];
+ }
+
+ res->category_code = e_gras_datadesc_type_cat_ref;
+
+ res->category.ref_data.code = referenced_type->code;
+ res->category.ref_data.selector = NULL;
+
+ return no_error;
+}
+/**
+ * gras_datadesc_declare_ref_generic:
+ *
+ * Create a new ref to a type given at use time, and give a pointer to it
+ */
+gras_error_t
+gras_datadesc_declare_ref_generic(const char *name,
+ gras_datadesc_type_cb_int_t selector,
+ gras_datadesc_type_t **dst) {
+
+ gras_error_t errcode;
+ gras_datadesc_type_t *res;
+ gras_datadesc_type_t *pointer_type = gras_datadesc_by_name("data pointer");
+ int arch;