Ejemplo n.º 1
0
void Parameter::bind(VariableEnvironment &env, CVarRef val,
                     bool ref /* = false */) const {
  if (m_kind != KindOfNull) {
    DataType otype = val.getType();
    if (!(m_nullDefault && otype == KindOfNull ||
          otype == m_kind &&
          (m_kind != KindOfObject ||
           m_kind == KindOfObject &&
           val.toObject().instanceof(m_type.c_str())))) {
      throw_unexpected_argument_type(m_argNum, m_fnName, m_type.c_str(), val);
    }
  }
  if (ref) val.setContagious();
  env.getIdx(m_idx) = val;
}
Ejemplo n.º 2
0
void Parameter::bindDefault(VariableEnvironment &env) const {
  if (m_defVal) {
    Variant val = m_defVal->eval(env);
    env.getIdx(m_idx) = val;
  }
}