Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #139208

if cargo blocks

From "Rick C. Hodgin" <rick.c.hodgin@gmail.com>
Newsgroups comp.lang.c, comp.lang.c++
Subject if cargo blocks
Date 2018-12-29 10:42 -0500
Organization Liberty Software Foundation
Message-ID <q084io$qe1$1@dont-email.me> (permalink)

Cross-posted to 2 groups.

Show all headers | View raw


I've had the idea for an "if cargo" block.  It is a standard if {}
block, but one containing additional cargo prefixed by in, out, and
enter keywords, to be contained within each if clause to run before,
after, and when entering the if statement.

The enter clause is given specifically to relate to something that
should be done, possibly to undo something done in the in clause,
including possibly calling the out clause to undo that setup, and
prepare it for whatever other code is needed within the block.

The cargo portion allows a sequence of conditions to be established
sequentially, in a traditional if{} block, with the ability to inject
new code at each stage to augment the environment, to then live-test
the condition.

     if (some_test1)
         in    { setup_for_test1 }
         out   { cleanup_for_test1 }
         enter { related_code_if_block_entered1 }
     {
         // Code1 here for this test passing

     } else if (some_test2)
         in    { setup_for_test2 }
         out   { cleanup_for_test2 }
         enter { related_code_if_block_entered2 }
     {
         // Code2 here for this test passing
     }

-----
The above would work out to this logic:

     setup_for_test1;
     if (some_test1)
     {
         related_code_if_block_is_entered1;
         // Code1 here for this test passing
         goto all_done;

     } else {
         cleanup_for_test1;
     }

     setup_for_test2;
     if (some_test2)
     {
         related_code_if_block_is_entered2;
         // Code2 here for this test passing

     } else {
         cleanup_for_test2;
     }
all_done:

-----
It allows code for setup_for_test, cleanup_for_test, and
related_code_if_block_entered to be encapsulated into its
intended meaning by placing it where it's used, related
to how it's being used, being easily understood as to what
it's really doing.

It also implicitly documents the purpose of that code nearby,
as being part of each if{} statement's prepare, test, cleanup
code.

-- 
Rick C. Hodgin

Back to comp.lang.c | Previous | Next — Next in thread | Find similar | Unroll thread


Thread

