Le mercredi 14 janvier 2015 à 10:44 -0800, J Luis a écrit :
> What I found is if, for simplification, I restrict the type to (that
> is without type assignment)
>
> type tCTC_l
> iup_canvas
> end
>
> than it works. But if I change it to
>
> type tCTC_l
> iup_canvas::Ptr{cdCanvas}
> end
>
> it errors again. For curiosity I tried also
>
> type tCTC_l
> iup_canvas::Int64
> end
>
> and now
>
> t => Ptr{cdCanvas} @0x0000000021c3f4a0
> ctgc_l.iup_canvas => 566490272
> ERROR: `cdActivate` has no method matching cdActivate(::Int64)
>
> that is, it converted the Ptr{cdCanvas} (the 't') to Int64, so it
> seams that in the first instance it converted one Ptr{cdCanvas} to
> another Ptr{cdCanvas} ending up with TWO declarations of the
> Ptr{cdCanvas}.
> Does it make any sense?
No. I think you should at the very least show us a copy/paste of the
code you run. Debugging without a reproducible example is hard enough;
debugging without seeing the commands that triggered the bug is
impossible.
Regards
> quarta-feira, 14 de Janeiro de 2015 às 17:50:51 UTC, J Luis escreveu:
> Yes, an synthetic example would be nice, but I strongly
> suspect that if I was able to create one than it would because
> I had found the problem.
>
> quarta-feira, 14 de Janeiro de 2015 às 16:15:20 UTC, Milan
> Bouchet-Valat escreveu:
> Le mercredi 14 janvier 2015 à 07:42 -0800, J Luis a
> écrit :
> > Well, I can make the current (failing) code
> available in the IUP repo
> > but to run it implies installing the IUP lib, and
> IUP.jl which
> > probably no one tested in other than Windows.
> But the problem does not seem to involve IUP (or via a
> nasty memory
> corruption bug). You should be able to reproduce it
> with a short
> artificial example.
>
>
> Regards
>
> > quarta-feira, 14 de Janeiro de 2015 às 15:30:20 UTC,
> Milan Bouchet-Valat escreveu:
> > Le mercredi 14 janvier 2015 à 06:54 -0800, J
> Luis a écrit :
> > > I already fall in those two forms of
> troubles (double definition and
> > > double inclusion of the file where the
> type is defined) so I'm aware
> > > of it. As much as I can tell with
> grepping, that is not occurring
> > > now.
> > > Maybe a third (unknown to me) form of this
> type of issue?
> > Would you be able to create a reproducible
> example?
> >
> >
> > Regards
> >
> > > quarta-feira, 14 de Janeiro de 2015 às
> 14:41:56 UTC, Keno Fischer
> > > escreveu:
> > > Are you maybe accidentally
> defining cdCanvas twice or in two
> > > different modules?
> > >
> > > On Wed, Jan 14, 2015 at 3:40 PM, J
> Luis <[email protected]>
> > > wrote:
> > > BTW, if that matters,
> 'ctgc' is a global variable.
> > >
> > > quarta-feira, 14 de
> Janeiro de 2015 às 14:37:05 UTC, J
> > > Luis escreveu:
> > > Hi, thanks for
> looking into this.
> > >
> > > If I make them
> show, as
> > >
> > > @show
> ctgc.iup_canvas
> > >
> ctgc.iup_canvas = t
> > > @show t
> > > @show
> ctgc.iup_canvas
> > >
> > > it 'shows'
> > >
> > > ctgc.iup_canvas =>
> Ptr{cdCanvas}
> > >
> @0x0000000000000000
> > > t => Ptr{cdCanvas}
> @0x0000000022c6d6c0
> > > ctgc.iup_canvas =>
> Ptr{cdCanvas}
> > >
> @0x0000000022c6d6c0
> > >
> > > which shows that
> type has not changed after
> > > the attribution
> and that it has the correct
> > > return type of
> cdCreateCanvas().
> > > That is why I
> initialized the ctgc type with
> > >
> > >
> convert(Ptr{cdCanvas},0)
> > >
> > > (see first member
> in my first post)
> > >
> > >
> > > quarta-feira, 14
> de Janeiro de 2015 às
> > > 13:39:21 UTC,
> Milan Bouchet-Valat escreveu:
> > > Le
> mercredi 14 janvier 2015 à 05:32
> > > -0800, J
> Luis a écrit :
> > > > Hi,
> > > > I have
> had quite some head-aches
> > > with types
> (converted from C structs)
> > > > but this
> one wins.
> > > >
> > > > I have
> this type (from IUP)
> > > >
> > > >
> > > > type
> tCTC
> > > >
> iup_canvas::Ptr{cdCanvas}
> > > >
> w::Cint
> > > >
> h::Cint
> > > > ...
> > > >
> > > > which I
> initialize as
> > > >
> > > > ctgc =
> tCTC(
> > > >
> convert(Ptr{cdCanvas},0),
> > > >
> int32(0), int32(0),
> > > > ...
> > > >
> > > > and now
> the mystery.
> > > >
> > > > t =
> > >
> cdCreateCanvas(cdContextIup(),
> > >
> IupGetHandle("cnvMain"))
> > > >
> ctgc.iup_canvas = t
> > > >
> cdActivate(t);
> > > >
> cdActivate(ctgc.iup_canvas);
> > > >
> > > >
> > > > the last
> line in the chunk above
> > > errors
> with
> > > >
> > > >
> > > > ERROR:
> `cdActivate` has no method
> > > matching
> cdActivate(::Ptr{cdCanvas})
> > > > in
> CDTestInit at C:\programs\Gits
> > > \IUP.jl
> \examples\cdtest_.jl:125
> > > > in
> cdtest at C:\programs\Gits
> > > \IUP.jl
> \examples\cdtest_.jl:92
> > > >
> > > >
> > > > So `t`
> and `ctgc.iup_canvas` are
> > > actually
> two different entities
> > > >
> (although their pointers are ofc the
> > > same as I
> can see if I @show
> > > > them)?
> > > Well, you
> need to show us more
> > > details,
> e.g. tell us what
> > >
> cdCreateCanvas() does, and what type
> > > it
> returns. The pointers might hold
> > > the same
> address, but they still may
> > > be of
> different types. @show should
> > > make this
> visible, but without the
> > > output we
> cannot check.
> > >
> > >
> > > Regards
> > >
> > >
> > >
> >
>