🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #310452

Re: Mapa zakresów

#310452
From: Maciek Godek
Date: Wed, 05 Apr 2023 20:14
37 lines
2475 bytes
środa, 5 kwietnia 2023 o 12:39:02 UTC+2 heby napisał(a):
> Cześć. 
> 
> Rozgladam się za czymś eleganckim w rodzaju: 
> 
> Foo< jakieśtamtypy > map = { 
> { { 0x0000, 0x1fff }, range1lambda } 
> { { 0x2000, 0x20ff }, range2lambda } 
> { { 0x8000, 0xffff }, range3lambda } 
> }; 
> 
> ... i użyciem jakoś w rodzaju: 
> 
> foo[ address ]( data ); 
> 
> Co ma spowodować selekcję prawidłowej "lambda" na podstawie zakresu 
> "address" i wywołanie lambdy. 
> 
> Jast jakiś gotowiec do tego w boost? Czy rekodzieło? Przejrzałem boosta, 
> stackoverlow, ale nie widze od ręki lub przeoczyłem. Niby jest 
> boost:range, ale jakoś mapy tego typu wprost nie widzę.

Tak na szybko to bym wymyślił takie coś:

int address_range(intptr_t address) {
  return 1*(0x0000 <= address && address < 0x2000) 
          + 2*(0x2000 <= address && address < 0x20ff)
          + 3*(0x8000 <= address && address < 0xffff);
}

void (*function[4])(void *) = { ... };

void dispatch(intptr_t address, void *data) {
    function[address_range(address)](data);
}

(chyba że zakresy byłyby równe - wtedy bym użył operatora dzielenia)
Technical Details
Message-ID: <25304d4b-7e13-46aa-8e01-4c70bfb986ben@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!feeder.erje.net!weretis.net!feeder8.news.weretis.net!news.mixmin.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
References: <u0jj43$3rqre$2@dont-email.me>

Show Full Headers
Complete Article Headers
X-Received: by 2002:a05:6214:4a4a:b0:5a2:f831:ba3c with SMTP id ph10-20020a0562144a4a00b005a2f831ba3cmr91799qvb.8.1680725691555;        Wed, 05 Apr 2023 13:14:51 -0700 (PDT)
X-Received: by 2002:a05:6871:789:b0:17f:2918:2f46 with SMTP id o9-20020a056871078900b0017f29182f46mr3560154oap.5.1680725691292; Wed, 05 Apr 2023 13:14:51 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!feeder.erje.net!weretis.net!feeder8.news.weretis.net!news.mixmin.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.c
Date: Wed, 5 Apr 2023 13:14:51 -0700 (PDT)
In-Reply-To: <u0jj43$3rqre$2@dont-email.me>
Injection-Info: google-groups.googlegroups.com; posting-host=188.47.115.153; posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
NNTP-Posting-Host: 188.47.115.153
References: <u0jj43$3rqre$2@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <25304d4b-7e13-46aa-8e01-4c70bfb986ben@googlegroups.com>
Subject: Re: Mapa zakresów
From: Maciek Godek <godek.maciek@gmail.com>
Injection-Date: Wed, 05 Apr 2023 20:14:51 +0000
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit