Thread overview |
---|
April 08, 2015 function shadowed | ||||
---|---|---|---|---|
| ||||
i got two modules opengvg.d and vg.d vg.d contains calls to external c functions openvg.d should wrap and simplify some of those calls in openvg.d i make public import of submodule vg.d such that if openvg.d is imported the functions in vg.d can be called, this works as intended. but as soon as i overload a function from vg.d in openvg.d i can only call the function in openvg.d example: vg.d: module vg; extern (C) void vgSetParameterfv(VGHandle object, VGint paramType, VGint count, VGfloat *values); openvg.d module openvg; public import vg; void vgSetParameterfv(VGHandle object, VGint paramType, const(VGfloat[]) values) { vg.vgSetParameterfv(object, paramType, cast(int)values.length, cast(VGfloat*)values); } test.d import openvg; vgSetParameterfv(object, paramType, length, values); // call to fun in vg.d how can i call both functions? i'd like to avoid using the module prefix vg.vgSetParameterfv if possible source: https://github.com/oggs91/OpenVG_D/blob/master/openvg/ |
April 08, 2015 Re: function shadowed | ||||
---|---|---|---|---|
| ||||
Posted in reply to ddos | On Wednesday, 8 April 2015 at 12:05:00 UTC, ddos wrote:
> vg.d:
> module vg;
> extern (C) void vgSetParameterfv(VGHandle object, VGint paramType, VGint count, VGfloat *values);
>
> openvg.d
> module openvg;
> public import vg;
>
> void vgSetParameterfv(VGHandle object, VGint paramType, const(VGfloat[]) values)
> {
> vg.vgSetParameterfv(object, paramType, cast(int)values.length, cast(VGfloat*)values);
> }
>
> test.d
> import openvg;
> vgSetParameterfv(object, paramType, length, values); // call to fun in vg.d
>
> how can i call both functions? i'd like to avoid using the module prefix vg.vgSetParameterfv if possible
Add to openvg:
alias vgSetParameterfv = vg.vgSetParameterfv;
|
April 08, 2015 Re: function shadowed | ||||
---|---|---|---|---|
| ||||
Posted in reply to anonymous | On Wednesday, 8 April 2015 at 17:48:36 UTC, anonymous wrote:
> On Wednesday, 8 April 2015 at 12:05:00 UTC, ddos wrote:
>> vg.d:
>> module vg;
>> extern (C) void vgSetParameterfv(VGHandle object, VGint paramType, VGint count, VGfloat *values);
>>
>> openvg.d
>> module openvg;
>> public import vg;
>>
>> void vgSetParameterfv(VGHandle object, VGint paramType, const(VGfloat[]) values)
>> {
>> vg.vgSetParameterfv(object, paramType, cast(int)values.length, cast(VGfloat*)values);
>> }
>>
>> test.d
>> import openvg;
>> vgSetParameterfv(object, paramType, length, values); // call to fun in vg.d
>>
>> how can i call both functions? i'd like to avoid using the module prefix vg.vgSetParameterfv if possible
>
> Add to openvg:
> alias vgSetParameterfv = vg.vgSetParameterfv;
thx that works, but why is it even necessary?
same behavior when overriding methods of base classes
class Matrix(T)
{
abstract const(T) opIndexAssign(const(T) val, int row, int col);
Matrix!T opIndexAssign(T val, Tuple!(int,int) idx0, Tuple!(int,int) idx1)
{
...
}
}
class DenseMatrix(T) : Matrix!(T)
{
override const(T) opIndexAssign(const(T) val, int row, int col)
{
...
}
alias opIndexAssign = Matrix!T.opIndexAssign;
}
why not just make it callable without the alias?
|
April 09, 2015 Re: function shadowed | ||||
---|---|---|---|---|
| ||||
Posted in reply to ddos | ddos:
> same behavior when overriding methods of base classes
This is by design.
Bye,
bearophile
|
April 09, 2015 Re: function shadowed | ||||
---|---|---|---|---|
| ||||
Posted in reply to ddos | On Wednesday, 8 April 2015 at 22:53:39 UTC, ddos wrote: > why not just make it callable without the alias? It's to prevent "hijacking": http://dlang.org/hijack.html |
April 09, 2015 Re: function shadowed | ||||
---|---|---|---|---|
| ||||
Posted in reply to anonymous | On Thursday, 9 April 2015 at 05:34:09 UTC, anonymous wrote:
> On Wednesday, 8 April 2015 at 22:53:39 UTC, ddos wrote:
>> why not just make it callable without the alias?
>
> It's to prevent "hijacking": http://dlang.org/hijack.html
thx for the article!
|
Copyright © 1999-2021 by the D Language Foundation