Re: encapsulating directory operations

Liste des GroupesRevenir à cl c 
Sujet : Re: encapsulating directory operations
De : 643-408-1753 (at) *nospam* kylheku.com (Kaz Kylheku)
Groupes : comp.lang.c
Date : 08. Jun 2025, 18:45:47
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <20250608103312.947@kylheku.com>
References : 1 2 3 4 5 6 7 8 9 10 11
User-Agent : slrn/pre1.0.4-9 (Linux)
On 2025-06-08, Scott Lurndal <scott@slp53.sl.home> wrote:
Muttley@DastardlyHQ.org writes:
On Sun, 8 Jun 2025 17:02:08 +0200
Bonita Montero <Bonita.Montero@gmail.com> wibbled:
Am 08.06.2025 um 10:55 schrieb Muttley@DastardlyHQ.org:
>
You can of course use setjmp & longjmp in C but depending on how many levels
up you jump they could be more trouble than they're worth. I think I've only
ever used them once.
>
That's makes a lot of work and it's really ugly. And you need global
jump_buf-s for that.
>
Its no different to C++ exceptions except obviously no destructors are called
so there's no chance to do a tidy up at each stack level. Also jumps arn't
limited to lower to higher stack frames jumps, they can jump about all over
the place. Whether thats useful or not I can't say. I've never needed it.
>
>
I've used sigsetjmp/siglongjmp in C++ code, very successfully.   As an experiment a few
years ago, I replaced it with C++ exceptions and took a 20% performance
hit in the application.    Needless to say the experiment was a failure.

setjmp and longjmp have a clearly defined implementation model
(obviously not in ISO C, but so in implementation practice).

Implementations of setjmp do not stray far from the paradigm of just
saving a bunch of registers in an array, which are then 'blindly"
restored.

This model gives you certain performance characteristics that you can
rely on. Both saving the state and doing the longjmp are fairly cheap.

In C++, the tradeoffs are going to be a crapshoot: whether it is
expensive to set up a try block, but cheap to throw, or vice versa
and that sort of thing.

A C++ throw typically has to search for the exit point to which control
will be transferred. (Maybe not in some statically analyzable cases,
like throw and catch being all in the same function.)

In general, I tend to concur with wij - I prefer to handle run-of-the-mill
errors when they're detected.

But errors can't always be handled where they are detected.  That's why,
in the first place, you are receiving the error from the function that
failed! That function couldn't handle it, so it tossed it upward to you.

The alternative to exceptions is to detect errors at multiple levels
and pass up whatever you can't handle.

