bytedeco/javacpp

Type aliasing and indirections

Open

#669 opened on Apr 8, 2023

View on GitHub
 (0 comments) (0 reactions) (0 assignees)Java (620 forks)batch import
bughelp wanted

Repository metrics

Stars
 (4,279 stars)
PR merge metrics
 (No merged PRs in 30d)

Description

namespace ns {
  struct M;
  using MPtr = std::shared_ptr<M>;
}


static public void f(ns::MPtr x) {}

In this example, f is parsed correctly as:

public static native @ByVal public f(@SharedPtr M x);

But if we add an info, for instance new Info("ns::M").purify(), then f becomes:

public static native @ByVal public f(@SharedPtr ns::M x);

Not something blocking, since we can force an additional info: new Info("ns::M").purify().pointerTypes("M"), but there may be something to fix here. Note that:

  • without the type aliasing, it works as expected.
  • the bug seems to show up for other indirections like M* instead of shared pointer.

I'm not sure how to fix that, maybe it's related to this line where valueTypes is given the value of typeName, which is a CPP name and not a Java name.

Contributor guide