[m-dev.] pragma stub proposal
Ian MacLarty
maclarty at csse.unimelb.edu.au
Thu Aug 13 13:44:26 AEST 2009
On Thu, Aug 13, 2009 at 12:47 PM, Peter
Schachte<schachte at csse.unimelb.edu.au> wrote:
> Ian MacLarty wrote:
>> On Wed, Aug 12, 2009 at 3:22 PM, Julien
>> Fischer<juliensf at csse.unimelb.edu.au> wrote:
>>> On Wed, 12 Aug 2009, Ian MacLarty wrote:
>>>> What I would prefer is to be able to tell the compiler to create stubs
>>>> for a specific set of predicates with a pragma. For example:
>>>>
>>>> :- pragma stub(jdbc_get_dbms_name/6).
>>
>> You wouldn't provide the clause in the presence of this pragma.
>
> How about allowing an optional second argument to the pragma to specify the
> error message? So you could distinguish between "Not yet implemented" and
> "Not available in this grade." Or, if those are the only two reasons you can
> think of for stubs, just provide two different pagmas, like unavailable/1 and
> unimplemented/1.
>
What I eventually ended up doing was the following:
% First define dummy Mercury types for the Java foreign_types.
% These are necessary for when a stub has to output a foreign value.
:- type jdbc_db ---> jdbc_db.
:- type jdbc_cursor ---> jdbc_cursor.
% Now define det_error, so we can throw an exception in the stub
without getting a warning:
:- pred det_error(string::in, io::di, io::uo) is det.
det_error(Msg, !IO) :-
( semidet_succeed ->
error(Msg)
;
true
).
% Now define the stub for non-Java grades:
jdbc_get_dbms_name(_, "", -1, "", !IO) :- det_error("non-Java grade", !IO).
I guess this isn't too bad really.
Ian.
--------------------------------------------------------------------------
mercury-developers mailing list
Post messages to: mercury-developers at csse.unimelb.edu.au
Administrative Queries: owner-mercury-developers at csse.unimelb.edu.au
Subscriptions: mercury-developers-request at csse.unimelb.edu.au
--------------------------------------------------------------------------
More information about the developers
mailing list