File: Command.tcc

package info (click to toggle)
thepeg 1.8.0-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd, wheezy
  • size: 9,312 kB
  • ctags: 11,509
  • sloc: cpp: 57,129; sh: 11,315; java: 3,212; lisp: 1,402; makefile: 830; ansic: 58; perl: 3
file content (32 lines) | stat: -rw-r--r-- 845 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// -*- C++ -*-
//
// Command.tcc is a part of ThePEG - Toolkit for HEP Event Generation
// Copyright (C) 1999-2011 Leif Lonnblad
//
// ThePEG is licenced under version 2 of the GPL, see COPYING for details.
// Please respect the MCnet academic guidelines, see GUIDELINES for details.
//
//
// This is the implementation of the non-inlined templated member
// functions of the Command class.
//

namespace ThePEG {

template <class T>
string Command<T>::cmd(InterfacedBase & i, string arg) const
  {
  T * t = dynamic_cast<T *>(&i);
  if ( !t ) throw InterExClass(*this, i);
  if ( theExeFn ) {
    try {
      string r = (t->*theExeFn)(arg);
      if ( r != "" ) i.touch();
      return r;
    }
    catch (InterfaceException & e) { throw e; }
    catch ( ... ) { throw CmdExUnknown(*this, i, arg); }
  } else throw InterExSetup(*this, i);
}

}