我经常面临将一个 API 的参数空间映射到另一个 API 的参数空间的问题。我经常看到嵌套嵌套的嵌套 ... switch 语句解决了这个问题。
而且我想知道是否会碰巧有一个库或一种技术可以让您“声明”映射而不是“编程”它。
一个简单的例子是将两个枚举的值合并为一个:
namespace sourceAPI {
struct A { typedef e { A1, A2, A3 } };
struct B { typedef e { B1, B2 } };
}
namespace targetAPI {
struct AB { typedef e { A1B1, A1B2, A2B1, A2B2, A3B1, A3B2 } };
}
其中映射通常像
switch( a ){
case( A::A1 ): switch( b ) {
case( B::B1 ): return A1B1;
case( B::B2 ): return A1B2;
....
}
而且这个映射还需要一个“反向”开关。
但我更喜欢“密集”的东西
declare( source( A::A1, B::B1 ), target( AB::A1B1 ) );
declare( source( A::A1, B::B2 ), target( AB::A1B2 ) );
....
有没有人见过这样的技术或框架或库?