@SuppressWarnings("restriction")
class TypeDefMappingStrategy implements IBindingMappingStrategy<CPPTypedef> {
@Inject private IBindings bindings;
@Override public CppToProtobufMapping createMappingFrom(IBinding binding) {
CPPTypedef typeDef = typeOfSupportedBinding().cast(binding);
IBinding owner = binding.getOwner();
if (!bindings.isMessage(owner)) {
return null;
}
String typeName = typeNameOf(typeDef);
String typeNameSuffix = owner.getName() + "_" + typeDef.getName();
if (typeName == null || !typeName.endsWith(typeNameSuffix)) {
return null;
}
return new CppToProtobufMapping(bindings.qualifiedNameOf(typeDef), MESSAGE);
}