Path: ...!weretis.net!feeder9.news.weretis.net!i2pn.org!i2pn2.org!.POSTED!not-for-mail From: fir Newsgroups: comp.lang.c Subject: Re: enum sets Date: Thu, 29 Aug 2024 11:44:45 +0200 Organization: i2pn2 (i2pn.org) Message-ID: <12b1b3ce8d87055b65a8f6f745ce78cf4d88d9ec@i2pn2.org> References: <21d096d342279f8bcbb47f264401d3848c4e00aa@i2pn2.org> <70877511dd876e8a233a30146fee329288f76acd@i2pn2.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Thu, 29 Aug 2024 09:44:48 -0000 (UTC) Injection-Info: i2pn2.org; logging-data="123937"; mail-complaints-to="usenet@i2pn2.org"; posting-account="+ydHcGjgSeBt3Wz3WTfKefUptpAWaXduqfw5xdfsuS0"; User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:27.0) Gecko/20100101 Firefox/27.0 SeaMonkey/2.24 X-Spam-Checker-Version: SpamAssassin 4.0.0 In-Reply-To: <70877511dd876e8a233a30146fee329288f76acd@i2pn2.org> Bytes: 8810 Lines: 274 fir wrote: > fir wrote: >> Thiago Adams wrote: >>> 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. >>> >>> >> >> this is about general problem of what i name polymorphism >> >> but maybe its not right name, it is about variety of types >> and subtypes >> >> let think abit about that >> >> in c you got more like types not deal with subtypes >> and supertypes like you got type int and type float >> >> but they both number.. not knowing at this moment >> if that "number" is subtype or supertype >> >> dafine numeber is something you can +-&/ i mean >> define some interface and what conforms is a number >> (im not sure if its right but assume) then both int and >> float seem to be equal types (?) i mean type is >> in fact "number" and ints and floats are specific >> representations.. both are somewhat 'super' above this >> simpel 4operators number coz they have this exact binary >> representation and interpretation low lewel people >> know ..hovever worth noticing if you add some method to >> this 4op number (like .jump() or .beep()) then this >> 4op number geting be super over ints and floats in that area >> being "sub" in area of binary representation >> >> so it clearly shows that this superiority and sub-ness >> (or how to call it) may be (and is) partial and inter-mixed >> >> this all shows how this c++ polymorphism is bulshit >> (which i know from first time seing it around 25 years ago) >> (those sektor van skiljen tutorial times - good times) >> >> in c as i wrote few days ago probably the interfaces >> can cover those things and interfaces are kinda >> natural - as function header is natuiral interface >> >> though this would need to be organized somewhat i guess >> as this interface potential is not much used now (it seems) >> >> as to enums i dont know..but worth noticing this >> supertype things not goes left-side but right-side >> in structure definition i mean >> >> point >> { >> int x; >> int y; >> } >> >> the superiority you dont do adding things on left >> >> chase >> { >> point >> { >> int x; >> int y; >> } >> >> } >> >> >> but >> >> point >> { >> int x; >> int y; >> int chase_thing; >> } >> >> and thsi seems to be their flaw >> >> (Its probably becouse on the left you got tree structure >> avaliable - and on the right you got full combinations >> avaliable >> >> (i not rethinked it fully but noticed that things >> with time and recently wrote on it in a thread on >> "tree structures and polymorphism") >> >> (and what i say is also about enums i guess, i mean >> one should not define characteristic of such enums on the >> left but "in" the right >> >> is_tree >> { some_enum } >> >> >> some_enum >> { >> is_tree; >> is_short; >> } >> >> (note what i say is my oryginal work >> >> i tell it becouse i know some people can take it not credit me, >> than repeat to some other folks, who then will say "eureka" >> i found much interesting thing, which comes to my mind >> when soem x was saying on this (and this x took if from me) >> (so just to be honest for truth) >> >> (and by what i was inspired - i was inspired by word and idea of "tag" >> (like those tags used in net) >> - i just noticed that many groups of varius things you can tag >> and you may organise those tags, but those tags croses over (out) the >> tree >> structure so tree structure for such things - i was also inspired by >> concept of interface - is used in some languages (and such form of >> this interface it looks like structure of data and function calls) >> > > there is also ofc a fact of how this right (proper) > polymorphism would be usable as i dont know > > i may maybe imagine some usecase : > > say you got entities/elements (structures) sprites > > each has something like x,y where its placed, on/off > state , soem may have orientation (rotation angle), > soem may be clickable and some of clicabel be type > (supertype) widgets, soem of them could be maybe soem > more advanced supertype of widgets like agents (?) > > i dont know possibly this just helps a bit in composition > - depending how its done > > some things can be done easy i guess > > say > > sprite //say simpel sprite > { > rectangle area; // like centre, and w,h > char* bacground_bitmap_name ; > > int HP; > int amunition; > } > > widget > { > rectangle area; > char* bacground_bitmap_name; > > on_click(int x, int y) { beep();} > > } > > void draw_bitmap({rectangle area, char* bacground_bitmap_name}*) > { ========== REMAINDER OF ARTICLE TRUNCATED ==========