|
34 | 34 | #include <boost/archive/binary_iarchive.hpp> |
35 | 35 | #include <boost/archive/text_oarchive.hpp> |
36 | 36 | #include <boost/archive/text_iarchive.hpp> |
| 37 | +#ifdef CGAL_USE_GMPXX |
| 38 | +#include <CGAL/mpz_class.h> |
| 39 | +#include <CGAL/mpq_class.h> |
| 40 | +#endif |
37 | 41 |
|
38 | 42 | namespace SFCGAL { |
39 | 43 |
|
@@ -132,6 +136,63 @@ void serialize( Archive& ar, CGAL::Gmpq& q, const unsigned int version ) |
132 | 136 | split_free( ar, q, version ); |
133 | 137 | } |
134 | 138 |
|
| 139 | +#ifdef CGAL_USE_GMPXX |
| 140 | +/** |
| 141 | + * Serialization of mpz_class for text archives |
| 142 | + */ |
| 143 | +SFCGAL_API void save( boost::archive::text_oarchive& ar, const mpz_class& z, const unsigned int version ); |
| 144 | + |
| 145 | +/** |
| 146 | + * Serialization of mpz_class for binary archives |
| 147 | + */ |
| 148 | +SFCGAL_API void save ( boost::archive::binary_oarchive& ar, const mpz_class& z, const unsigned int version ); |
| 149 | + |
| 150 | +/** |
| 151 | + * Unserialization of mpz_class for text archives |
| 152 | + */ |
| 153 | +SFCGAL_API void load( boost::archive::text_iarchive& ar, mpz_class& z, const unsigned int version ); |
| 154 | + |
| 155 | +/** |
| 156 | + * Unserialization of mpz_class for binary archives |
| 157 | + */ |
| 158 | +SFCGAL_API void load( boost::archive::binary_iarchive& ar, mpz_class& z, const unsigned int version ); |
| 159 | + |
| 160 | +template<class Archive> |
| 161 | +void serialize( Archive& ar, mpz_class& z, const unsigned int version ) |
| 162 | +{ |
| 163 | + split_free( ar, z, version ); |
| 164 | +} |
| 165 | + |
| 166 | +/** |
| 167 | + * Serializer of mpq_class |
| 168 | + */ |
| 169 | +template<class Archive> |
| 170 | +void save( Archive& ar, const mpq_class& q, const unsigned int /*version*/ ) |
| 171 | +{ |
| 172 | + mpz_class n = q.get_num(); |
| 173 | + mpz_class d = q.get_den(); |
| 174 | + ar& n; |
| 175 | + ar& d; |
| 176 | +} |
| 177 | + |
| 178 | +/** |
| 179 | + * Unserializer of mpq_class |
| 180 | + */ |
| 181 | +template<class Archive> |
| 182 | +void load( Archive& ar, mpq_class& q, const unsigned int /*version*/ ) |
| 183 | +{ |
| 184 | + mpz_class n; |
| 185 | + mpz_class d; |
| 186 | + ar& n; |
| 187 | + ar& d; |
| 188 | + q = mpq_class( n, d ); |
| 189 | +} |
| 190 | +template<class Archive> |
| 191 | +void serialize( Archive& ar, mpq_class& q, const unsigned int version ) |
| 192 | +{ |
| 193 | + split_free( ar, q, version ); |
| 194 | +} |
| 195 | +#endif |
135 | 196 |
|
136 | 197 | /** |
137 | 198 | * Serializer of Kernel::FT |
|
0 commit comments