>
For example:
>
c_file_card_unit::c_file_card_unit(ulong channel, ulong unit, const char *name,
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

OK, this is a constructor.

So, if is_ready() returns false after the constructor runs,
the creator of the object knows the creation failed.

Right, just like the caller of open() knows that creation
failed, because -1 was returned.

The error was only partially handled by c_file_card_unit in so far
is that it ended up in a documented state, which now something
else has to handle.

--
TXR Programming Language: http://nongnu.org/txr
Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
Mastodon: @Kazinator@mstdn.ca

Date Sujet#  Auteur
20 May 25 * encapsulating directory operations307Paul Edwards
20 May 25 +* Re: encapsulating directory operations83Lawrence D'Oliveiro
20 May 25 i+* Re: encapsulating directory operations20Paul Edwards
21 May 25 ii`* Re: encapsulating directory operations19Lawrence D'Oliveiro
21 May 25 ii `* Re: encapsulating directory operations18Paul Edwards
21 May 25 ii  `* Re: encapsulating directory operations17Lawrence D'Oliveiro
21 May 25 ii   +* Re: encapsulating directory operations3Paul Edwards
22 May 25 ii   i`* Re: encapsulating directory operations2Lawrence D'Oliveiro
22 May 25 ii   i `- Re: encapsulating directory operations1Kaz Kylheku
22 May 25 ii   `* Re: encapsulating directory operations13James Kuyper
22 May 25 ii    `* Re: encapsulating directory operations12Lawrence D'Oliveiro
22 May 25 ii     `* Re: encapsulating directory operations11James Kuyper
22 May 25 ii      `* Re: encapsulating directory operations10Lawrence D'Oliveiro
23 May 25 ii       `* Re: encapsulating directory operations9James Kuyper
23 May 25 ii        `* Re: encapsulating directory operations8Kaz Kylheku
23 May 25 ii         +* Re: encapsulating directory operations3Paul Edwards
23 May 25 ii         i+- Re: encapsulating directory operations1Kaz Kylheku
24 May 25 ii         i`- Re: encapsulating directory operations1Lawrence D'Oliveiro
23 May 25 ii         `* Re: encapsulating directory operations4James Kuyper
23 May 25 ii          `* Re: encapsulating directory operations3Kaz Kylheku
24 May 25 ii           `* Re: encapsulating directory operations2James Kuyper
24 May 25 ii            `- Re: encapsulating directory operations1Kaz Kylheku
31 May 25 i`* Re: encapsulating directory operations62Bonita Montero
31 May 25 i `* Re: encapsulating directory operations61Lawrence D'Oliveiro
1 Jun 25 i  `* Re: encapsulating directory operations60Bonita Montero
1 Jun 25 i   `* Re: encapsulating directory operations59Lawrence D'Oliveiro
2 Jun 25 i    `* Re: encapsulating directory operations58Bonita Montero
3 Jun 25 i     +* Re: encapsulating directory operations2James Kuyper
3 Jun 25 i     i`- Re: encapsulating directory operations1Kaz Kylheku
3 Jun 25 i     +* Re: encapsulating directory operations9Lawrence D'Oliveiro
10 Jun 25 i     i`* Re: encapsulating directory operations8Bonita Montero
10 Jun 25 i     i +- Re: encapsulating directory operations1Bonita Montero
10 Jun 25 i     i +- Re: encapsulating directory operations1Kaz Kylheku
11 Jun 25 i     i `* Re: encapsulating directory operations5Lawrence D'Oliveiro
11 Jun 25 i     i  `* Re: encapsulating directory operations4Bonita Montero
11 Jun 25 i     i   +- Re: encapsulating directory operations1Lawrence D'Oliveiro
11 Jun 25 i     i   `* Re: encapsulating directory operations2Bonita Montero
12 Jun 25 i     i    `- Re: encapsulating directory operations1Lawrence D'Oliveiro
3 Jun 25 i     `* Re: encapsulating directory operations46Bonita Montero
6 Jun 25 i      `* Re: encapsulating directory operations45Bonita Montero
6 Jun 25 i       `* Re: encapsulating directory operations44Bonita Montero
6 Jun 25 i        `* Re: encapsulating directory operations43Bonita Montero
6 Jun 25 i         `* Re: encapsulating directory operations42wij
7 Jun 25 i          `* Re: encapsulating directory operations41Bonita Montero
7 Jun 25 i           `* Re: encapsulating directory operations40wij
7 Jun 25 i            `* Re: encapsulating directory operations39Bonita Montero
7 Jun 25 i             `* Re: encapsulating directory operations38wij
7 Jun 25 i              `* Re: encapsulating directory operations37Bonita Montero
7 Jun 25 i               +* Re: encapsulating directory operations22wij
7 Jun 25 i               i+- Re: encapsulating directory operations1Bonita Montero
8 Jun 25 i               i`* Re: encapsulating directory operations20Bonita Montero
8 Jun 25 i               i +* Re: encapsulating directory operations12Muttley
8 Jun 25 i               i i`* Re: encapsulating directory operations11Bonita Montero
8 Jun 25 i               i i `* Re: encapsulating directory operations10Muttley
8 Jun 25 i               i i  +* Re: encapsulating directory operations3Bonita Montero
9 Jun 25 i               i i  i`* Re: encapsulating directory operations2Muttley
9 Jun 25 i               i i  i `- Re: encapsulating directory operations1Bonita Montero
8 Jun 25 i               i i  +* Re: encapsulating directory operations2Kaz Kylheku
10 Jun 25 i               i i  i`- Re: encapsulating directory operations1Tim Rentsch
8 Jun 25 i               i i  +- Re: encapsulating directory operations1Bonita Montero
9 Jun 25 i               i i  +- Re: encapsulating directory operations1wij
9 Jun 25 i               i i  `* Re: encapsulating directory operations2Muttley
9 Jun 25 i               i i   `- Re: encapsulating directory operations1Bonita Montero
8 Jun 25 i               i +* Re: encapsulating directory operations5wij
8 Jun 25 i               i i`* Re: encapsulating directory operations4Bonita Montero
8 Jun 25 i               i i `* Re: encapsulating directory operations3wij
8 Jun 25 i               i i  `* Re: encapsulating directory operations2Bonita Montero
8 Jun 25 i               i i   `- Re: encapsulating directory operations1wij
9 Jun 25 i               i `* Re: encapsulating directory operations2Lawrence D'Oliveiro
9 Jun 25 i               i  `- Re: encapsulating directory operations1Bonita Montero
7 Jun 25 i               `* Re: encapsulating directory operations14Janis Papanagnou
8 Jun 25 i                `* Re: encapsulating directory operations13Bonita Montero
8 Jun 25 i                 +- Re: encapsulating directory operations1Chris M. Thomasson
8 Jun 25 i                 `* Re: encapsulating directory operations11Bonita Montero
9 Jun 25 i                  +* Re: encapsulating directory operations8Bonita Montero
9 Jun 25 i                  i+* Re: encapsulating directory operations6Bonita Montero
9 Jun 25 i                  ii+- Re: encapsulating directory operations1Bonita Montero
10 Jun 25 i                  ii+* Re: encapsulating directory operations3Muttley
10 Jun 25 i                  iii+- Re: encapsulating directory operations1Muttley
10 Jun 25 i                  iii`- Re: encapsulating directory operations1Chris M. Thomasson
10 Jun 25 i                  ii`- Re: encapsulating directory operations1Waldek Hebisch
9 Jun 25 i                  i`- Re: encapsulating directory operations1Richard Heathfield
10 Jun 25 i                  `* Re: encapsulating directory operations2Tim Rentsch
10 Jun 25 i                   `- Re: encapsulating directory operations1Bonita Montero
20 May 25 +* Re: encapsulating directory operations74Keith Thompson
20 May 25 i+* Re: encapsulating directory operations28Richard Heathfield
20 May 25 ii+- Re: encapsulating directory operations1Paul Edwards
20 May 25 ii+- Re: encapsulating directory operations1David Brown
20 May 25 ii+* Re: encapsulating directory operations7Kaz Kylheku
20 May 25 iii`* Re: encapsulating directory operations6Richard Heathfield
20 May 25 iii +* Re: encapsulating directory operations2Muttley
20 May 25 iii i`- Re: encapsulating directory operations1Paul Edwards
20 May 25 iii `* Re: encapsulating directory operations3Paul Edwards
20 May 25 iii  `* Re: encapsulating directory operations2Richard Heathfield
20 May 25 iii   `- Re: encapsulating directory operations1Paul Edwards
23 May 25 ii`* Re: encapsulating directory operations18Tim Rentsch
23 May 25 ii +* Re: encapsulating directory operations6Richard Heathfield
24 May 25 ii i`* Re: encapsulating directory operations5Tim Rentsch
24 May 25 ii i `* Re: encapsulating directory operations4Richard Heathfield
28 May 25 ii i  `* Re: encapsulating directory operations3Tim Rentsch
28 May 25 ii i   `* Re: encapsulating directory operations2Richard Heathfield
26 May 25 ii `* Re: encapsulating directory operations11Peter 'Shaggy' Haywood
20 May 25 i`* Re: encapsulating directory operations45Paul Edwards
20 May 25 +* Re: encapsulating directory operations144Kaz Kylheku
21 May 25 +* Re: encapsulating directory operations3Janis Papanagnou
22 May 25 +- Re: encapsulating directory operations1Bonita Montero
25 May 25 `- Re: encapsulating directory operations1Tim Rentsch

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal