Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【NAPI】在 class binding 的方法中,能否支持直接透传递当前类的 shared_ptr<CtxValue> 指针? #3919

Open
JimmyVV opened this issue Jun 19, 2024 · 0 comments
Assignees

Comments

@JimmyVV
Copy link

JimmyVV commented Jun 19, 2024

Is your feature request related to a problem? Please describe.
现在遇到一个问题,通过一个类方法去创建另外一个类时,子对象需要有个属性指像创建对象。

但现在的设计下,没有办法做到

let mediaElemenet = new MediaElement();
mediaElement.maxSize = 2000;
let context = mediaElement.getContext();

context.element.maxSize;

Describe the solution you'd like
这里希望在方法中,能够有办法获得当前实例对象的指针。

FunctionDefine<MediaElement> addPath;
        addPath.name = "addPath";
        addPath.callback = [weak_scope](MediaElement *thiz,
                                        size_t argument_count,
                             const std::shared_ptr<CtxValue> arguments[],
                             std::shared_ptr<CtxValue> &exception) -> std::shared_ptr<CtxValue> {
            auto scope = weak_scope.lock();
            if (!scope) {
                return nullptr;
            }
            auto context = scope->GetContext();
            if (argument_count == 0) {
                exception = context->CreateException("Path2D::addPath need to have at least 1 argument");
                return nullptr;
            }
            auto context_class = scope->GetJavascriptClass("MediaContext");
           // @note: 能否有全局方法实现?
            std::shared_ptr<CtxValue> argv[] = {
                // thiz->Holder()
            };
            auto context = context->NewInstance(context_class, 1, argv, nullptr);
            return context;
        };

Describe alternatives you've considered

Additional context

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants