Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | "BartC" <bc@freeuk.com> |
|---|---|
| Newsgroups | comp.lang.c |
| References | <kcngpa$2jl$1@dont-email.me> <0.e4da14736427397ca6e1.20130111032010GMT.878v80quc5.fsf@bsb.me.uk> <kco8gq$mao$1@dont-email.me> <uoTHs.8028$MG6.2033@fx32.fr7> <kcpn8m$gvs$1@dont-email.me> |
| Subject | Re: Favourite Pattern for Processing Zero, Once, Multiple |
| Message-ID | <I40Is.23$sp6.20@fx02.fr7> (permalink) |
| Organization | virginmedia.com |
| Date | 2013-01-11 22:09 +0000 |
"Shao Miller" <sha0.miller@gmail.com> wrote in message news:kcpn8m$gvs$1@dont-email.me... > On 1/11/2013 07:15, BartC wrote: >> It's not clear what the roles of bar() and foo() are. Maybe one of those >> returns the next translated character, but some more information is >> needed. The whole thing seems a bit like a tokeniser, or at least has >> some of the same problems to be solved. > For the subsequent translation scenario I tried to describe, the caller is > responsible for getting a single input character 'ic'. However they do it > should be opaque to the translating function, 'bar'. The caller calls > 'bar' to translate 'ic' to '*oc'. > > extern return_type bar(state_type state, char ic, char * oc); > > 'bar' might not emit any output character '*oc' if it's not yet ready. In > that case, the caller shouldn't work with '*oc'; shouldn't send it > wherever output is going. Your function seems to be deceptively simple, but it's not! It could be used, for example, to translate one language to another. But suppose it is kept simple, so that all it does is translate N characters of input (N>=1) to M characters of output (M>=0). It might not know the value of N either, until it's read the N'th (or even subsequent) character (for example, to map repeated characters to just one or zero occurrences). One problem I can see is that both N and M could be very large, for various reasons, but let's say the state variables can cope with buffering unlimited numbers of input and/or output characters. Then we're pretty much back to the dialog in your original post. I don't know if there's any standard way of doing these things. I can tell you that I probably wouldn't stick with the character-at-time model, but allow a string to be returned. I think (not having tried) the states can be reduced to just two: (1) bar is waiting for the character to start the next block of N; (2) it is waiting for the character to delimit this block. With (2), bar() *has* to be called again until this pattern is complete, and it reverts to state (1). (But it's also possible some patterns will never complete, and the caller needs a way of terminating.) After each call there will also be some output in the form of a string (which can also be done by a callback on each character), of any length including zero. -- bartc
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Favourite Pattern for Processing Zero, Once, Multiple Shao Miller <sha0.miller@gmail.com> - 2013-01-10 17:53 -0500
Re: Favourite Pattern for Processing Zero, Once, Multiple "BartC" <bc@freeuk.com> - 2013-01-10 23:26 +0000
Re: Favourite Pattern for Processing Zero, Once, Multiple Shao Miller <sha0.miller@gmail.com> - 2013-01-10 18:49 -0500
Re: Favourite Pattern for Processing Zero, Once, Multiple "BartC" <bc@freeuk.com> - 2013-01-11 00:23 +0000
Re: Favourite Pattern for Processing Zero, Once, Multiple Ben Bacarisse <ben.usenet@bsb.me.uk> - 2013-01-11 03:20 +0000
Re: Favourite Pattern for Processing Zero, Once, Multiple Shao Miller <sha0.miller@gmail.com> - 2013-01-11 00:38 -0500
Re: Favourite Pattern for Processing Zero, Once, Multiple Bart van Ingen Schenau <bart@ingen.ddns.info.invalid> - 2013-01-11 12:10 +0000
Re: Favourite Pattern for Processing Zero, Once, Multiple Shao Miller <sha0.miller@gmail.com> - 2013-01-11 13:37 -0500
Re: Favourite Pattern for Processing Zero, Once, Multiple "BartC" <bc@freeuk.com> - 2013-01-11 12:15 +0000
Re: Favourite Pattern for Processing Zero, Once, Multiple Shao Miller <sha0.miller@gmail.com> - 2013-01-11 13:56 -0500
Re: Favourite Pattern for Processing Zero, Once, Multiple Fred K <fred.l.kleinschmidt@gmail.com> - 2013-01-11 11:15 -0800
Re: Favourite Pattern for Processing Zero, Once, Multiple Shao Miller <sha0.miller@gmail.com> - 2013-01-11 14:28 -0500
Re: Favourite Pattern for Processing Zero, Once, Multiple Greg Martin <greg@softsprocket.com> - 2013-01-11 11:22 -0800
Re: Favourite Pattern for Processing Zero, Once, Multiple Shao Miller <sha0.miller@gmail.com> - 2013-01-11 15:23 -0500
Re: Favourite Pattern for Processing Zero, Once, Multiple Greg Martin <greg@softsprocket.com> - 2013-01-11 13:09 -0800
Re: Favourite Pattern for Processing Zero, Once, Multiple "BartC" <bc@freeuk.com> - 2013-01-11 22:09 +0000
Re: Favourite Pattern for Processing Zero, Once, Multiple Paul N <gw7rib@aol.com> - 2013-01-12 04:49 -0800
Re: Favourite Pattern for Processing Zero, Once, Multiple Shao Miller <sha0.miller@gmail.com> - 2013-01-13 20:30 -0500
Re: Favourite Pattern for Processing Zero, Once, Multiple glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2013-01-11 21:02 +0000
Re: Favourite Pattern for Processing Zero, Once, Multiple Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2013-01-13 20:28 +0200
Re: Favourite Pattern for Processing Zero, Once, Multiple Shao Miller <sha0.miller@gmail.com> - 2013-01-13 16:12 -0500
csiph-web