shape_doc 0.1
/Users/mourrain/Devel/mmx/shape/glue/glue_algebraic_surface.cpp
Go to the documentation of this file.
00001 
00002 #include <basix/double.hpp>
00003 #include <basix/vector.hpp>
00004 #include <basix/port.hpp>
00005 #include <basix/int.hpp>
00006 #include <numerix/integer.hpp>
00007 #include <numerix/rational.hpp>
00008 #include <numerix/floating.hpp>
00009 #include <numerix/kernel.hpp>
00010 #include <realroot/polynomial.hpp>
00011 #include <realroot/polynomial_glue.hpp>
00012 #include <realroot/polynomial_sparse_glue.hpp>
00013 #include <shape/axel_glue.hpp>
00014 #include <shape/algebraic_curve_glue.hpp>
00015 #include <shape/surface_algebraic_glue.hpp>
00016 #include <basix/alias.hpp>
00017 #include <basix/glue.hpp>
00018 
00019 #define double_literal(x) as_double (as_string (x))
00020 #define int_literal(x) as_int (as_string (x))
00021 #define set_of_generic set_of(generic)
00022 #define set_of_double set_of(double)
00023 #define set_of_integer set_of(integer)
00024 #define set_of_rational set_of(rational)
00025 #define set_of_bigfloat set_of(bigfloat)
00026 #define set_of_complex_bigfloat set_of(complex_bigfloat)
00027 
00028 namespace mmx {
00029   static alias<shape_axel>
00030   GLUE_1 (const alias<shape_axel> &arg_1, const shape_surface_algebraic &arg_2) {
00031     return alias_write (arg_1, arg_2);
00032   }
00033   
00034   static shape_algebraic_curve
00035   GLUE_2 (const shape_surface_algebraic &arg_1, const shape_surface_algebraic &arg_2) {
00036     return shape_surface_algebraic_intersection (arg_1, arg_2);
00037   }
00038   
00039   static shape_surface_algebraic
00040   GLUE_3 (const ring<rational, Sparse, DegRevLex>::Polynomial &arg_1) {
00041     return shape_surface_algebraic (arg_1);
00042   }
00043   
00044   void
00045   glue_algebraic_surface () {
00046     static bool done = false;
00047     if (done) return;
00048     done = true;
00049     call_glue (string ("glue_double"));
00050     call_glue (string ("glue_string"));
00051     call_glue (string ("glue_vector_generic"));
00052     call_glue (string ("glue_polynomial_sparse_rational"));
00053     call_glue (string ("glue_algebraic_curve"));
00054     define_type<shape_surface_algebraic > (lit ("AlgebraicSurface"));
00055     define ("<<", GLUE_1);
00056     define ("*", GLUE_2);
00057     define ("surface_algebraic", GLUE_3);
00058   }
00059 }