瀏覽代碼

Naming, use variant index instead of tag

jakubtomsu 1 年之前
父節點
當前提交
c76ab138eb
共有 2 個文件被更改,包括 9 次插入4 次删除
  1. 5 0
      core/intrinsics/intrinsics.odin
  2. 4 4
      src/checker_builtin_procs.hpp

+ 5 - 0
core/intrinsics/intrinsics.odin

@@ -162,7 +162,12 @@ type_is_matrix           :: proc($T: typeid) -> bool ---
 type_has_nil :: proc($T: typeid) -> bool ---
 
 type_is_specialization_of :: proc($T, $S: typeid) -> bool ---
+
 type_is_variant_of :: proc($U, $V: typeid) -> bool where type_is_union(U) ---
+type_union_tag :: proc($U: typeid) -> typeid where type_is_union(U) ---
+type_union_tag_offset :: proc($U: typeid) -> int where type_is_union(U) ---
+type_variant_type_of_of :: proc($U: typeid, $index: int) -> typeid where type_is_union(U) ---
+type_variant_index_of :: proc($U, $V: typeid) -> int where type_is_union(U) ---
 
 type_has_field :: proc($T: typeid, $name: string) -> bool ---
 type_field_type :: proc($T: typeid, $name: string) -> typeid ---

+ 4 - 4
src/checker_builtin_procs.hpp

@@ -262,8 +262,8 @@ BuiltinProc__type_simple_boolean_end,
 	BuiltinProc_type_is_variant_of,
 	BuiltinProc_type_union_tag,
 	BuiltinProc_type_union_tag_offset,
-	BuiltinProc_type_variant_type,
-	BuiltinProc_type_variant_tag,
+	BuiltinProc_type_variant_type_of,
+	BuiltinProc_type_variant_index_of,
 
 	BuiltinProc_type_struct_field_count,
 
@@ -564,8 +564,8 @@ gb_global BuiltinProc builtin_procs[BuiltinProc_COUNT] = {
 	{STR_LIT("type_is_variant_of"),    2, false, Expr_Expr, BuiltinProcPkg_intrinsics},
 	{STR_LIT("type_union_tag"),        1, false, Expr_Expr, BuiltinProcPkg_intrinsics},
 	{STR_LIT("type_union_tag_offset"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics},
-	{STR_LIT("type_variant_type"),     2, false, Expr_Expr, BuiltinProcPkg_intrinsics},
-	{STR_LIT("type_variant_tag"),      2, false, Expr_Expr, BuiltinProcPkg_intrinsics},
+	{STR_LIT("type_variant_type_of"),     2, false, Expr_Expr, BuiltinProcPkg_intrinsics},
+	{STR_LIT("type_variant_index_of"),      2, false, Expr_Expr, BuiltinProcPkg_intrinsics},
 
 	{STR_LIT("type_struct_field_count"),   1, false, Expr_Expr, BuiltinProcPkg_intrinsics},