@@ -179,7 +179,8 @@ import mir.algorithm.iteration: uniq;
179
179
import mir.array.allocation;
180
180
import mir.math.common;
181
181
import mir.ndslice.sorting: sort;
182
- import std.traits : Unqual, getUDAs, hasUDA, isPointer, PointerTarget;
182
+ import std.traits : Unqual, isPointer, PointerTarget;
183
+ import mir.internal.meta: getUDAs, hasUDA;
183
184
184
185
@fmamath:
185
186
@@ -405,9 +406,9 @@ template Dependencies(T)
405
406
string [] variables;
406
407
static foreach (member; __traits (allMembers , T))
407
408
{
408
- static if (hasUDA! (__traits(getMember, T, member) , Derivative))
409
+ static if (hasUDA! (T, member, Derivative))
409
410
{
410
- variables ~= getUDAs! (__traits(getMember, T, member) , Derivative)[0 ].variables;
411
+ variables ~= getUDAs! (T, member, Derivative)[0 ].variables;
411
412
}
412
413
}
413
414
return variables.sort.uniq.array.DependsOn;
@@ -478,8 +479,8 @@ template getDerivative(string[] variables, bool strict = true)
478
479
alias V = T;
479
480
template hasDerivative (string member)
480
481
{
481
- static if (hasUDA! (__traits(getMember, V, member) , Derivative))
482
- enum hasDerivative = variables == getUDAs! (__traits(getMember, V, member) , Derivative)[0 ].variables;
482
+ static if (hasUDA! (V, member, Derivative))
483
+ enum hasDerivative = variables == getUDAs! (V, member, Derivative)[0 ].variables;
483
484
else
484
485
enum hasDerivative = false ;
485
486
}
@@ -489,7 +490,7 @@ template getDerivative(string[] variables, bool strict = true)
489
490
{
490
491
static if (hasDerivative! member)
491
492
{
492
- static if (hasUDA! (__traits(getMember, V, member) , Minus))
493
+ static if (hasUDA! (V, member, Minus))
493
494
return - __traits(getMember, value, member);
494
495
else
495
496
return __traits (getMember, value, member);
@@ -530,16 +531,16 @@ void setDerivatives(bool strict = true, D, E)(scope ref D derivatives, E express
530
531
return derivatives.setDerivatives! strict(expression);
531
532
else
532
533
{
533
- import std.traits : getUDAs, hasUDA, isPointer, PointerTarget;
534
+ import std.traits : isPointer, PointerTarget;
534
535
535
536
static foreach (member; __traits (allMembers , D))
536
537
{
537
- static if (hasUDA! (__traits(getMember, D, member) , Derivative))
538
+ static if (hasUDA! (D, member, Derivative))
538
539
{
539
- static if (hasUDA! (__traits(getMember, derivatives, member) , Minus))
540
- __traits (getMember , derivatives, member) = - expression.getDerivative! (getUDAs! (__traits(getMember, derivatives, member) , Derivative)[0 ].variables, strict);
540
+ static if (hasUDA! (D, member, Minus))
541
+ __traits (getMember , derivatives, member) = - expression.getDerivative! (getUDAs! (D, member, Derivative)[0 ].variables, strict);
541
542
else
542
- __traits (getMember , derivatives, member) = expression.getDerivative! (getUDAs! (__traits(getMember, derivatives, member) , Derivative)[0 ].variables, strict);
543
+ __traits (getMember , derivatives, member) = expression.getDerivative! (getUDAs! (D, member, Derivative)[0 ].variables, strict);
543
544
}
544
545
}
545
546
}
0 commit comments