Deutsch   English   Français   Italiano  
<871q28b26c.fsf@nosuchdomain.example.com>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!npeer.as286.net!npeer-ng0.as286.net!weretis.net!feeder8.news.weretis.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Keith Thompson <Keith.S.Thompson+u@gmail.com>
Newsgroups: comp.lang.c
Subject: Re: enum sets
Date: Wed, 28 Aug 2024 17:30:51 -0700
Organization: None to speak of
Lines: 44
Message-ID: <871q28b26c.fsf@nosuchdomain.example.com>
References: <vaoclb$3lfbf$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Injection-Date: Thu, 29 Aug 2024 02:30:51 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="d17aacdbc8a710bbcdf54ea5a7e9baf3";
	logging-data="3842266"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/1GvZLVCefH/Vl7rrXBcZ8"
User-Agent: Gnus/5.13 (Gnus v5.13)
Cancel-Lock: sha1:YtMS6Z+E5vykN/D9sVdozvX/BDY=
	sha1:WmU0I+TueTq7QTvsdiInljF39ow=
Bytes: 2325

Thiago Adams <thiago.adams@gmail.com> writes:
> I am wondering how useful would be to have enum sets.
>
> Let´s say you have a function that accepts only monospaced fonts.Then
> you can use enum monospaced_font_type. Or a switch case where you need
> to check all and only monospaced_font_type.
>
> But at same type you can store at same object monospaced_font_type or
> font_type.
>
> enum font_type
> {
>     enum monospaced_font_type
>     {
>         CASCADIA_FONT,
>     },
>     ARIAL_FONT
> };
>
> This could be arranged in any way.

If I understand you correctly, enum monospaced_font_type is a *subtype*
of enum font_type.

Ada has something very similar to this:

    type Font_Type is (CASCADIA_FONT, ARIAL_FONT);
    subtype monospaced_font_type is Font_type range CASCADIA_FONT .. CASCADIA_FONT;

An Ada subtype is a type with an optionally added *constraint*,
which can be checked at runtime.  But it's hard to see how you'd
add this to C.

Given your type definition, how would this behave?

    void func(enum monospaced_font_type);
    enum font_type font = ARIAL_FONT;
    func(font);

(The Ada equivalent would raise a run-time exception.)

-- 
Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com
void Void(void) { Void(); } /* The recursive call of the void */