bytedeco/javacpp

Type aliasing and indirections

Open

#669 aperta il 8 apr 2023

Vedi su GitHub
 (0 commenti) (0 reazioni) (0 assegnatari)Java (620 fork)batch import
bughelp wanted

Metriche repository

Star
 (4279 star)
Metriche merge PR
 (Nessuna PR mergiata in 30 g)

Descrizione

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.

Guida contributor