Is it possible to define parts of the macro conditionally? If not, is there any workaround for this? In the example below the macro is generating different output, which is controlled by parameter c.
@startuml
!define LAYER1 1
!define LAYER2 2
!definelong TEST_MACRO(a, b, c)
if c
a->b: defined c
endif
!enddefinelong
TEST_MACRO(a, b, LAYER1)
TEST_MACRO(c, d, LAYER1 | LAYER2)
TEST_MACRO(a, b, LAYER3)
@enduml