(EDIT: The source code is available in this post.)
Let's assume that it is possible to create a scheme that allows a developer to address each IO pin by number, with no code overhead compared to direct access (using PORTx et al).
To me it looks like a good idea in more than one way.
It allows you to put the hardware dependency in one place only (wherever you define your pin numbers) rather than scattered throughout the source code.
It is less hardware dependent than direct access, as no explicit port addresses are used.
It allows great portability between AVRs, as the same source code can run on any 8-bit AVR without modification. A recompile is all it takes to move from a tiny to a mega, for instance.
It is transparent, i.e. it can be mixed with direct access if desirable.
Are there any potential problems with such an addressing scheme ?
Would you use it, if it came at no size or speed cost ?