const std::string& RA_RichPresenceInterpretter::Lookup( const std::string& sName, const std::string& sMemString ) const { static std::string sReturnVal; sReturnVal.clear(); // check lookups for( size_t i = 0; i < m_lookups.size(); ++i ) { if( m_lookups.at( i ).Description().compare( sName ) == 0 ) { // This lookup! (ugh must be non-const) char buffer[1024]; sprintf_s( buffer, 1024, (char*)sMemString.c_str() ); ValueSet nValue; nValue.ParseMemString( buffer ); sReturnVal = m_lookups.at( i ).Lookup( static_cast<DataPos>( nValue.GetValue() ) ); return sReturnVal; } } // check formatters for( size_t i = 0; i < m_formats.size(); ++i ) { if( m_formats.at( i ).Description().compare( sName ) == 0 ) { // This lookup! (ugh must be non-const) char buffer[1024]; sprintf_s( buffer, 1024, (char*)sMemString.c_str() ); ValueSet nValue; nValue.ParseMemString( buffer ); sReturnVal = m_formats.at( i ).Lookup( static_cast<DataPos>( nValue.GetValue() ) ); return sReturnVal; } } return sReturnVal; }
bool StorageElementArray0::WriteYourselfIntoCreateArrayDefinition(ValueSet &values, RMSTR_CREATE_ARRAY_DEFINITION *pDef, U32 , ManagedObject * ){ ValueSet *pSelf, *pMembers, *pSpares; U32 memberIndex, i; DesignatorId id; pSelf = (ValueSet *)values.GetValue(SSAPI_STORAGE_MANAGER_ADD_ARRAY_ARRAY_OBJECT); pMembers = (ValueSet *)values.GetValue(SSAPI_STORAGE_MANAGER_ADD_ARRAY_MEMBER_ID_VECTOR); pSpares = (ValueSet *)values.GetValue(SSAPI_STORAGE_MANAGER_ADD_ARRAY_SPARE_ID_VECTOR); *((ValueSet *)this) = *pSelf; BuildYourselfFromYourValueSet(); memset( pDef, 0, sizeof(RMSTR_CREATE_ARRAY_DEFINITION) ); pDef->raidLevel = RAID0; pDef->totalCapacity = ( m_memberCapacity * pMembers->GetCount() ) / BLOCK_SIZE; pDef->memberCapacity= m_memberCapacity / BLOCK_SIZE; pDef->peckingOrder = (RAID_PECKING_ORDER)m_peckingOrder; pDef->numberMembers = pMembers->GetCount(); pDef->numberSpares = pSpares? pSpares->GetCount() : 0; pDef->dataBlockSize = m_dataBlockSize / BLOCK_SIZE; for( i = memberIndex = 0; i < pMembers->GetCount(); i++, memberIndex++ ){ pMembers->GetGenericValue( (char *)&id, sizeof(id), i ); pDef->arrayMembers[memberIndex] = id.GetRowId().GetRowID(); } for( i = 0; pSpares && (i < pSpares->GetCount()); i++, memberIndex++ ){ pSpares->GetGenericValue( (char *)&id, sizeof(id), i ); pDef->arrayMembers[memberIndex] = id.GetRowId().GetRowID(); } return true; }
bool IntVectorFilter::BuildYourselfFromAValueSet( ValueSet &valueSet ) { int comparatorType, index; ValueSet *pValueVector; bool rc; I64 *pValue, value; rc = Filter::BuildYourselfFromAValueSet( valueSet ); ClearValueVector(); delete m_pComparator; valueSet.GetInt( SSAPI_INT_FLOAT_VECTOR_FILTER_FID_FIELD_ID, &m_fieldId ); valueSet.GetInt( SSAPI_INT_FLOAT_VECTOR_FILTER_FID_COMPARATOR_TYPE, &comparatorType ); m_pComparator = new Comparator( (Comparator::COMPARATOR_TYPE)comparatorType ); pValueVector = (ValueSet *)valueSet.GetValue( SSAPI_INT_FLOAT_VECTOR_FILTER_FID_VALUE_VECTOR ); if( !pValueVector ) return false; for( index = 0; index < pValueVector->GetCount(); index++ ) { if( !pValueVector->GetInt64( index, &value ) ) { int i; if( !pValueVector->GetInt( index, (int *)&i) ) return false; else value = i; } pValue = new I64; *pValue = value; m_pValueVector->AddAt( (CONTAINER_ELEMENT)pValue, index ); } return rc; }
Filter::FILTER_RC IntVectorFilter::DoesApply( ValueSet &valueSet ) { U32 index; I64 *pValue; ValueSet *pVector; if( !m_pValueVector ) return NO_MORE_ITEMS_WILL_APPLY; pVector = (ValueSet *)valueSet.GetValue( m_fieldId ); if( !pVector->GetCount() && !m_pValueVector->Count() ) return APPLIES; for( index = 0; index < m_pValueVector->Count(); index++ ) { if( !m_pValueVector->GetAt( (CONTAINER_ELEMENT &)pValue, index ) ) return DOES_NOT_APPLY; if( m_pComparator->DoesApply( &valueSet, m_fieldId, *pValue ) ) return APPLIES; } return DOES_NOT_APPLY; }