Files
clang-uml/docs/test_cases/t20024.md
2022-12-14 00:04:34 +01:00

90 lines
1.5 KiB
Markdown

# t20024 - Switch statement sequence diagram test case
## Config
```yaml
compilation_database_dir: ..
output_directory: puml
diagrams:
t20024_sequence:
type: sequence
glob:
- ../../tests/t20024/t20024.cc
include:
namespaces:
- clanguml::t20024
using_namespace:
- clanguml::t20024
start_from:
- function: "clanguml::t20024::tmain()"
```
## Source code
File t20024.cc
```cpp
namespace clanguml {
namespace t20024 {
enum enum_a { zero = 0, one = 1, two = 2, three = 3 };
enum class colors { red, orange, green };
struct A {
int select(enum_a v)
{
switch (v) {
case zero:
return a0();
case one:
return a1();
case two:
return a2();
default:
return a3();
}
}
int a0() { return 0; }
int a1() { return 1; }
int a2() { return 2; }
int a3() { return 3; }
};
struct B {
void select(colors c)
{
switch (c) {
case colors::red:
red();
break;
case colors::orange:
orange();
break;
case colors::green:
green();
break;
default:
grey();
}
}
void red() { }
void orange() { }
void green() { }
void grey() { }
};
int tmain()
{
A a;
B b;
a.select(enum_a::two);
b.select(colors::green);
return 0;
}
}
}
```
## Generated UML diagrams
![t20024_sequence](./t20024_sequence.svg "Switch statement sequence diagram test case")