2
* =====================================================================================
4
* Filename: Constructor.cpp
9
* Created: 23.08.2009 21:03:42
13
* Author: Dominik 'domachine' Burgdoerfer (-), dominik.burgdoerfer@gmail.com
16
* =====================================================================================
19
# include "../dmcc/pcc/PccConstructor.hpp"
27
* =====================================
28
* dmcc::pcc::PccConstructor Implementation
29
* =====================================
38
PccConstructor::PccConstructor(const std::string & name,
39
vector<const Argument *> * arguments,
40
const std::string & str)
42
: _name(name), _string(str), _arguments(arguments) {
51
PccConstructor::~PccConstructor() {
53
for(i = 0; i < _arguments->size(); i++) {
54
delete _arguments->at(i);
65
boost::any PccConstructor::newInstance(const std::vector<boost::any> & params) {
66
typedef boost::any (*Constr)(const std::vector<boost::any> &);
71
pConstr = (Constr)mDeclaringClass->context()->symbol(mSymbolName);
74
throw LoadException(mDeclaringClass->context()->lastError());
76
pObject = (*pConstr)(params);
82
void PccConstructor::setSymbolName(const std::string & symbolName) {
83
this->mSymbolName = symbolName;
86
string PccConstructor::name() const {
90
string PccConstructor::string() const {
94
vector<const Argument *> * PccConstructor::arguments() const {
98
dmcc::Class * PccConstructor::declaringClass() const {
99
return mDeclaringClass;
102
void PccConstructor::setDeclaringClass(Class * clazz) {
103
mDeclaringClass = clazz;