void Function::set_construct_destruct(int ftype, bool no_implicit_type_conversion) { m_ftype = ftype; Class *pc = class_context(); //if (!is_plain() && pc) fail("must be within class definition"); if (is_destructor()) { if(signature()->size() > 0) fail("destructor cannot be passed parameters"); pc->destructor(this); } else if (is_constructor()) pc->add_constructor(this,no_implicit_type_conversion); }
Function::Function(Signature *sig, FunctionEntry *pfe) : m_sig(sig),m_context(NULL),m_slot_id(0),m_fun_entry(pfe), m_default_args(NULL),m_stdarg(false),m_builtin(false), m_line_nos(NULL),m_templ_info(NULL),m_import_scheme(NULL) { m_fun_block = FBlock::create(pfe->reference(),class_context()); m_fun_block->function = this; m_line = Input::lineno(); Module* pm = Module::current(); m_mod = pm ? pm->id() : -1; }
bool Function::is_static() { return class_context() != NULL && !is_method(); }