Exemplo n.º 1
0
void ValueArray::pushBack(CountPtr<Value>& val)
{
	
	if(val->isLValue())
		m_val.push_back(CountPtr<Value>(new ValueReference(val->getReferredValue())));
	else
		m_val.push_back(CountPtr<Value>(new ValueReference(val)));
}
Exemplo n.º 2
0
CountPtr<Value> ValueReference::assign(CountPtr<Value> val)
{
	ACCESS_MUTEX_LOCKER;

	// Pointers support; array and struct items can have two references inside
	ValueReference* assign_to = m_val->toValueReference();
	if(assign_to == NULL)
		assign_to = this;

	if(val->isLValue())
		return assign_to->m_val = val->getReferredValue();
	else
		return assign_to->m_val = val;
}
Exemplo n.º 3
0
CountPtr<Value> ValueArray::setItem(uint pos, CountPtr<Value> val)
{
	

	if(pos >= m_val.size())
	{
		stringstream ss;
		//ss << _("Index out of bounds (size: ") << m_val.size()
		//	<< _(", index: ") << pos << _("), resizing array");
		//WARN_P(ss.str());

		resize(pos+1);
	}

	if(val->isLValue())
		m_val[pos]->toValueReference()->assign(val->getReferredValue());
	else
		m_val[pos]->toValueReference()->assign(val);

	return val;
}
Exemplo n.º 4
0
ValueReference::ValueReference(CountPtr<Value> val)
	: Value(),
	m_val(val)
{
	assert(!val->isLValue());
}