basix_doc 0.1
/Users/mourrain/Devel/mmx/basix/glue/glue_literal.cpp
Go to the documentation of this file.
00001 
00002 #include <basix/vector.hpp>
00003 #include <basix/port.hpp>
00004 #include <basix/literal.hpp>
00005 #include <basix/tuple.hpp>
00006 #include <basix/glue.hpp>
00007 
00008 #define is_generic_literal is<literal>
00009 #define literal_apply(f,v) gen (as<generic> (f), v)
00010 #define literal_access(f,v) access (as<generic> (f), v)
00011 
00012 namespace mmx {
00013   static bool
00014   GLUE_1 (const generic &arg_1) {
00015     return is_generic_literal (arg_1);
00016   }
00017   
00018   static literal
00019   GLUE_2 (const string &arg_1) {
00020     return literal (arg_1);
00021   }
00022   
00023   static string
00024   GLUE_3 (const literal &arg_1) {
00025     return *arg_1;
00026   }
00027   
00028   static generic
00029   GLUE_4 (const literal &arg_1, const tuple<generic> &arg_2) {
00030     return literal_apply (arg_1, as_vector (arg_2));
00031   }
00032   
00033   static generic
00034   GLUE_5 (const literal &arg_1, const tuple<generic> &arg_2) {
00035     return literal_access (arg_1, as_vector (arg_2));
00036   }
00037   
00038   void
00039   glue_literal () {
00040     static bool done = false;
00041     if (done) return;
00042     done = true;
00043     call_glue (string ("glue_string"));
00044     define ("literal?", GLUE_1);
00045     define ("as_literal", GLUE_2);
00046     define ("as_string", GLUE_3);
00047     define (".()", GLUE_4);
00048     define (".[]", GLUE_5);
00049   }
00050 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines