www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - contracts for external functions?

reply Trass3r <un known.com> writes:
The Matlab C headers provide some kind of hand-crafted contracts by  
defining extra functions with suffix "_d" that check all the arguments and  
then detouring the calls to the original functions via the preprocessor  
(#define foo foo_d)

Of course I could do it the same way, but wouldn't it be better to add  
this case to D's contract programming similar to interface contracts?

extern(C) int foo(int i)
   in { assert(i > 7); }
   out (result) { assert(result & 1); }
Aug 23 2010
next sibling parent reply bearophile <bearophileHUGS lycos.com> writes:
Trass3r:
 extern(C) int foo(int i)
    in { assert(i > 7); }
    out (result) { assert(result & 1); }
A nice idea to remember (regardless the syntax used to do it). Bye, bearophile
Aug 23 2010
parent Trass3r <un known.com> writes:
 extern(C) int foo(int i)
    in { assert(i > 7); }
    out (result) { assert(result & 1); }
A nice idea to remember (regardless the syntax used to do it).
At least that's the interface contracts syntax (wonder why there's no ';')
Aug 23 2010
prev sibling parent Trass3r <un known.com> writes:
 extern(C) int foo(int i)
    in { assert(i > 7); }
    out (result) { assert(result & 1); }
http://d.puremagic.com/issues/show_bug.cgi?id=4720
Aug 24 2010