systemverilog-plugin: add support for case type

Signed-off-by: Kamil Rakoczy <krakoczy@antmicro.com>
diff --git a/systemverilog-plugin/UhdmAst.cc b/systemverilog-plugin/UhdmAst.cc
index 3c2ae3e..0a6f6c9 100644
--- a/systemverilog-plugin/UhdmAst.cc
+++ b/systemverilog-plugin/UhdmAst.cc
@@ -3430,8 +3430,28 @@
 void UhdmAst::process_case()
 {
     current_node = make_ast_node(AST::AST_CASE);
+    auto cond_type = AST::AST_COND;
+    switch (vpi_get(vpiCaseType, obj_h)) {
+    case vpiCaseExact:
+        cond_type = AST::AST_COND;
+        break;
+    case vpiCaseX:
+        cond_type = AST::AST_CONDX;
+        break;
+    case vpiCaseZ:
+        cond_type = AST::AST_CONDZ;
+        break;
+    default: {
+        const uhdm_handle *const handle = (const uhdm_handle *)obj_h;
+        const UHDM::BaseClass *const object = (const UHDM::BaseClass *)handle->object;
+        report_error("%.*s:%d: Unknown case type", (int)object->VpiFile().length(), object->VpiFile().data(), object->VpiLineNo());
+    }
+    }
     visit_one_to_one({vpiCondition}, obj_h, [&](AST::AstNode *node) { current_node->children.push_back(node); });
-    visit_one_to_many({vpiCaseItem}, obj_h, [&](AST::AstNode *node) { current_node->children.push_back(node); });
+    visit_one_to_many({vpiCaseItem}, obj_h, [&](AST::AstNode *node) {
+        node->type = cond_type;
+        current_node->children.push_back(node);
+    });
 }
 
 void UhdmAst::process_case_item()