Skip to content

Commit adb8516

Browse files
FIX : ShaderNetworkAlgo : Prefer struct to tuple
1 parent cf46b25 commit adb8516

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

src/IECoreScene/ShaderNetworkAlgo.cpp

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1003,8 +1003,16 @@ const InternedString g_arrayOutputNames[maxArrayInputAdapterSize + 1] = {
10031003
const boost::regex g_rampElementRegex( "^(.*)\\[(.*)\\]\\.y(.*)$" );
10041004
const boost::regex g_splineAdapterInRegex( "^in([0-9]+)(\\..*)?$" );
10051005

1006+
struct RampInputAdapterParameters
1007+
{
1008+
InternedString adapterHandle;
1009+
size_t origSize;
1010+
size_t expandedSize;
1011+
int knotOffset;
1012+
};
1013+
10061014
template< typename TypedRamp >
1007-
std::tuple< InternedString, size_t, size_t, size_t > createRampInputAdapter(
1015+
RampInputAdapterParameters createRampInputAdapter(
10081016
ShaderNetwork *network, const TypedData<TypedRamp> *rampData,
10091017
const IECore::CompoundDataMap &newParameters, const IECore::InternedString &rampParameterName,
10101018
const ShaderNetwork::Parameter &destination
@@ -1052,7 +1060,7 @@ std::tuple< InternedString, size_t, size_t, size_t > createRampInputAdapter(
10521060
{ destination.shader, splineValuesName }
10531061
) );
10541062

1055-
return std::make_tuple( adapterHandle, rampData->readable().points.size(), splineValues.size(), rampData->readable().oslStartPointMultiplicity() );
1063+
return { adapterHandle, rampData->readable().points.size(), splineValues.size(), rampData->readable().oslStartPointMultiplicity() };
10561064
}
10571065

10581066
} // namespace
@@ -1238,7 +1246,7 @@ void ShaderNetworkAlgo::expandRamps( ShaderNetwork *network, std::string targetP
12381246
// parameter for the shader, and holds the name of the adapter shader, and the offset we
12391247
// need to use when accessing the knot vector.
12401248

1241-
std::map< IECore::InternedString, std::tuple< IECore::InternedString, size_t, size_t, size_t > > currentRampArrayAdapters;
1249+
std::map< IECore::InternedString, RampInputAdapterParameters > currentRampArrayAdapters;
12421250

12431251
std::vector< ShaderNetwork::Connection > connectionsToAdd;
12441252
ShaderNetwork::ConnectionRange inputConnections = network->inputConnections( s.first );
@@ -1271,7 +1279,7 @@ void ShaderNetworkAlgo::expandRamps( ShaderNetwork *network, std::string targetP
12711279
}
12721280

12731281
// Insert a conversion shader to handle connection to component
1274-
auto [ adapterIter, newlyInserted ] = currentRampArrayAdapters.insert( { parameterName, std::make_tuple( IECore::InternedString(), 0, 0, 0 ) } );
1282+
auto [ adapterIter, newlyInserted ] = currentRampArrayAdapters.insert( { parameterName, RampInputAdapterParameters() } );
12751283
if( newlyInserted )
12761284
{
12771285
if( colorRampData )
@@ -1288,7 +1296,7 @@ void ShaderNetworkAlgo::expandRamps( ShaderNetwork *network, std::string targetP
12881296
}
12891297
}
12901298

1291-
const auto [ adapterHandle, origSize, expandedSize, knotOffset ] = adapterIter->second;
1299+
const RampInputAdapterParameters &adapterParms = adapterIter->second;
12921300

12931301
int elementId;
12941302
std::string_view elementIdString( stringViewFromMatch( destName, rampElementMatch, 2 ) );
@@ -1301,9 +1309,9 @@ void ShaderNetworkAlgo::expandRamps( ShaderNetwork *network, std::string targetP
13011309
throw IECore::Exception( StringAlgo::concat( "Invalid ramp point index ", elementIdString ) );
13021310
}
13031311

1304-
if( elementId < 0 || elementId >= (int)origSize )
1312+
if( elementId < 0 || elementId >= (int)adapterParms.origSize )
13051313
{
1306-
throw IECore::Exception( "Connection to ramp index " + std::to_string( elementId ) + " is out of range in ramp with " + std::to_string( origSize ) + " points." );
1314+
throw IECore::Exception( "Connection to ramp index " + std::to_string( elementId ) + " is out of range in ramp with " + std::to_string( adapterParms.origSize ) + " points." );
13071315
}
13081316

13091317
// Map connections to the corresponding parameters of the expanded ramp. When mapping the
@@ -1321,16 +1329,16 @@ void ShaderNetworkAlgo::expandRamps( ShaderNetwork *network, std::string targetP
13211329
if( elementId == 0 )
13221330
{
13231331
outIndexMin = 0;
1324-
outIndexMax = knotOffset;
1332+
outIndexMax = adapterParms.knotOffset;
13251333
}
1326-
else if( elementId == (int)( origSize - 1 ) )
1334+
else if( elementId == (int)( adapterParms.origSize - 1 ) )
13271335
{
1328-
outIndexMin = elementId + knotOffset;
1329-
outIndexMax = expandedSize - 1;
1336+
outIndexMin = elementId + adapterParms.knotOffset;
1337+
outIndexMax = adapterParms.expandedSize - 1;
13301338
}
13311339
else
13321340
{
1333-
outIndexMin = outIndexMax = elementId + knotOffset;
1341+
outIndexMin = outIndexMax = elementId + adapterParms.knotOffset;
13341342
}
13351343

13361344
for( int i = outIndexMin; i <= outIndexMax; i++ )
@@ -1341,7 +1349,7 @@ void ShaderNetworkAlgo::expandRamps( ShaderNetwork *network, std::string targetP
13411349
destinationName = StringAlgo::concat( destinationName.string(), stringViewFromMatch( destName, rampElementMatch, 3 ) );
13421350
}
13431351

1344-
network->addConnection( { connection.source, { adapterHandle, destinationName } } );
1352+
network->addConnection( { connection.source, { adapterParms.adapterHandle, destinationName } } );
13451353
}
13461354
}
13471355

0 commit comments

Comments
 (0)