> 3. create a function for each type and use it in your queries
>
> CREATE FUNCTION EnumTypeSoftware() RETURNS int AS 'SELECT 1' LANGUAGE SQL
> with (isstrict);
>
> CREATE FUNCTION EnumTypeHardware() RETURNS int AS 'SELECT 2' LANGUAGE SQL
> with (isstrict);
As a side note I didn't see mentioned, you might want to define those as
iscachable (and I'm not sure isstrict buys you anything for a function
with no args) to allow index scans to be used when you do col=func()
where clauses.