80 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | |
| :- 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).
 |