7 #ifndef __dg_command_bind_h__
8 #define __dg_command_bind_h__
23 #include "dynamic-graph/command.h"
24 #include <boost/assign/list_of.hpp>
25 #include <boost/bind.hpp>
26 #include <boost/function.hpp>
33 CommandVoid0(E &entity, boost::function<
void(
void)>
function,
34 const std::string &docString)
35 :
Command(entity, EMPTY_ARG, docString), fptr(
function) {}
45 boost::function<void(
void)> fptr;
49 CommandVoid0<E> *makeCommandVoid0(E &entity,
50 boost::function<
void(
void)>
function,
51 const std::string &docString) {
52 return new CommandVoid0<E>(entity,
function, docString);
56 CommandVoid0<E> *makeCommandVoid0(E &entity,
57 boost::function<
void(E *)>
function,
58 const std::string &docString) {
59 return new CommandVoid0<E>(entity, boost::bind(
function, &entity), docString);
63 CommandVoid0<E> *makeCommandVoid0(E &entity,
void (E::*
function)(
void),
64 const std::string &docString) {
65 return new CommandVoid0<E>(entity, boost::bind(
function, &entity), docString);
68 inline std::string docCommandVoid0(
const std::string &doc) {
69 return std::string(
"\n") + doc +
"\n\nNo input.\nVoid return.\n\n";
80 typedef boost::function<void(
const T &)> function_t;
82 CommandVoid1(E &entity, function_t
function,
const std::string &docString)
99 template <
class E,
typename T>
101 makeCommandVoid1(E &entity, boost::function<
void(
const T &)>
function,
103 const std::string &docString) {
104 return new CommandVoid1<E, T>(entity,
function, docString);
107 template <
class E,
typename T>
109 makeCommandVoid1(E &entity,
112 boost::function<
void(E *,
const T &)>
function,
113 const std::string &docString) {
114 return new CommandVoid1<E, T>(entity, boost::bind(
function, &entity, _1),
118 template <
class E,
typename T>
119 CommandVoid1<E, T> *makeCommandVoid1(E &entity,
void (E::*
function)(
const T &),
120 const std::string &docString) {
121 return new CommandVoid1<E, T>(entity, boost::bind(
function, &entity, _1),
126 inline std::string docCommandVoid1(
const std::string &doc,
127 const std::string &type) {
128 return std::string(
"\n") + doc +
"\n\nInput:\n - A " + type +
129 ".\nVoid return.\n\n";
139 template <
class E,
typename T1,
typename T2>
141 typedef boost::function<void(
const T1 &,
const T2 &)> function_t;
143 CommandVoid2(E &entity, function_t
function,
const std::string &docString)
163 template <
class E,
typename T1,
typename T2>
164 CommandVoid2<E, T1, T2> *
165 makeCommandVoid2(E &entity,
166 boost::function<
void(
const T1 &,
const T2 &)>
function,
167 const std::string &docString) {
168 return new CommandVoid2<E, T1, T2>(entity,
function, docString);
171 template <
class E,
typename T1,
typename T2>
172 CommandVoid2<E, T1, T2> *
173 makeCommandVoid2(E &entity,
176 boost::function<
void(E *,
const T1 &,
const T2 &)>
function,
177 const std::string &docString) {
178 return new CommandVoid2<E, T1, T2>(
179 entity, boost::bind(
function, &entity, _1, _2), docString);
182 template <
class E,
typename T1,
typename T2>
183 CommandVoid2<E, T1, T2> *
184 makeCommandVoid2(E &entity,
void (E::*
function)(
const T1 &,
const T2 &),
185 const std::string &docString) {
186 return new CommandVoid2<E, T1, T2>(
187 entity, boost::bind(
function, &entity, _1, _2), docString);
191 inline std::string docCommandVoid2(
const std::string &doc,
192 const std::string &type1,
193 const std::string &type2) {
194 return (std::string(
"\n") + doc +
"\n\n" +
"Input:\n - A " + type1 +
".\n" +
195 "Input:\n - A " + type2 +
".\n" +
"Void return.\n\n");
205 template <
class E,
typename T1,
typename T2,
typename T3>
207 typedef boost::function<void(
const T1 &,
const T2 &,
const T3 &)> function_t;
209 CommandVoid3(E &entity, function_t
function,
const std::string &docString)
222 fptr(val1, val2, val3);
230 template <
class E,
typename T1,
typename T2,
typename T3>
231 CommandVoid3<E, T1, T2, T3> *
232 makeCommandVoid3(E &entity,
233 typename CommandVoid3<E, T1, T2, T3>::function_t
function,
234 const std::string &docString) {
235 return new CommandVoid3<E, T1, T2, T3>(entity,
function, docString);
238 template <
class E,
typename T1,
typename T2,
typename T3>
239 CommandVoid3<E, T1, T2, T3> *makeCommandVoid3(
243 boost::function<
void(E *,
const T1 &,
const T2 &,
const T3 &)>
function,
244 const std::string &docString) {
245 return new CommandVoid3<E, T1, T2, T3>(
246 entity, boost::bind(
function, &entity, _1, _2, _3), docString);
249 template <
class E,
typename T1,
typename T2,
typename T3>
250 CommandVoid3<E, T1, T2, T3> *
251 makeCommandVoid3(E &entity,
252 void (E::*
function)(
const T1 &,
const T2 &,
const T3 &),
253 const std::string &docString) {
254 return new CommandVoid3<E, T1, T2, T3>(
255 entity, boost::bind(
function, &entity, _1, _2, _3), docString);
259 inline std::string docCommandVoid3(
const std::string &doc,
260 const std::string &type1,
261 const std::string &type2,
262 const std::string &type3) {
263 return (std::string(
"\n") + doc +
"\n\n" +
"Input:\n - A " + type1 +
".\n" +
264 "Input:\n - A " + type2 +
".\n" +
"Input:\n - A " + type3 +
".\n" +
275 template <
class E,
typename T1,
typename T2,
typename T3,
typename T4>
277 typedef boost::function<void(
const T1 &,
const T2 &,
const T3 &,
const T4 &)>
279 typedef void (E::*memberFunction_ptr_t)(
const T1 &,
const T2 &,
const T3 &,
282 CommandVoid4(E &entity, function_t
function,
const std::string &docString)
297 fptr(val1, val2, val3, val4);
305 template <
class E,
typename T1,
typename T2,
typename T3,
typename T4>
306 CommandVoid4<E, T1, T2, T3, T4> *
307 makeCommandVoid4(E &entity,
308 typename CommandVoid4<E, T1, T2, T3, T4>::function_t
function,
309 const std::string &docString) {
310 return new CommandVoid4<E, T1, T2, T3, T4>(entity,
function, docString);
313 template <
class E,
typename T1,
typename T2,
typename T3,
typename T4>
314 CommandVoid4<E, T1, T2, T3, T4> *makeCommandVoid4(
316 boost::function<
void(E *,
const T1 &,
const T2 &,
const T3 &,
const T4 &)>
318 const std::string &docString) {
319 return new CommandVoid4<E, T1, T2, T3, T4>(
320 entity, boost::bind(
function, &entity, _1, _2, _3, _4), docString);
323 template <
class E,
typename T1,
typename T2,
typename T3,
typename T4>
324 CommandVoid4<E, T1, T2, T3, T4> *makeCommandVoid4(
326 void (E::*
function)(
const T1 &,
const T2 &,
const T3 &,
const T4 &),
327 const std::string &docString) {
328 return new CommandVoid4<E, T1, T2, T3, T4>(
329 entity, boost::bind(
function, &entity, _1, _2, _3, _4), docString);
333 inline std::string docCommandVoid4(
const std::string &doc,
334 const std::string &type1,
335 const std::string &type2,
336 const std::string &type3,
337 const std::string &type4) {
338 return (std::string(
"\n") + doc +
"\n\n" +
"Input:\n - A " + type1 +
".\n" +
339 "Input:\n - A " + type2 +
".\n" +
"Input:\n - A " + type3 +
".\n" +
340 "Input:\n - A " + type4 +
".\n" +
"Void return.\n\n");
350 template <
class E,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
352 typedef boost::function<void(
const T1 &,
const T2 &,
const T3 &,
const T4 &,
const T5 &)>
354 typedef void (E::*memberFunction_ptr_t)(
const T1 &,
const T2 &,
const T3 &,
355 const T4 &,
const T5 &);
357 CommandVoid5(E &entity, function_t
function,
const std::string &docString)
373 fptr(val1, val2, val3, val4, val5);
381 template <
class E,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
382 CommandVoid5<E, T1, T2, T3, T4, T5> *
383 makeCommandVoid5(E &entity,
384 typename CommandVoid5<E, T1, T2, T3, T4, T5>::function_t
function,
385 const std::string &docString) {
386 return new CommandVoid5<E, T1, T2, T3, T4, T5>(entity,
function, docString);
389 template <
class E,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
390 CommandVoid5<E, T1, T2, T3, T4, T5> *makeCommandVoid5(
392 boost::function<
void(E *,
const T1 &,
const T2 &,
const T3 &,
const T4 &,
const T5 &)>
394 const std::string &docString) {
395 return new CommandVoid5<E, T1, T2, T3, T4, T5>(
396 entity, boost::bind(
function, &entity, _1, _2, _3, _4, _5), docString);
399 template <
class E,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
400 CommandVoid5<E, T1, T2, T3, T4, T5> *makeCommandVoid5(
402 void (E::*
function)(
const T1 &,
const T2 &,
const T3 &,
const T4 &,
const T5 &),
403 const std::string &docString) {
404 return new CommandVoid5<E, T1, T2, T3, T4, T5>(
405 entity, boost::bind(
function, &entity, _1, _2, _3, _4, _5), docString);
409 inline std::string docCommandVoid5(
const std::string &doc,
410 const std::string &type1,
411 const std::string &type2,
412 const std::string &type3,
413 const std::string &type4,
414 const std::string &type5) {
415 return (std::string(
"\n") + doc +
"\n\n" +
"Input:\n - A " + type1 +
".\n" +
416 "Input:\n - A " + type2 +
".\n" +
"Input:\n - A " + type3 +
".\n" +
417 "Input:\n - A " + type4 +
".\n" +
"Input:\n - A " + type5 +
".\n" +
428 template <
class E,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
430 typedef boost::function<void(
const T1 &,
const T2 &,
const T3 &,
const T4 &,
const T5 &,
const T6 &)>
432 typedef void (E::*memberFunction_ptr_t)(
const T1 &,
const T2 &,
const T3 &,
433 const T4 &,
const T5 &,
const T6 &);
435 CommandVoid6(E &entity, function_t
function,
const std::string &docString)
453 fptr(val1, val2, val3, val4, val5, val6);
461 template <
class E,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
462 CommandVoid6<E, T1, T2, T3, T4, T5, T6> *
463 makeCommandVoid6(E &entity,
464 typename CommandVoid6<E, T1, T2, T3, T4, T5, T6>::function_t
function,
465 const std::string &docString) {
466 return new CommandVoid6<E, T1, T2, T3, T4, T5, T6>(entity,
function, docString);
469 template <
class E,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
470 CommandVoid6<E, T1, T2, T3, T4, T5, T6> *makeCommandVoid6(
472 boost::function<
void(E *,
const T1 &,
const T2 &,
const T3 &,
const T4 &,
const T5 &,
const T6 &)>
474 const std::string &docString) {
475 return new CommandVoid6<E, T1, T2, T3, T4, T5, T6>(
476 entity, boost::bind(
function, &entity, _1, _2, _3, _4, _5, _6), docString);
479 template <
class E,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
480 CommandVoid6<E, T1, T2, T3, T4, T5, T6> *makeCommandVoid6(
482 void (E::*
function)(
const T1 &,
const T2 &,
const T3 &,
const T4 &,
const T5 &,
const T6 &),
483 const std::string &docString) {
484 return new CommandVoid6<E, T1, T2, T3, T4, T5, T6>(
485 entity, boost::bind(
function, &entity, _1, _2, _3, _4, _5, _6), docString);
489 inline std::string docCommandVoid6(
const std::string &doc,
490 const std::string &type1,
491 const std::string &type2,
492 const std::string &type3,
493 const std::string &type4,
494 const std::string &type5,
495 const std::string &type6) {
496 return (std::string(
"\n") + doc +
"\n\n" +
"Input:\n - A " + type1 +
".\n" +
497 "Input:\n - A " + type2 +
".\n" +
"Input:\n - A " + type3 +
".\n" +
498 "Input:\n - A " + type4 +
".\n" +
"Input:\n - A " + type5 +
".\n" +
499 "Input:\n - A " + type6 +
".\n" +
"Void return.\n\n");
509 template <
class E,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7>
511 typedef boost::function<void(
const T1 &,
const T2 &,
const T3 &,
const T4 &,
const T5 &,
const T6 &,
const T7 &)>
513 typedef void (E::*memberFunction_ptr_t)(
const T1 &,
const T2 &,
const T3 &,
514 const T4 &,
const T5 &,
const T6 &,
517 CommandVoid7(E &entity, function_t
function,
const std::string &docString)
536 fptr(val1, val2, val3, val4, val5, val6, val7);
544 template <
class E,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7>
545 CommandVoid7<E, T1, T2, T3, T4, T5, T6, T7> *
546 makeCommandVoid7(E &entity,
547 typename CommandVoid7<E, T1, T2, T3, T4, T5, T6, T7>::function_t
function,
548 const std::string &docString) {
549 return new CommandVoid7<E, T1, T2, T3, T4, T5, T6, T7>(entity,
function, docString);
552 template <
class E,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7>
553 CommandVoid7<E, T1, T2, T3, T4, T5, T6, T7> *makeCommandVoid7(
555 boost::function<
void(E *,
const T1 &,
const T2 &,
const T3 &,
const T4 &,
const T5 &,
const T6 &,
const T7 &)>
557 const std::string &docString) {
558 return new CommandVoid7<E, T1, T2, T3, T4, T5, T6, T7>(
559 entity, boost::bind(
function, &entity, _1, _2, _3, _4, _5, _6, _7), docString);
562 template <
class E,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7>
563 CommandVoid7<E, T1, T2, T3, T4, T5, T6, T7> *makeCommandVoid7(
565 void (E::*
function)(
const T1 &,
const T2 &,
const T3 &,
const T4 &,
const T5 &,
const T6 &,
const T7 &),
566 const std::string &docString) {
567 return new CommandVoid7<E, T1, T2, T3, T4, T5, T6, T7>(
568 entity, boost::bind(
function, &entity, _1, _2, _3, _4, _5, _6, _7), docString);
572 inline std::string docCommandVoid7(
const std::string &doc,
573 const std::string &type1,
574 const std::string &type2,
575 const std::string &type3,
576 const std::string &type4,
577 const std::string &type5,
578 const std::string &type6,
579 const std::string &type7) {
580 return (std::string(
"\n") + doc +
"\n\n" +
"Input:\n - A " + type1 +
".\n" +
581 "Input:\n - A " + type2 +
".\n" +
"Input:\n - A " + type3 +
".\n" +
582 "Input:\n - A " + type4 +
".\n" +
"Input:\n - A " + type5 +
".\n" +
583 "Input:\n - A " + type6 +
".\n" +
"Input:\n - A " + type7 +
".\n" +
594 template <
class E,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
596 typedef boost::function<void(
const T1 &,
const T2 &,
const T3 &,
const T4 &,
const T5 &,
const T6 &,
const T7 &,
const T8 &)>
598 typedef void (E::*memberFunction_ptr_t)(
const T1 &,
const T2 &,
const T3 &,
599 const T4 &,
const T5 &,
const T6 &,
600 const T7 &,
const T8 &);
602 CommandVoid8(E &entity, function_t
function,
const std::string &docString)
623 fptr(val1, val2, val3, val4, val5, val6, val7, val8);
631 template <
class E,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
632 CommandVoid8<E, T1, T2, T3, T4, T5, T6, T7, T8> *
633 makeCommandVoid8(E &entity,
634 typename CommandVoid8<E, T1, T2, T3, T4, T5, T6, T7, T8>::function_t
function,
635 const std::string &docString) {
636 return new CommandVoid8<E, T1, T2, T3, T4, T5, T6, T7, T8>(entity,
function, docString);
639 template <
class E,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
640 CommandVoid8<E, T1, T2, T3, T4, T5, T6, T7, T8> *makeCommandVoid8(
642 boost::function<
void(E *,
const T1 &,
const T2 &,
const T3 &,
const T4 &,
const T5 &,
const T6 &,
const T7 &,
const T8 &)>
644 const std::string &docString) {
645 return new CommandVoid8<E, T1, T2, T3, T4, T5, T6, T7, T8>(
646 entity, boost::bind(
function, &entity, _1, _2, _3, _4, _5, _6, _7, _8), docString);
649 template <
class E,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
650 CommandVoid8<E, T1, T2, T3, T4, T5, T6, T7, T8> *makeCommandVoid8(
652 void (E::*
function)(
const T1 &,
const T2 &,
const T3 &,
const T4 &,
const T5 &,
const T6 &,
const T7 &,
const T8 &),
653 const std::string &docString) {
654 return new CommandVoid8<E, T1, T2, T3, T4, T5, T6, T7, T8>(
655 entity, boost::bind(
function, &entity, _1, _2, _3, _4, _5, _6, _7, _8), docString);
659 inline std::string docCommandVoid8(
const std::string &doc,
660 const std::string &type1,
661 const std::string &type2,
662 const std::string &type3,
663 const std::string &type4,
664 const std::string &type5,
665 const std::string &type6,
666 const std::string &type7,
667 const std::string &type8) {
668 return (std::string(
"\n") + doc +
"\n\n" +
"Input:\n - A " + type1 +
".\n" +
669 "Input:\n - A " + type2 +
".\n" +
"Input:\n - A " + type3 +
".\n" +
670 "Input:\n - A " + type4 +
".\n" +
"Input:\n - A " + type5 +
".\n" +
671 "Input:\n - A " + type6 +
".\n" +
"Input:\n - A " + type7 +
".\n" +
672 "Input:\n - A " + type8 +
".\n" +
"Void return.\n\n");
685 typedef boost::function<void(std::ostream &)> function_t;
687 CommandVerbose(E &entity, function_t
function,
const std::string &docString)
688 :
Command(entity, EMPTY_ARG, docString), fptr(
function) {}
693 std::ostringstream oss;
695 return Value(oss.str());
704 makeCommandVerbose(E &entity,
typename CommandVerbose<E>::function_t
function,
705 const std::string &docString) {
706 return new CommandVerbose<E>(entity,
function, docString);
711 CommandVerbose<E> *makeCommandVerbose(E &entity,
712 void (E::*
function)(std::ostream &),
713 const std::string &docString) {
714 return new CommandVerbose<E>(entity, boost::bind(
function, &entity, _1),
719 inline std::string docCommandVerbose(
const std::string &doc) {
720 return std::string(
"\n") + doc +
"\n\nNo input.\n Return a string.\n\n";
726 template <
class E,
class ReturnType>
729 const std::string &docString)
730 :
Command(entity, EMPTY_ARG, docString), fptr(
function) {}
740 boost::function<ReturnType(
void)> fptr;
743 template <
class E,
class ReturnType>
744 CommandReturnType0<E, ReturnType> *
745 makeCommandReturnType0(E &entity, boost::function<ReturnType(
void)>
function,
746 const std::string &docString) {
747 return new CommandReturnType0<E, ReturnType>(entity,
function, docString);
750 template <
class E,
class ReturnType>
751 CommandReturnType0<E, ReturnType> *
752 makeCommandReturnType0(E &entity, boost::function<ReturnType(E *)>
function,
753 const std::string &docString) {
754 return new CommandReturnType0<E, ReturnType>(
755 entity, boost::bind(
function, &entity), docString);
758 template <
class E,
class ReturnType>
759 CommandReturnType0<E, ReturnType> *
760 makeCommandReturnType0(E &entity, ReturnType (E::*
function)(
void),
761 const std::string &docString) {
762 return new CommandReturnType0<E, ReturnType>(
763 entity, boost::bind(
function, &entity), docString);
766 template <
typename ReturnType>
768 docCommandReturnType0(
const std::string &doc,
769 const std::string & ) {
770 return std::string(
"\n") + doc +
"\n\nNo input.\n" +
771 typeid(ReturnType).name() +
" return.\n\n";
781 template <
class E,
typename ReturnType,
typename T>
783 typedef boost::function<ReturnType(
const T &)> function_t;
786 const std::string &docString)
795 Value res(fptr(val));
803 template <
class E,
typename ReturnType,
typename T>
804 CommandReturnType1<E, ReturnType, T> *
805 makeCommandReturnType1(E &entity,
806 boost::function<ReturnType(
const T &)>
function,
807 const std::string &docString) {
808 return new CommandReturnType1<E, ReturnType, T>(entity,
function, docString);
811 template <
class E,
typename ReturnType,
typename T>
812 CommandReturnType1<E, ReturnType, T> *
813 makeCommandReturnType1(E &entity,
816 boost::function<ReturnType(E *,
const T &)>
function,
817 const std::string &docString) {
818 return new CommandReturnType1<E, ReturnType, T>(
819 entity, boost::bind(
function, &entity, _1), docString);
822 template <
class E,
typename ReturnType,
typename T>
823 CommandReturnType1<E, ReturnType, T> *
824 makeCommandReturnType1(E &entity, ReturnType (E::*
function)(
const T &),
825 const std::string &docString) {
826 return new CommandReturnType1<E, ReturnType, T>(
827 entity, boost::bind(
function, &entity, _1), docString);
831 template <
typename ReturnType>
832 inline std::string docCommandReturnType1(
const std::string &doc,
833 const std::string &type) {
834 return std::string(
"\n") + doc +
"\n\nInput:\n - A " + type +
".\n" +
835 typeid(ReturnType).name() +
"return.\n\n";
845 template <
class E,
typename ReturnType,
typename T1,
typename T2>
847 typedef boost::function<ReturnType(
const T1 &,
const T2 &)> function_t;
850 const std::string &docString)
862 Value res(fptr(val1, val2));
870 template <
class E,
typename ReturnType,
typename T1,
typename T2>
871 CommandReturnType2<E, ReturnType, T1, T2> *makeCommandReturnType2(
872 E &entity, boost::function<ReturnType(
const T1 &,
const T2 &)>
function,
873 const std::string &docString) {
874 return new CommandReturnType2<E, ReturnType, T1, T2>(entity,
function,
878 template <
class E,
typename ReturnType,
typename T1,
typename T2>
879 CommandReturnType2<E, ReturnType, T1, T2> *makeCommandReturnType2(
883 boost::function<ReturnType(E *,
const T1 &,
const T2 &)>
function,
884 const std::string &docString) {
885 return new CommandReturnType2<E, ReturnType, T1, T2>(
886 entity, boost::bind(
function, &entity, _1, _2), docString);
889 template <
class E,
typename ReturnType,
typename T1,
typename T2>
890 CommandReturnType2<E, ReturnType, T1, T2> *
891 makeCommandReturnType2(E &entity,
892 ReturnType (E::*
function)(
const T1 &,
const T2 &),
893 const std::string &docString) {
894 return new CommandReturnType2<E, ReturnType, T1, T2>(
895 entity, boost::bind(
function, &entity, _1, _2), docString);
899 template <
typename ReturnType>
900 inline std::string docCommandReturnType2(
const std::string &doc,
901 const std::string &type1,
902 const std::string &type2) {
903 return (std::string(
"\n") + doc +
"\n\n" +
"Input:\n - A " + type1 +
".\n" +
904 "Input:\n - A " + type2 +
".\n" +
905 "ReturnType:\n - Returns:" +
typeid(ReturnType).name() + +
".\n\n");
911 #endif // __dg_command_bind_h__