if cargo blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-29 10:42 -0500
  Re: if cargo blocks David Brown <david.brown@hesbynett.no> - 2018-12-29 17:26 +0100
    Re: if cargo blocks Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk> - 2018-12-29 16:32 +0000
  Re: if cargo blocks Bart <bc@freeuk.com> - 2018-12-29 16:56 +0000
    Re: if cargo blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-29 12:34 -0500
      Re: if cargo blocks Bart <bc@freeuk.com> - 2018-12-29 23:49 +0000
        Re: if cargo blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-29 18:52 -0500
          Re: if cargo blocks Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk> - 2018-12-30 00:12 +0000
          Re: if cargo blocks rbowman <bowman@montana.com> - 2018-12-29 19:04 -0700
            Re: if cargo blocks Ralf Goertz <me@myprovider.invalid> - 2018-12-30 06:12 +0100
              Re: if cargo blocks David Brown <david.brown@hesbynett.no> - 2018-12-30 15:23 +0100
                Language (Was: if cargo blocks) gazelle@shell.xmission.com (Kenny McCormack) - 2018-12-30 15:39 +0000
                Re: Language (Was: if cargo blocks) rbowman <bowman@montana.com> - 2018-12-30 11:23 -0700
                Re: if cargo blocks Ralf Goertz <me@myprovider.invalid> - 2018-12-31 05:21 +0100
                Re: if cargo blocks David Brown <david.brown@hesbynett.no> - 2018-12-31 18:09 +0100
                Re: if cargo blocks rbowman <bowman@montana.com> - 2018-12-31 12:22 -0700
                Re: if cargo blocks Ralf Goertz <me@myprovider.invalid> - 2019-01-01 12:04 +0100
                Re: if cargo blocks rbowman <bowman@montana.com> - 2018-12-31 11:50 -0700
                Re: if cargo blocks Ralf Goertz <me@myprovider.invalid> - 2019-01-01 11:43 +0100
                Re: if cargo blocks Ralf Goertz <me@myprovider.invalid> - 2019-01-01 14:27 +0100
                German grammar (Was: if cargo blocks) gazelle@shell.xmission.com (Kenny McCormack) - 2019-01-01 14:17 +0000
                Re: if cargo blocks rbowman <bowman@montana.com> - 2019-01-01 11:04 -0700
                Re: if cargo blocks fir <profesor.fir@gmail.com> - 2019-01-01 10:38 -0800
                Re: if cargo blocks rbowman <bowman@montana.com> - 2019-01-01 10:57 -0700
                DDR Ralf Goertz <me@myprovider.invalid> - 2019-01-01 21:18 +0100
                Re: DDR rbowman <bowman@montana.com> - 2019-01-01 16:18 -0700
                Re: if cargo blocks Siri Cruise <chine.bleu@yahoo.com> - 2019-01-01 16:30 -0800
              Re: if cargo blocks rbowman <bowman@montana.com> - 2018-12-30 11:09 -0700
                Re: if cargo blocks Ralf Goertz <me@myprovider.invalid> - 2018-12-31 05:43 +0100
                Re: if cargo blocks rbowman <bowman@montana.com> - 2018-12-31 12:06 -0700
              Linguistics. Re: if cargo blocks Siri Cruise <chine.bleu@yahoo.com> - 2019-01-01 16:27 -0800
                Re: Linguistics. Re: if cargo blocks rbowman <bowman@montana.com> - 2019-01-01 22:30 -0700
                Re: Linguistics. Re: if cargo blocks Louis Krupp <lkrupp@nospam.pssw.com.invalid> - 2019-01-02 04:18 -0700
          Re: if cargo blocks Bart <bc@freeuk.com> - 2018-12-30 02:07 +0000
            Re: if cargo blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-29 21:59 -0500
  Re: if cargo blocks rbowman <bowman@montana.com> - 2018-12-29 13:57 -0700
    Re: if cargo blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-29 16:03 -0500
      Re: if cargo blocks Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk> - 2018-12-29 21:32 +0000
      Re: if cargo blocks rbowman <bowman@montana.com> - 2018-12-29 16:06 -0700
        Re: if cargo blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-29 18:15 -0500
          Re: if cargo blocks fir <profesor.fir@gmail.com> - 2018-12-29 15:32 -0800
            Re: if cargo blocks fir <profesor.fir@gmail.com> - 2018-12-29 15:34 -0800
              Re: if cargo blocks fir <profesor.fir@gmail.com> - 2018-12-29 15:38 -0800
              Re: if cargo blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-29 15:40 -0800
                Re: if cargo blocks fir <profesor.fir@gmail.com> - 2018-12-29 15:45 -0800
            Re: if cargo blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-29 18:36 -0500
              Re: if cargo blocks fir <profesor.fir@gmail.com> - 2018-12-29 15:42 -0800
                Re: if cargo blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-29 15:45 -0800
                Re: if cargo blocks fir <profesor.fir@gmail.com> - 2018-12-29 15:54 -0800
                Re: if cargo blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-29 18:58 -0500
                Re: if cargo blocks fir <profesor.fir@gmail.com> - 2018-12-29 16:01 -0800
    Re: if cargo blocks "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-12-29 13:36 -0800
  Re: if cargo blocks "I Set My Girlfriend's Pantyhose on Fire" <cdalten@gmail.com> - 2018-12-29 13:16 -0800
    Re: if cargo blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-29 16:32 -0500
  Re: if cargo blocks Siri Cruise <chine.bleu@yahoo.com> - 2018-12-30 13:00 -0800
    Re: if cargo blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-30 16:12 -0500
      Re: if cargo blocks Siri Cruise <chine.bleu@yahoo.com> - 2018-12-30 13:31 -0800
        Re: if cargo blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-30 16:45 -0500
          Re: if cargo blocks Bart <bc@freeuk.com> - 2018-12-30 22:17 +0000
            Re: if cargo blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-30 17:22 -0500
              Re: if cargo blocks "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-12-30 20:25 -0800
  Re: if cargo blocks Ian Collins <ian-news@hotmail.com> - 2019-01-03 09:50 +1300
    Re: if cargo blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2019-01-02 15:54 -0500
      Re: if cargo blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2019-01-02 16:29 -0500
        Re: if cargo blocks mark.bluemel@gmail.com - 2019-01-03 00:44 -0800
          Re: if cargo blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2019-01-03 08:17 -0500
            Re: if cargo blocks mark.bluemel@gmail.com - 2019-01-03 05:40 -0800
              Re: if cargo blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2019-01-03 09:15 -0500
            You are so full of shit (Was: if cargo blocks) gazelle@shell.xmission.com (Kenny McCormack) - 2019-01-03 13:42 +0000
            Re: if cargo blocks fir <profesor.fir@gmail.com> - 2019-01-03 12:27 -0800
        Re: if cargo blocks Ian Collins <ian-news@hotmail.com> - 2019-01-04 11:11 +1300
          Re: if cargo blocks "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2019-01-03 14:37 -0800
          Re: if cargo blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2019-01-03 17:48 -0500
          Re: if cargo blocks fir <profesor.fir@gmail.com> - 2019-01-03 14:59 -0800
      Re: if cargo blocks mark.bluemel@gmail.com - 2019-01-03 00:44 -0800
        Re: if cargo blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2019-01-03 08:19 -0500
          Re: if cargo blocks mark.bluemel@gmail.com - 2019-01-03 05:43 -0800
            Re: if cargo blocks "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2019-01-03 05:51 -0800
          Re: if cargo blocks "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2019-01-03 13:22 -0800
      Re: if cargo blocks Ian Collins <ian-news@hotmail.com> - 2019-01-04 11:10 +1300

csiph-web