1 /* Ciao Prolog extended foreign language interface: declarations. 2 Copyright (C) 2001-2010 Roberto Bagnara <bagnara@cs.unipr.it> 3 Copyright (C) 2010-2016 BUGSENG srl (http://bugseng.com) 4 5 This file is part of the Parma Polyhedra Library (PPL). 6 7 The PPL is free software; you can redistribute it and/or modify it 8 under the terms of the GNU General Public License as published by the 9 Free Software Foundation; either version 3 of the License, or (at your 10 option) any later version. 11 12 The PPL is distributed in the hope that it will be useful, but WITHOUT 13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 15 for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with this program; if not, write to the Free Software Foundation, 19 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA. 20 21 For the most up-to-date information see the Parma Polyhedra Library 22 site: http://bugseng.com/products/ppl/ . */ 23 24 #ifndef PPL_ciao_efli_hh 25 #define PPL_ciao_efli_hh 1 26 27 #define PPL_NO_AUTOMATIC_INITIALIZATION 28 #include "ppl.hh" 29 // By including "ppl.hh" first, we ensure the limit macros provided by 30 // <stdint.h> and/or <inttypes.h> are already defined. 31 #include "ciao_cfli.hh" 32 33 namespace Parma_Polyhedra_Library { 34 35 namespace Interfaces { 36 37 namespace Prolog { 38 39 namespace Ciao { 40 41 /*! 42 True if and only if the Prolog engine supports unbounded integers. 43 */ 44 extern bool Prolog_has_unbounded_integers; 45 46 /*! 47 If \p Prolog_has_unbounded_integers is false, holds the minimum 48 integer value representable by a Prolog integer. 49 Holds zero otherwise. 50 */ 51 extern long Prolog_min_integer; 52 53 /*! 54 If \p Prolog_has_unbounded_integers is false, holds the maximum 55 integer value representable by a Prolog integer. 56 Holds zero otherwise. 57 */ 58 extern long Prolog_max_integer; 59 60 /*! 61 Performs system-dependent initialization. 62 */ 63 void 64 ppl_Prolog_sysdep_init(); 65 66 /*! 67 Perform system-dependent de-itialization. 68 */ 69 void 70 ppl_Prolog_sysdep_deinit(); 71 72 // FIXME: write the documentation. 73 int 74 Prolog_get_Coefficient(Prolog_term_ref t, Coefficient& n); 75 76 // FIXME: write the documentation. 77 int 78 Prolog_unify_Coefficient(Prolog_term_ref t, const Coefficient& n); 79 80 // FIXME: write the documentation. 81 int 82 Prolog_put_Coefficient(Prolog_term_ref& t, const Coefficient& n); 83 84 } // namespace Ciao 85 86 } // namespace Prolog 87 88 } // namespace Interfaces 89 90 } // namespace Parma_Polyhedra_Library 91 92 #endif // !defined(PPL_ciao_efli_hh) 93