:- use_module(library(lineutils), [file_filter_with_init/5, file_filter_with_initialization/5, split_unquoted/3]). :- use_module(library(lists), [append/2]). :- initialization(main). :- yap_flag(write_strings,on). main :- warning(Warning), file_filter_with_init('H/ATOMS','H/generated/tatoms.h',gen_fields, Warning, ['tatoms.h']), file_filter_with_init('H/ATOMS','H/generated/iatoms.h',gen_decl, Warning, ['iatoms.h']), file_filter_with_init('H/ATOMS','H/generated/ratoms.h',gen_rcov, Warning, ['ratoms.h']). warning('~n /* This file, ~a, was generated automatically by \"yap -L misc/buildatoms\"~n {lease do not update, update misc/ATOMS instead */~n~n'). gen_fields(Inp,Out) :- split_unquoted(Inp," ",["A",Atom,_,_]), !, ( Atom = [C|_], code_type(C, alpha), Atom \= "Trail" -> append(["X_API EXTERNAL Atom Atom",Atom,"; X_API EXTERNAL Term Term",Atom,";"], Out) ; append(["X_API EXTERNAL Atom Atom",Atom,";"], Out) ). gen_fields(Inp,Out) :- split_unquoted(Inp," ",["F",Name,_,_]), !, append(["X_API EXTERNAL Functor Functor",Name,";\n"],Out). gen_rcov(Inp,Out) :- split_unquoted(Inp," ",["A",Atom,_,_]), !, ( Atom = [C|_], code_type(C, alpha), Atom \= "Trail" -> append([" Atom",Atom," = AtomAdjust(Atom",Atom,"); Term",Atom," = MkAtomTerm(Atom",Atom,");"],Out) ; append([" Atom",Atom," = AtomAdjust(Atom",Atom,");"],Out) ). %gen_rcov(Inp,Out) :- % split_unquoted(Inp," ",["A",Atom,_]), !, % append([" Atom_",Atom," = AtomAdjust(Atom_",Atom,");"],Out). gen_rcov(Inp,Out) :- split_unquoted(Inp," ",["F",Functor,_,_]), !, append([" Functor",Functor," = FuncAdjust(Functor",Functor,");"],Out). %gen_rcov(Inp,Out) :- % split_unquoted(Inp," ",["F",Functor,Arity]), !, % append([" Functor_",Functor,Arity," = FuncAdjust(Functor_",Functor,Arity,");"],Out). gen_decl(Inp,Out) :- split_unquoted(Inp," ",["A",Atom,"N",String]), !, ( Atom = [C|_], code_type(C, alpha), Atom \= "Trail" -> append([" Atom",Atom," = Yap_LookupAtom(",String,"); Term",Atom," = MkAtomTerm(Atom",Atom,");"],Out) ; append([" Atom",Atom," = Yap_LookupAtom(",String,");"],Out) ). gen_decl(Inp,Out) :- split_unquoted(Inp," ",["A",Atom,"F",String]), !, ( Atom = [C|_], code_type(C, alpha), Atom \= "Trail" -> append([" Atom",Atom," = Yap_FullLookupAtom(",String,"); Term",Atom," = MkAtomTerm(Atom",Atom,");"],Out) ; append([" Atom",Atom," = Yap_FullLookupAtom(",String,");"],Out) ). %gen_decl(Inp,Out) :- % split_unquoted(Inp," ",["A",Atom,String]), String = [0'",0'$|_], !, % append([" Atom_",Atom," = Yap_FullLookupAtom(",String,");"],Out). %gen_decl(Inp,Out) :- % split_unquoted(Inp," ",["A",Atom,String]), !, % append([" Atom_",Atom," = Yap_LookupAtom(",String,");"],Out). gen_decl(Inp,Out) :- split_unquoted(Inp," ",["F",Name,Atom,Arity]), !, append([" Functor",Name," = Yap_MkFunctor(Atom",Atom,",",Arity,");"],Out). %gen_decl(Inp,Out) :- % split_unquoted(Inp," ",["F",Name,Arity]), !, % append([" Functor_",Name,Arity," = Yap_MkFunctor(Atom_",Name,",",Arity,");"],Out).