Skip to content

Commit 897c20d

Browse files
authored
Add missing OSLQuery::Parameter correct assignment operator (#827)
1 parent 416d443 commit 897c20d

2 files changed

Lines changed: 58 additions & 0 deletions

File tree

src/include/OSL/oslquery.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ class OSLQUERYPUBLIC OSLQuery {
7979
Parameter () {}
8080
Parameter (const Parameter& src);
8181
Parameter (Parameter&& src);
82+
const Parameter& operator= (const Parameter &);
83+
const Parameter& operator= (Parameter &&);
8284
};
8385

8486
OSLQuery ();

src/liboslquery/oslquery.cpp

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,62 @@ OSLQuery::Parameter::Parameter (Parameter&& src)
305305

306306

307307

308+
const OSLQuery::Parameter&
309+
OSLQuery::Parameter::operator= (const Parameter& src)
310+
{
311+
name = src.name;
312+
type = src.type;
313+
isoutput = src.isoutput;
314+
validdefault = src.validdefault;
315+
varlenarray = src.varlenarray;
316+
isstruct = src.isstruct;
317+
isclosure = src.isclosure;
318+
idefault = src.idefault;
319+
fdefault = src.fdefault;
320+
sdefault = src.sdefault;
321+
spacename = src.spacename;
322+
fields = src.fields;
323+
structname = src.structname;
324+
metadata = src.metadata;
325+
if (type.basetype == TypeDesc::INT)
326+
data = idefault.data();
327+
else if (type.basetype == TypeDesc::FLOAT)
328+
data = fdefault.data();
329+
else if (type.basetype == TypeDesc::STRING)
330+
data = sdefault.data();
331+
return *this;
332+
}
333+
334+
335+
336+
const OSLQuery::Parameter&
337+
OSLQuery::Parameter::operator= (Parameter&& src)
338+
{
339+
name = src.name;
340+
type = src.type;
341+
isoutput = src.isoutput;
342+
validdefault = src.validdefault;
343+
varlenarray = src.varlenarray;
344+
isstruct = src.isstruct;
345+
isclosure = src.isclosure;
346+
idefault = std::move(src.idefault);
347+
fdefault = std::move(src.fdefault);
348+
sdefault = std::move(src.sdefault);
349+
spacename = src.spacename;
350+
fields = src.fields;
351+
structname = src.structname;
352+
metadata = std::move(src.metadata);
353+
if (type.basetype == TypeDesc::INT)
354+
data = idefault.data();
355+
else if (type.basetype == TypeDesc::FLOAT)
356+
data = fdefault.data();
357+
else if (type.basetype == TypeDesc::STRING)
358+
data = sdefault.data();
359+
return *this;
360+
}
361+
362+
363+
308364
OSLQuery::OSLQuery ()
309365
{
310366
}

0 commit comments

Comments
 (0)