blob: f3fbd5bd2c89a08d0bd2687995de79dd9a634dec [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2016 CEA LIST.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Created on: 24 mars 2016
*
* Contributors:
* Arnault Lapitre (CEA LIST) arnault.lapitre@cea.fr
* - Initial API and implementation
******************************************************************************/
#include "WPropertyImpl.h"
#include <fml/expression/AvmCode.h>
#include <fml/expression/BuiltinArray.h>
#include <fml/operator/Operator.h>
#include <fml/workflow/WObject.h>
namespace sep
{
/**
* GETTER - SETTER
* for AvmCode attribue
*/
const BFCode & WPropertyImpl::getAvmCodeValue() const
{
return( getValue().bfCode() );
}
bool WPropertyImpl::hasAvmCodeValue() const
{
return( getValue().is< AvmCode >() );
}
/**
* GETTER
* for BuiltinArray attribute
*/
BuiltinArray * WPropertyImpl::getBuiltinArrayValue() const
{
return( getValue().as_ptr< BuiltinArray >() );
}
bool WPropertyImpl::hasBuiltinArrayValue() const
{
return( getValue().is< BuiltinArray >() );
}
BF WPropertyImpl::getArrayValue() const
{
if( getValue().is< ArrayBF >() )
{
return( getValue() );
}
else if( getValue().is< BuiltinArray >() )
{
return( BF( getValue().to_ptr< BuiltinArray >()->getArrayBF() ) );
}
return( BF::REF_NULL );
}
bool WPropertyImpl::hasArrayValue() const
{
return( getValue().is< ArrayBF >() );
}
std::string WPropertyImpl::toStringValue(BuiltinArray * anArray, avm_size_t offset) const
{
if( anArray->is< ArrayString >() )
{
return( anArray->to< ArrayString >()->get(offset) );
//!! No because of default quote char like: "string"
// return( anArray->to< ArrayString >()->str(offset) );
}
else if( anArray->is< ArrayBF >() )
{
return( toStringValue( anArray->to< ArrayBF >()->at(offset) ) );
}
else if( getValue().is< BuiltinArray >() )
{
return( anArray->to< BuiltinArray >()->str(offset) );
}
else
{
return( toStringValue() );
}
}
} /* namespace sep */