<div dir="ltr"><div><a href="http://cache.getlazarus.org/videos/smart-pointers.mp4">Here is a video overview of this message</a></div><div><br></div>I've run into an almost must have use case for FPC smart pointers as described and implemented by Maciej. I wanted to know from the people who make decision about what to merge, what's the status of rolling his enhancements at following location into FPC trunk?<div><br></div><div><div>svn ls <a href="https://svn.freepascal.org/svn/fpc/branches/maciej/smart_pointers/">https://svn.freepascal.org/svn/fpc/branches/maciej/smart_pointers/</a></div></div><div><br></div><div>My use case is for adding a free pascal interface to Webit's JavaScriptCore. The JSC objects all follow Apple's design pattern where C style API functions return and operate on ref pointer types that must be destroyed using specific API calls for each type.</div><div><br></div><div>It seems like a natural fit with smart pointers, such that record types could be used to hold onto things such as JSStringRef, JSClassRef, JSValueRef, and more, retaining and releasing them for you automatically with the appropriate JSC API when they go out of scope using the smart pointer <span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:16px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">Initialize, Finalize, and Copy operators.</span></div><div><br></div><div>e.g. JSClassRetain, JSClassRelease</div><div><br></div><div>For those interested, the JSC library works on all platforms and allows for integrations between native code applications, and a high performance java scripting engine. The same engine powering webkit browsers. The API allows you to expose your native code functions as javascript functions or classes, as well as providing a virtual machine to execute javascript. Properly confiruged, the javascript can callback your pascal code optionally passing javascript objects are arguments to your native code.</div><div><br></div><div>All of these operations would be much easier to program against with stack based types (record or object) if smart pointer support was present in FPC.</div><div><br></div><div>Finally, with JSC it's quite easy and possible for developers to embed webkit webview windows in their desktop applications, and optionally grant any web page the ability invoke free pascal code you decide to expose, and for free pascal in return invoke arbitrary javascript objects or functions.</div><div><br></div><div><br></div></div>