macros: add swap assignment macro