


In general it is better to use subpackages rather than identifier prefixes for datatype namespace management. For example
package wa {
Window_Attribute
= BACKGROUND_NONE
| BACKGROUND_PARENT_RELATIVE
| BACKGROUND_RW_PIXMAP dt::Rw_Pixmap
| BACKGROUND_RO_PIXMAP dt::Ro_Pixmap
| BACKGROUND_COLOR rgb::Rgb
#
| BORDER_COPY_FROM_PARENT
| BORDER_RW_PIXMAP dt::Rw_Pixmap
| BORDER_RO_PIXMAP dt::Ro_Pixmap
| BORDER_COLOR rgb::Rgb
#
| BIT_GRAVITY xt::Gravity
| WINDOW_GRAVITY xt::Gravity
#
| CURSOR_NONE
| CURSOR cs::Xcursor
;
};
is better than
Window_Attribute
= WA_BACKGROUND_NONE
| WA_BACKGROUND_PARENT_RELATIVE
| WA_BACKGROUND_RW_PIXMAP dt::Rw_Pixmap
| WA_BACKGROUND_RO_PIXMAP dt::Ro_Pixmap
| WA_BACKGROUND_COLOR rgb::Rgb
#
| WA_BORDER_COPY_FROM_PARENT
| WA_BORDER_RW_PIXMAP dt::Rw_Pixmap
| WA_BORDER_RO_PIXMAP dt::Ro_Pixmap
| WA_BORDER_COLOR rgb::Rgb
#
| WA_BIT_GRAVITY xt::Gravity
| WA_WINDOW_GRAVITY xt::Gravity
#
| WA_CURSOR_NONE
| WA_CURSOR cs::Xcursor
;
The crucial difference is that the subpackage formulation gives the application programmer the option of abbreviating
case attribute
#
wa::BACKGROUND_NONE => ... ;
wa::BACKGROUND_PARENT_RELATIVE => ... ;
wa::BACKGROUND_RW_PIXMAP _ => ... ;
wa::BACKGROUND_RO_PIXMAP _ => ... ;
wa::BACKGROUND_COLOR _ => ... ;
wa::BORDER_COPY_FROM_PARENT => ... ;
wa::BORDER_RW_PIXMAP _ => ... ;
wa::BORDER_RO_PIXMAP _ => ... ;
wa::BORDER_COLOR _ => ... ;
wa::BIT_GRAVITY _ => ... ;
wa::WINDOW_GRAVITY _ => ... ;
wa::CURSOR_NONE _ => ... ;
wa::CURSOR _ => ... ;
esac;
as
{ include wa;
case attribute
#
BACKGROUND_NONE => ... ;
BACKGROUND_PARENT_RELATIVE => ... ;
BACKGROUND_RW_PIXMAP _ => ... ;
BACKGROUND_RO_PIXMAP _ => ... ;
BACKGROUND_COLOR _ => ... ;
BORDER_COPY_FROM_PARENT => ... ;
BORDER_RW_PIXMAP _ => ... ;
BORDER_RO_PIXMAP _ => ... ;
BORDER_COLOR _ => ... ;
BIT_GRAVITY _ => ... ;
WINDOW_GRAVITY _ => ... ;
CURSOR_NONE _ => ... ;
CURSOR _ => ... ;
esac;
};
but the prefix formulation allows no such convenient de-uglification trick.
This rule is a special case of: Favor explicit representations over implicit ones.


