Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #126878
| From | "F. Russell" <fr@random.info> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | C Construction Problem |
| Date | 2018-02-20 13:51 +0000 |
| Organization | NewsGuy.com |
| Message-ID | <p6h95408re@news4.newsguy.com> (permalink) |
A pet project of mine has been to convert an "old" 32-bit
C program, written in 1998, into a 64-bit version.
I was successful in doing so but it really wasn't as difficult
as I first imagined.
However, along the way I discovered some interesting C constructions
that I haven't quite been able to decipher. Maybe someone here
would be interested in cracking them.
First, let me provide a link to the original source code:
ftp://ftp2.picturel.com/pub/xo/web/halftone/pei-1.254.tar.gz
The program is intended to remove halftone patterns from scanned
printed images and it is written for a GNU/Linux system.
The problem constructions are found in the file "pei.h" and a
few examples are given here:
#define peiGetOps(image) (((imageType*)(image))->ops)
#define peiGetWidth(image) (((imageType*)(image))->width)
#define peiGetHeight(image) (((imageType*)(image))->height)
#define peiGetDepth(image) (((imageType*)(image))->depth)
#define peiGetLinebytes(image) (((imageType*)(image))->linebytes)
Here, the variable "image" is a pointer to the struct "imageType"
which is defined earlier in the file. (To those who can't download
a copy of the source I will append the code for the struct at the
end of this message.)
I can't understand the need for these constructions. To fix the program,
among other things, I was able to rewrite these as follows:
#define peiGetOps(image) image->ops
#define peiGetWidth(image) (*image).width
#define peiGetHeight(image) (*image).height
#define peiGetDepth(image) (*image).depth
#define peiGetLinebytes(image) image->linebytes
Note that these 5 lines are just a few of many examples of
this kind.
But even more puzzling (to me) are the following lines:
#define peiGetConvertSrc(image) (*(imageType**)&(image)->clientData[0])
#define peiGetConvertOp(image) (*(int32_t*)&(image)->clientData[2])
I can't even begin to deconstruct these. Can someone explain what
is going on?
Here is the code for the imageType struct:
struct imageType {
imageOpsType *ops;
coordType width;
coordType height;
int32_t depth; /* 1..32 */
int32_t linebytes; /* bytes per line */
int32_t allocated; /* bytes allocated */
pixelType fill; /* color to fill with */
int8_t sign;
imageType *primary; /* for secondary, assoc primary */
coordType primaryX; /* for secondary, offset in primary */
coordType primaryY; /* for secondary, offset in primary */
int8_t *data;
uint32_t flags; /* image access mode(s) */
int32_t verbose;
int32_t page; /* number of the current page */
double resX; /* pixels per unit in X */
double resY; /* pixels per unit in Y */
int32_t resUnit; /* 0=nores 1=unk 2=inch 3=cm */
char modes[PEI_MAX_MODES]; /* modes used with open */
char name[PEI_MAX_NAME];
int32_t clientData[PEI_CLIENT_SIZE]; };
Back to comp.lang.c | Previous | Next — Next in thread | Find similar | Unroll thread
C Construction Problem "F. Russell" <fr@random.info> - 2018-02-20 13:51 +0000
Re: C Construction Problem bartc <bc@freeuk.com> - 2018-02-20 14:42 +0000
Re: C Construction Problem "F. Russell" <fr@random.info> - 2018-02-20 15:06 +0000
Re: C Construction Problem Manfred <noname@invalid.add> - 2018-02-20 18:07 +0100
Re: C Construction Problem Jorgen Grahn <grahn+nntp@snipabacken.se> - 2018-02-20 14:54 +0000
Re: C Construction Problem "James R. Kuyper" <jameskuyper@verizon.net> - 2018-02-20 10:06 -0500
Re: C Construction Problem "F. Russell" <fr@random.info> - 2018-02-20 16:11 +0000
Re: C Construction Problem Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-02-20 15:08 +0000
Re: C Construction Problem "F. Russell" <fr@random.info> - 2018-02-20 16:22 +0000
Re: C Construction Problem Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-02-20 17:03 +0000
Re: C Construction Problem Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2018-02-20 09:23 -0800
Re: C Construction Problem Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2018-02-20 11:11 -0700
Re: C Construction Problem "F. Russell" <fr@random.info> - 2018-02-20 18:30 +0000
Re: C Construction Problem Jorgen Grahn <grahn+nntp@snipabacken.se> - 2018-02-20 23:37 +0000
Re: C Construction Problem "F. Russell" <fr@random.info> - 2018-02-21 00:45 +0000
Re: C Construction Problem bartc <bc@freeuk.com> - 2018-02-21 01:46 +0000
Re: C Construction Problem David Brown <david.brown@hesbynett.no> - 2018-02-21 08:49 +0100
Re: C Construction Problem Jorgen Grahn <grahn+nntp@snipabacken.se> - 2018-02-21 09:29 +0000
[OT] Re: C Construction Problem bartc <bc@freeuk.com> - 2018-02-21 11:24 +0000
Re: [OT] Re: C Construction Problem Anton Shepelev <anton.txt@g{oogle}mail.com> - 2018-02-21 14:41 +0300
Re: [OT] Re: C Construction Problem David Brown <david.brown@hesbynett.no> - 2018-02-21 15:10 +0100
Re: [OT] Re: C Construction Problem Robert Wessel <robertwessel2@yahoo.com> - 2018-02-21 12:36 -0600
Re: [OT] Re: C Construction Problem bartc <bc@freeuk.com> - 2018-02-21 21:04 +0000
Re: [OT] Re: C Construction Problem Robert Wessel <robertwessel2@yahoo.com> - 2018-02-21 18:20 -0600
Re: C Construction Problem Anton Shepelev <anton.txt@g{oogle}mail.com> - 2018-02-21 11:09 +0300
Re: C Construction Problem Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2018-02-21 02:29 -0800
Re: C Construction Problem "F. Russell" <fr@random.info> - 2018-02-21 11:32 +0000
Re: C Construction Problem Geoff <geoff@invalid.invalid> - 2018-02-26 11:02 -0800
Re: C Construction Problem David Brown <david.brown@hesbynett.no> - 2018-02-27 09:22 +0100
Re: C Construction Problem Geoff <geoff@invalid.invalid> - 2018-02-27 11:18 -0800
Re: C Construction Problem bartc <bc@freeuk.com> - 2018-02-27 19:51 +0000
Re: C Construction Problem Robert Wessel <robertwessel2@yahoo.com> - 2018-02-28 01:54 -0600
Re: C Construction Problem Robert Wessel <robertwessel2@yahoo.com> - 2018-02-28 01:43 -0600
Re: C Construction Problem Geoff <geoff@invalid.invalid> - 2018-02-28 12:54 -0800
Re: archive decompressor Noob <root@127.0.0.1> - 2018-03-04 12:34 +0100
Re: C Construction Problem Anton Shepelev <anton.txt@g{oogle}mail.com> - 2018-02-21 11:04 +0300
Re: C Construction Problem "F. Russell" <fr@random.info> - 2018-02-21 11:27 +0000
Re: C Construction Problem Anton Shepelev <anton.txt@gmail.com> - 2018-02-28 22:59 +0300
Re: C Construction Problem supercat@casperkitty.com - 2018-02-21 08:49 -0800
Re: C Construction Problem Geoff <geoff@invalid.invalid> - 2018-02-26 11:08 -0800
Re: C Construction Problem "F. Russell" <fr@random.info> - 2018-02-26 23:51 +0000
Re: C Construction Problem Geoff <geoff@invalid.invalid> - 2018-02-27 11:24 -0800
Re: C Construction Problem Tim Rentsch <txr@alumni.caltech.edu> - 2018-02-21 08:07 -0800
Re: C Construction Problem fr314159@gmail.com - 2018-02-21 09:16 -0800
Re: C Construction Problem Tim Rentsch <txr@alumni.caltech.edu> - 2018-02-21 21:26 -0800
Re: C Construction Problem Keith Thompson <kst-u@mib.org> - 2018-02-21 09:43 -0800
Re: C Construction Problem Tim Rentsch <txr@alumni.caltech.edu> - 2018-02-21 22:47 -0800
Re: C Construction Problem Jorgen Grahn <grahn+nntp@snipabacken.se> - 2018-02-22 13:09 +0000
Re: C Construction Problem Tim Rentsch <txr@alumni.caltech.edu> - 2018-02-24 13:37 -0800
Re: C Construction Problem Keith Thompson <kst-u@mib.org> - 2018-02-22 10:50 -0800
Re: C Construction Problem Tim Rentsch <txr@alumni.caltech.edu> - 2018-02-24 13:58 -0800
Re: C Construction Problem Keith Thompson <kst-u@mib.org> - 2018-02-24 15:05 -0800
Re: C Construction Problem Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2018-02-25 03:21 -0800
Re: C Construction Problem bartc <bc@freeuk.com> - 2018-02-25 11:51 +0000
Re: C Construction Problem Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2018-02-25 04:06 -0800
Re: C Construction Problem bartc <bc@freeuk.com> - 2018-02-25 12:47 +0000
Re: C Construction Problem "F. Russell" <fr@random.info> - 2018-02-25 13:20 +0000
Re: C Construction Problem bartc <bc@freeuk.com> - 2018-02-25 17:46 +0000
Re: C Construction Problem "F. Russell" <fr@random.info> - 2018-02-25 18:58 +0000
Re: C Construction Problem bartc <bc@freeuk.com> - 2018-02-25 20:01 +0000
Re: C Construction Problem bartc <bc@freeuk.com> - 2018-02-25 20:25 +0000
Re: C Construction Problem Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2018-02-26 02:49 -0800
Re: C Construction Problem Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-02-25 20:02 +0000
Re: C Construction Problem Keith Thompson <kst-u@mib.org> - 2018-02-25 15:13 -0800
Re: C Construction Problem Robert Wessel <robertwessel2@yahoo.com> - 2018-02-25 11:50 -0600
Re: C Construction Problem Ian Collins <ian-news@hotmail.com> - 2018-02-26 07:38 +1300
Re: C Construction Problem Keith Thompson <kst-u@mib.org> - 2018-02-25 15:15 -0800
Re: C Construction Problem Tim Rentsch <txr@alumni.caltech.edu> - 2018-02-26 22:02 -0800
Re: C Construction Problem jameskuyper@verizon.net - 2018-02-27 06:32 -0800
Re: C Construction Problem GOTHIER Nathan <nathan.gothier@gmail.com> - 2018-02-27 16:56 +0100
Re: C Construction Problem jameskuyper@verizon.net - 2018-02-27 08:27 -0800
Re: C Construction Problem GOTHIER Nathan <nathan.gothier@gmail.com> - 2018-02-27 18:02 +0100
Re: C Construction Problem jameskuyper@verizon.net - 2018-02-27 10:23 -0800
Re: C Construction Problem Tim Rentsch <txr@alumni.caltech.edu> - 2018-03-03 01:09 -0800
Re: C Construction Problem David Brown <david.brown@hesbynett.no> - 2018-02-28 10:37 +0100
Re: C Construction Problem Tim Rentsch <txr@alumni.caltech.edu> - 2018-03-03 01:29 -0800
Re: C Construction Problem Steven Petruzzellis <frelwizzen@gmail.com> - 2018-03-03 02:00 -0800
Re: C Construction Problem Keith Thompson <kst-u@mib.org> - 2018-02-27 08:46 -0800
Re: C Construction Problem jameskuyper@verizon.net - 2018-02-27 09:15 -0800
Re: C Construction Problem Tim Rentsch <txr@alumni.caltech.edu> - 2018-03-03 02:08 -0800
Re: C Construction Problem Steven Petruzzellis <frelwizzen@gmail.com> - 2018-03-03 02:31 -0800
Re: C Construction Problem Ian Collins <ian-news@hotmail.com> - 2018-03-04 10:34 +1300
Re: C Construction Problem Tim Rentsch <txr@alumni.caltech.edu> - 2018-03-19 10:27 -0700
Re: C Construction Problem jameskuyper@verizon.net - 2018-03-03 21:35 -0800
Re: C Construction Problem Tim Rentsch <txr@alumni.caltech.edu> - 2018-03-17 10:29 -0700
Re: C Construction Problem Steven Petruzzellis <frelwizzen@gmail.com> - 2018-03-18 08:14 -0700
Re: C Construction Problem David Brown <david.brown@hesbynett.no> - 2018-02-25 21:49 +0100
Re: C Construction Problem Keith Thompson <kst-u@mib.org> - 2018-02-25 15:09 -0800
Re: C Construction Problem gazelle@shell.xmission.com (Kenny McCormack) - 2018-02-26 13:46 +0000
Re: C Construction Problem David Brown <david.brown@hesbynett.no> - 2018-02-26 14:57 +0100
Re: C Construction Problem Tim Rentsch <txr@alumni.caltech.edu> - 2018-02-26 22:14 -0800
Re: C Construction Problem "F. Russell" <fr@random.info> - 2018-02-22 00:11 +0000
Re: C Construction Problem Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2018-02-21 17:27 -0700
Re: C Construction Problem Keith Thompson <kst-u@mib.org> - 2018-02-20 09:30 -0800
Re: C Construction Problem Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-02-21 00:23 +0000
Re: C Construction Problem Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2018-02-20 09:11 -0700
Re: C Construction Problem "F. Russell" <fr@random.info> - 2018-02-20 16:38 +0000
Re: C Construction Problem bartc <bc@freeuk.com> - 2018-02-20 17:07 +0000
Re: C Construction Problem John Bode <jfbode1029@gmail.com> - 2018-02-20 09:09 -0800
Re: C Construction Problem "James R. Kuyper" <jameskuyper@verizon.net> - 2018-02-20 12:18 -0500
Re: C Construction Problem Keith Thompson <kst-u@mib.org> - 2018-02-20 09:38 -0800
Re: C Construction Problem Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2018-02-20 11:08 -0700
Re: C Construction Problem Gordon Burditt <gordon@hammy.burditt.org> - 2018-02-20 21:47 -0600
Re: C Construction Problem Keith Thompson <kst-u@mib.org> - 2018-02-21 09:36 -0800
Re: C Construction Problem Geoff <geoff@invalid.invalid> - 2018-02-26 11:21 -0800
csiph-web