21aab28a59
new YAP_ foreign interface fix unbound_first_arg in call_with_args git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@582 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
72 lines
2.7 KiB
Prolog
72 lines
2.7 KiB
Prolog
/*************************************************************************
|
|
* *
|
|
* YAP Prolog *
|
|
* *
|
|
* Yap Prolog was developed at NCCUP - Universidade do Porto *
|
|
* *
|
|
* Copyright L.Damas, V.S.Costa and Universidade do Porto 1985-1997 *
|
|
* *
|
|
**************************************************************************
|
|
* *
|
|
* File: load_foreign.yap *
|
|
* Last rev: 8/2/88 *
|
|
* mods: *
|
|
* comments: Utility predicates for load_foreign *
|
|
* *
|
|
*************************************************************************/
|
|
|
|
load_foreign_files(Objs,Libs,Entry) :-
|
|
'$check_objs_for_load_foreign_files'(Objs,NewObjs,load_foreign_files(Objs,Libs,Entry)),
|
|
'$check_libs_for_load_foreign_files'(Libs,load_foreign_files(Objs,Libs,Entry)),
|
|
'$check_entry_for_load_foreign_files'(Entry,load_foreign_files(Objs,Libs,Entry)),
|
|
'$load_foreign_files'(NewObjs,Libs,Entry).
|
|
|
|
'$check_objs_for_load_foreign_files'(V,_,G) :- var(V), !,
|
|
'$do_error'(instantiation_error,G).
|
|
'$check_objs_for_load_foreign_files'([],[],_) :- !.
|
|
'$check_objs_for_load_foreign_files'([Obj|Objs],[NObj|NewObjs],G) :- !,
|
|
'$check_obj_for_load_foreign_files'(Obj,NObj,G),
|
|
'$check_objs_for_load_foreign_files'(Objs,NewObjs,G).
|
|
'$check_objs_for_load_foreign_files'(Objs,_,G) :-
|
|
'$do_error'(type_error(list,Objs),G).
|
|
|
|
'$check_obj_for_load_foreign_files'(V,_,G) :- var(V), !,
|
|
'$do_error'(instantiation_error,G).
|
|
'$check_obj_for_load_foreign_files'(Obj,NewObj,_) :- atom(Obj), !,
|
|
atom_codes(Obj,ObjCodes),
|
|
'$process_obj_suffix'(ObjCodes,NewObjCodes),
|
|
atom_codes(NewObj,NewObjCodes).
|
|
'$check_obj_for_load_foreign_files'(Obj,_,G) :-
|
|
'$do_error'(type_error(atom,Obj),G).
|
|
|
|
'$check_libs_for_load_foreign_files'(V,G) :- var(V), !,
|
|
'$do_error'(instantiation_error,G).
|
|
'$check_libs_for_load_foreign_files'([],_) :- !.
|
|
'$check_libs_for_load_foreign_files'([Lib|Libs],G) :- !,
|
|
'$check_lib_for_load_foreign_files'(Lib,G),
|
|
'$check_libs_for_load_foreign_files'(Libs,G).
|
|
'$check_libs_for_load_foreign_files'(Libs,G) :-
|
|
'$do_error'(type_error(list,Libs),G).
|
|
|
|
'$check_lib_for_load_foreign_files'(V,G) :- var(V), !,
|
|
'$do_error'(instantiation_error,G).
|
|
'$check_lib_for_load_foreign_files'(Lib,_) :- atom(Lib), !.
|
|
'$check_lib_for_load_foreign_files'(Lib,G) :-
|
|
'$do_error'(type_error(atom,Lib),G).
|
|
|
|
'$check_entry_for_load_foreign_files'(V,G) :- var(V), !,
|
|
'$do_error'(instantiation_error,G).
|
|
'$check_entry_for_load_foreign_files'(Entry,_) :- atom(Entry), !.
|
|
'$check_entry_for_load_foreign_files'(Entry,G) :-
|
|
'$do_error'(type_error(atom,Entry),G).
|
|
|
|
|
|
'$process_obj_suffix'(ObjCodes,ObjCodes) :-
|
|
'$obj_suffix'(ObjSuffix),
|
|
'$append'(ObjCodes,ObjSuffix,ObjCodes), !.
|
|
'$process_obj_suffix'(ObjCodes,NewObjCodes) :-
|
|
'$obj_suffix'(ObjSuffix),
|
|
'$append'(ObjCodes,ObjSuffix,NewObjCodes).
|
|
|
|
|