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


Groups > comp.lang.c > #109245

Re: Approach to create/use containers in C

From Ben Bacarisse <ben.usenet@bsb.me.uk>
Newsgroups comp.lang.c
Subject Re: Approach to create/use containers in C
Date 2017-05-04 19:36 +0100
Organization A noiseless patient Spider
Message-ID <87fugkeafc.fsf@bsb.me.uk> (permalink)
References <e83257d9-b73b-4e33-bdab-0703c6dda5be@googlegroups.com> <oefelo$ikd$1@dont-email.me>

Show all headers | View raw


Richard Heathfield <rjh@cpax.org.uk> writes:

> On 04/05/17 14:13, Thiago Adams wrote:
>> I need to create many dynamic arrays and some maps in C for different types.
>>
>> How do you deal with this problem?
>
> I deal with it using a struct:
>
> {
>   pcl_constructor *constructor;
>   pcl_destructor *destructor;
>   pcl_comparator *comparator;
>   pcl_executor *executor;
>   void *data;  /* pointer to array data */
>   size_t size; /* size of one object */
>   size_t count; /* number of objects */
>   size_t capacity; /* current capacity, must be >= count */
>   size_t maxcap; /* maximum capacity */
> };

A slight variation is to have the four functions and the size in a
separate struct, a pointer to which is shared between instances.

The down-side is that you must manage this shared data but that is often
very simple.  For example, in some programs you can just statically
declare a fixed number of these "class" structs.

I would probably try to put all the operations into either and array or
a flexible array member.  The last time I did this (as with all my
coding these days, it was a toy program) all of the operations had the
same type:

  typedef void Method(struct Object *this, ...);

and the constructor was method 0, the destructor method 1 and so on.

<snip>
-- 
Ben.

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


Thread

Approach to create/use containers in C Thiago Adams <thiago.adams@gmail.com> - 2017-05-04 06:13 -0700
  Re: Approach to create/use containers in C Jerry Stuckle <jstucklex@attglobal.net> - 2017-05-04 09:27 -0400
  Re: Approach to create/use containers in C GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-05-04 15:26 +0200
  Re: Approach to create/use containers in C GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-05-04 15:29 +0200
    Re: Approach to create/use containers in C Thiago Adams <thiago.adams@gmail.com> - 2017-05-04 06:40 -0700
      Re: Approach to create/use containers in C GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-05-04 15:49 +0200
      Re: Approach to create/use containers in C bartc <bc@freeuk.com> - 2017-05-04 16:38 +0100
        Re: Approach to create/use containers in C Thiago Adams <thiago.adams@gmail.com> - 2017-05-04 09:59 -0700
          Re: Approach to create/use containers in C bartc <bc@freeuk.com> - 2017-05-04 18:45 +0100
            Re: Approach to create/use containers in C Thiago Adams <thiago.adams@gmail.com> - 2017-05-05 10:22 -0700
  Re: Approach to create/use containers in C Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2017-05-04 06:33 -0700
    Re: Approach to create/use containers in C GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-05-04 15:40 +0200
      Re: Approach to create/use containers in C Thiago Adams <thiago.adams@gmail.com> - 2017-05-04 06:54 -0700
        Re: Approach to create/use containers in C GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-05-04 16:06 +0200
  Re: Approach to create/use containers in C Richard Heathfield <rjh@cpax.org.uk> - 2017-05-04 15:46 +0100
    Re: Approach to create/use containers in C Thiago Adams <thiago.adams@gmail.com> - 2017-05-04 07:50 -0700
      Re: Approach to create/use containers in C Richard Heathfield <rjh@cpax.org.uk> - 2017-05-04 16:10 +0100
      Re: Approach to create/use containers in C Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2017-05-04 08:18 -0700
        Re: Approach to create/use containers in C Thiago Adams <thiago.adams@gmail.com> - 2017-05-04 09:48 -0700
          Re: Approach to create/use containers in C Richard Heathfield <rjh@cpax.org.uk> - 2017-05-04 17:55 +0100
          Re: Approach to create/use containers in C Ike Naar <ike@iceland.freeshell.org> - 2017-05-04 22:04 +0000
        Re: Approach to create/use containers in C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-05-04 20:03 +0100
          Re: Approach to create/use containers in C Thiago Adams <thiago.adams@gmail.com> - 2017-05-04 12:25 -0700
            Re: Approach to create/use containers in C Robert Wessel <robertwessel2@yahoo.com> - 2017-05-04 15:03 -0500
              Re: Approach to create/use containers in C Thiago Adams <thiago.adams@gmail.com> - 2017-05-04 13:09 -0700
        Re: Approach to create/use containers in C Tim Rentsch <txr@alumni.caltech.edu> - 2017-05-05 01:34 -0700
      Re: Approach to create/use containers in C GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-05-04 17:17 +0200
    Re: Approach to create/use containers in C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-05-04 19:36 +0100
  Re: Approach to create/use containers in C Robert Wessel <robertwessel2@yahoo.com> - 2017-05-04 12:09 -0500
    Re: Approach to create/use containers in C Robert Wessel <robertwessel2@yahoo.com> - 2017-05-04 12:17 -0500
      Re: Approach to create/use containers in C Thiago Adams <thiago.adams@gmail.com> - 2017-05-04 10:30 -0700
        Re: Approach to create/use containers in C Ian Collins <ian-news@hotmail.com> - 2017-05-05 07:50 +1200
      Re: Approach to create/use containers in C Keith Thompson <kst-u@mib.org> - 2017-05-04 11:29 -0700
      Re: Approach to create/use containers in C Andreas Perstinger <andipersti@gmail.com> - 2017-05-04 18:34 +0000
        Re: Approach to create/use containers in C Robert Wessel <robertwessel2@yahoo.com> - 2017-05-04 15:07 -0500
  Re: Approach to create/use containers in C Doug Weiman <no@nyet.net> - 2017-05-04 21:19 +0000
    Re: Approach to create/use containers in C Keith Thompson <kst-u@mib.org> - 2017-05-04 14:41 -0700
      Re: Approach to create/use containers in C Doug Weiman <no@nyet.net> - 2017-05-04 22:30 +0000
  Re: Approach to create/use containers in C "A. Bolmarcich" <aggedor@earl-grey.cloud9.net> - 2017-05-04 21:47 +0000
  Re: Approach to create/use containers in C luser droog <luser.droog@gmail.com> - 2017-05-05 00:43 -0700

csiph-web