Mostly for the record... nothing new here.
> Terminology check: It *would* be a standard module (forming part of the
> standard library); it would not be an internal / automatically-used module.
> Right?
Yes, that's right.
>
>> Chapel doesn't have anything like #ifdef, but the generic programming
>> facility is very flexible and could support string comparison on
>> config params that indicate the current platform. I believe that
>> should work now, but havn't tried it. These are defined in ChapelBase.chpl
>> line 1-123. You should be able to say something like (I'm intentionally
>> ignoring details):
>> proc mygetaddrinfo() {
>> extern proc getaddrinfo();
>> if CHPL_TARGET_PLATFORM == "cray" {
>> // do something else
>> } else {
>> getaddrinfo()
>> }
>> }
>
> Such a thing should work -- the primarily limitation of this capability
> compared to an #ifdef
> is that it introduces a lexical scope, like any other conditional, so can't
> be used to choose
> between two declarations, e.g. We've discussed various ways of supporting
> that capability
>(because it's a common thing to want) but none have been implemented yet.
> This is part of the reason that I encourage doing this sort of switching at
> the C rather than
> Chapel level.
Yes, but in this case we're trying to avoid a linker error. The strategy
wouldn't work if it was a problem with e.g. the function not existing in C.
>
>> Since CHPL_TARGET_PLATFORM (and the other similar variables) are config param
>> (ie compile-time) constants, the compiler is obligated to remove the branch
>> of the if statement that does not apply. Now, of course CHPL_TARGET_PLATFORM
>> has a variety of versions for Crays, so perhaps your strstr would be
>> useful at compile time, like
>>
>> if CHPL_TARGET_PLATFORM.contains("cray")
>
> In order for this to work as the equality does above, contains() would have
> to be made
> into a 'param' (compile-time evaluatable) method (another reason to handle
> this at the
>C level, potentially).
There is a string_contains in ChapelBase.chpl that handles params. Presumably
it works
at compile time...
-michael
------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT
organizations don't have a clear picture of how application performance
affects their revenue. With AppDynamics, you get 100% visibility into your
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk
_______________________________________________
Chapel-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/chapel-developers