+END_OF_DECLARE_FUNCTION_MACRO_NAMESPACE
+
+$declare_function_macro_no_namespace = <<'END_OF_DECLARE_FUNCTION_1_AND_2P_MACRO_NO_NAMESPACE';
+#ifdef CINT_CONVERSION_WORKAROUND
+
+#define DECLARE_FUNCTION_1P(NAME) \
+extern const unsigned function_index_##NAME; \
+inline function NAME(const ex & p1) { \
+ return function(function_index_##NAME, p1); \
+} \
+inline function NAME(const basic & p1) { \
+ return function(function_index_##NAME, ex(p1)); \
+}
+#define DECLARE_FUNCTION_2P(NAME) \
+extern const unsigned function_index_##NAME; \
+inline function NAME(const ex & p1, const ex & p2) { \
+ return function(function_index_##NAME, p1, p2); \
+} \
+inline function NAME(const basic & p1, const ex & p2) { \
+ return function(function_index_##NAME, ex(p1), p2); \
+} \
+inline function NAME(const ex & p1, const basic & p2) { \
+ return function(function_index_##NAME, p1, ex(p2)); \
+} \
+inline function NAME(const basic & p1, const basic & p2) { \
+ return function(function_index_##NAME, ex(p1), ex(p2)); \
+}
+
+#else // def CINT_CONVERSION_WORKAROUND
+
+#define DECLARE_FUNCTION_1P(NAME) \
+extern const unsigned function_index_##NAME; \
+inline function NAME(const ex & p1) { \
+ return function(function_index_##NAME, p1); \
+}
+#define DECLARE_FUNCTION_2P(NAME) \
+extern const unsigned function_index_##NAME; \
+inline function NAME(const ex & p1, const ex & p2) { \
+ return function(function_index_##NAME, p1, p2); \
+}
+
+#endif // def CINT_CONVERSION_WORKAROUND
+
+END_OF_DECLARE_FUNCTION_1_AND_2P_MACRO_NO_NAMESPACE
+
+$declare_function_macro_no_namespace .= generate_from_to(
+ <<'END_OF_DECLARE_FUNCTION_MACRO_NO_NAMESPACE','const ex & p${N}','p${N}',3,$maxargs);
+#define DECLARE_FUNCTION_${N}P(NAME) \\
+extern const unsigned function_index_##NAME; \\
+inline function NAME(${SEQ1}) { \\
+ return function(function_index_##NAME, ${SEQ2}); \\
+}
+
+END_OF_DECLARE_FUNCTION_MACRO_NO_NAMESPACE