<div dir="ltr"><div dir="ltr"><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"><p class="gmail-ng-star-inserted"><span><span class="gmail-ng-star-inserted">Hi Régi<span style="font-family:arial,sans-serif">s<span class="gmail_default"> and everyone</span>,</span></span></span></p><p class="gmail-ng-star-inserted"><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"></span></p><p class="gmail-ng-star-inserted"><span><span class="gmail-ng-star-inserted">Thank you so much for the pointer to the SDK tools page and </span><span class="gmail-inline-code gmail-ng-star-inserted">unoidl-write</span><span class="gmail-ng-star-inserted">.</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"></span><span class="gmail-ng-star-inserted">It was the 'aha!' moment I needed. I had actually seen the </span><span class="gmail-inline-code gmail-ng-star-inserted">unoidl/README.md</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"></span><span class="gmail-ng-star-inserted"><b>/Users/devanshvarshney/lode/dev/libreoffice/unoidl/README.md</b></span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"></span><span class="gmail-ng-star-inserted">file before, but I must admit my eyes glazed over at the detailed binary</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"></span><span class="gmail-ng-star-inserted">format specs, and I missed the high-level descriptions of </span><span class="gmail-inline-code gmail-ng-star-inserted"><b>unoidl-read</b></span><span class="gmail-ng-star-inserted"> and</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"></span><span class="gmail-ng-star-inserted">the other tools. Your email made it all click into place.</span></span></p><p class="gmail-ng-star-inserted"><span><span class="gmail-ng-star-inserted">It immediately clarified why my earlier attempts with </span><span class="gmail-inline-code gmail-ng-star-inserted">regview</span><span class="gmail-ng-star-inserted"> were failing; I</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"></span><span class="gmail-ng-star-inserted">was using a legacy tool for a modern format. Focusing on </span><span class="gmail-inline-code gmail-ng-star-inserted">unoidl-read</span><span class="gmail-ng-star-inserted"> as</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"></span><span class="gmail-ng-star-inserted">the correct tool for this PoC was the right path.</span></span></p><p class="gmail-ng-star-inserted"><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"></span></p><p class="gmail-ng-star-inserted"><span><span class="gmail-ng-star-inserted">I set out to generate the static UNO API dumps and ran into a classic, but</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"></span><span class="gmail-ng-star-inserted">very educational, "context" problem.<u> My initial command failed:</u></span></span></p></span><span style="font-family:monospace"><b>$</b> ./instdir/.../unoidl-read workdir/Rdb/udkapi.rdb</span><p class="gmail-ng-star-inserted"><span style="font-family:monospace">dyld[...]: Symbol not found: __ZN6unoidl7Manager11addProviderE...</span></p><p class="gmail-ng-star-inserted"><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"></span></p><p class="gmail-ng-star-inserted"><span><span class="gmail-ng-star-inserted">I realized this was a dynamic linker error. The tool, run from a plain shell,</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"></span><span class="gmail-ng-star-inserted">had no context for where the required LibreOffice libraries were. The fix</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"></span><span class="gmail-ng-star-inserted">was to properly set up the SDK environment.</span></span></p><p></p><p></p><p class="gmail-ng-star-inserted"><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"><span class="gmail-ng-star-inserted">Following <span class="gmail_default" style="font-family:comic sans ms,sans-serif"></span><span class="gmail_default" style="font-family:arial,sans-serif">this</span> pointer, I immediately focused on the SDK toolchain.</span></span></p><p class="gmail-ng-star-inserted"><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"></span></p><p class="gmail-ng-star-inserted"><span><span class="gmail-ng-star-inserted">First, I had to get the SDK tools running. I located </span><span class="gmail-inline-code gmail-ng-star-inserted">setsdkenv_unix</span><span class="gmail-ng-star-inserted"> in the</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"></span><span class="gmail-ng-star-inserted">SDK directory (</span><span class="gmail-inline-code gmail-ng-star-inserted">instdir/LibreOfficeDev26.2_SDK/</span><span class="gmail-ng-star-inserted">).</span></span></p><p class="gmail-ng-star-inserted"><span style="font-family:monospace"><b>$</b> ls instdir/LibreOfficeDev26.2_SDK/<br>bin                  config.sub           ...<br>classes              <a href="http://configure.pl">configure.pl</a>         ...<br>...                  ...                  setsdkenv_unix<br>...</span></p><p class="gmail-ng-star-inserted"><span style="font-family:monospace"><b>$</b> source ./setsdkenv_unix</span></p><p class="gmail-ng-star-inserted"><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"></span></p><p class="gmail-ng-star-inserted"><span><span class="gmail-ng-star-inserted">The initial run was an interactive configuration step that created a</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"></span><span class="gmail-ng-star-inserted">personalized script for my machine:</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted" style="font-family:monospace"></span><span class="gmail-inline-code gmail-ng-star-inserted" style="font-family:monospace">~/LibreOfficeDev26.2_SDK/Devanshs-MacBook-Pro.local/setsdkenv_unix.sh</span></span></p><p></p><p class="gmail-ng-star-inserted"><span><span class="gmail-ng-star-inserted">My initial attempts to run </span><span class="gmail-inline-code gmail-ng-star-inserted">unoidl-read</span><span class="gmail-ng-star-inserted"> right after this failed with a</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"></span><span class="gmail-ng-star-inserted"><b>"Symbol not found"</b> error, because the configuration script doesn't modify the</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"></span><span style="font-style:italic" class="gmail-ng-star-inserted"><span><span class="gmail-ng-star-inserted">current</span></span></span><span class="gmail-ng-star-inserted"> shell. The key was to </span><span class="gmail-inline-code gmail-ng-star-inserted">source</span><span class="gmail-ng-star-inserted"> the </span><span style="font-style:italic" class="gmail-ng-star-inserted"><span><span class="gmail-ng-star-inserted">generated</span></span></span><span class="gmail-ng-star-inserted"> script in a new</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"></span><span class="gmail-ng-star-inserted">terminal session to set up the necessary environment variables, like</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"></span><span class="gmail-inline-code gmail-ng-star-inserted">DYLD_LIBRARY_PATH</span><span class="gmail-ng-star-inserted"> on macOS.</span></span></p><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"><pre><code><b>$</b> <span class="gmail-hljs-built_in">source</span> ~/LibreOfficeDev26.2_SDK/Devanshs-MacBook-Pro.local/setsdkenv_unix.sh<br></code><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"><pre><code> ************************************************************************
 * SDK environment <span class="gmail-hljs-keyword">is</span> prepared <span class="gmail-hljs-keyword">for</span> MacOSX
 * ... (environment variables listed) ...
 ********************************************************************</code></pre></span><code><b>$</b> <span class="gmail-hljs-built_in">echo</span> <span class="gmail-hljs-variable">$DYLD_LIBRARY_PATH</span>
/Users/devanshvarshney/lode/dev/libreoffice/instdir/... <br><br></code><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"><p class="gmail-ng-star-inserted"><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"></span></p><p class="gmail-ng-star-inserted"><span style="font-family:arial,sans-serif"><strong class="gmail-ng-star-inserted"><span><span class="gmail-ng-star-inserted">Generating the UNO API Dumps with </span><span class="gmail-inline-code gmail-ng-star-inserted">unoidl-read</span></span></strong></span></p><p class="gmail-ng-star-inserted"><span style="font-family:arial,sans-serif"><span><span class="gmail-ng-star-inserted">With the environment correctly set, I was able to successfully run </span><span class="gmail-inline-code gmail-ng-star-inserted">unoidl-read</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"></span><span class="gmail-ng-star-inserted">on the RDB files located in </span><span class="gmail-inline-code gmail-ng-star-inserted">workdir/UnoApiTarget/</span><span class="gmail-ng-star-inserted">. This is a huge step forwa<span class="gmail_default">d</span></span></span></span></p></span><p></p><code><span class="gmail-hljs-comment"># In the libreoffice source root, after sourcing the env script</span>
$ <span class="gmail-hljs-built_in">cd</span> ~/lode/dev/libreoffice
$ mkdir -p ~/gsoc_dumps

<span class="gmail-hljs-comment"># This command now works!</span>
<b>$</b> unoidl-read <span class="gmail-hljs-variable">$PWD</span>/workdir/UnoApiTarget/udkapi.rdb > \
  ~/gsoc_dumps/uno_udkapi.rdb.dump.txt

<span class="gmail-hljs-comment"># This also works, providing udkapi.rdb as a dependency</span>
<b>$</b> unoidl-read <span class="gmail-hljs-variable">$PWD</span>/workdir/UnoApiTarget/udkapi.rdb \
  <span class="gmail-hljs-variable">$PWD</span>/workdir/UnoApiTarget/offapi.rdb > \
  ~/gsoc_dumps/uno_offapi.rdb.dump.txt</code></pre></span><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"></span><span class="gmail_default" style="font-family:comic sans ms,sans-serif"></span><b><u>Key Findings & Next Steps</u></b><br><br></div><div dir="ltr"><b><span class="gmail_default" style="font-family:arial,sans-serif">1. S</span>uccess with unoidl-read</b>: The tool works perfectly on the modern RDB<br>    files generated by the build system (like udkapi.rdb, offapi.rdb). The<br>    output is detailed and provides the structured type information we need for<br>    our static cache PoC.<br><b><span class="gmail_default" style="font-family:arial,sans-serif">2. </span><span style="font-family:arial,sans-serif">Le</span>gacy RDBs</b>: Interestingly, when I tried to run unoidl-read on some<br>    other RDBs from workdir/Rdb/ (like pyuno.rdb), I got a different error:<p></p><div style="font-family:comic sans ms,sans-serif" class="gmail_default"><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"><pre><code>    $ unoidl-read $PWD/workdir/Rdb/pyuno.rdb
    Bad <span class="gmail-hljs-built_in">input</span> <...>: cannot <span class="gmail-hljs-built_in">open</span> legacy file: <span class="gmail-hljs-number">6</span></code></pre></span><span style="font-family:arial,sans-serif">This confirms the unoidl/README.md note that unoidl::Manager can<br>detect the old legacy format but may not be able to read all of them with<br>this specific tool. It's a great insight into the mixed-format nature of the<br>registry system.<br><br><b>Path Forward: </b>This unblocks our static analysis path! I can now generate<br>the comprehensive UNO API dumps we need for our "Master Information Table."</span></div><div class="gmail_default"><span style="font-family:arial,sans-serif"><br></span></div><div style="font-family:comic sans ms,sans-serif" class="gmail_default"><span style="font-family:arial,sans-serif">I also saw dependency errors when trying to read RDBs that<br>reference types defined elsewhere:</span></div><div style="font-family:comic sans ms,sans-serif" class="gmail_default"><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"><pre><code><b>$</b> unoidl-read <span class="gmail-hljs-variable">$PWD</span>/workdir/UnoApiTarget/udkapi.rdb \
  <span class="gmail-hljs-variable">$PWD</span>/workdir/UnoApiTarget/oovbaapi.rdb > ...
Unknown entity com.sun.star.drawing.XControlShape</code></pre></span><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"><span class="gmail-inline-code gmail-ng-star-inserted" style="font-family:arial,sans-serif"><b>oovbaapi.rdb</b></span><span class="gmail-ng-star-inserted" style="font-family:arial,sans-serif"> <u>needs to know about </u></span><u><span class="gmail-inline-code gmail-ng-star-inserted" style="font-family:arial,sans-serif"><b>XControlShape</b></span></u><span class="gmail-ng-star-inserted" style="font-family:arial,sans-serif">, but that type isn't defined</span><span style="font-family:arial,sans-serif"><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"></span><span class="gmail-ng-star-inserted">in </span><span class="gmail-inline-code gmail-ng-star-inserted"><b>udkapi.rdb</b></span><span class="gmail-ng-star-inserted">. It's likely in </span><span class="gmail-inline-code gmail-ng-star-inserted">offapi.rdb</span><span class="gmail-ng-star-inserted">?</span><span class="gmail-ng-star-inserted"> This confirms that for a complete</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"></span><span class="gmail-ng-star-inserted">dump, one must provide the full chain of dependencies on the command line</span></span></span></div><p class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"><span class="gmail_default" style="font-family:arial,sans-serif">------------------------------------------------------------------------------------</span><span class="gmail_default" style="font-family:arial,sans-serif">---------------------</span></span></p><p class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Thank you </span><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"><span><span class="gmail-ng-star-inserted">Régi<span style="font-family:arial,sans-serif">s<span class="gmail_default"></span></span></span></span></span><span class="gmail-ng-star-inserted"> for your email! Your question was the perfect pointer and</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">sent me down a very productive path of discovery. It helped connect all the</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">dots from my mentor meetings and codebase review.</span></p><p class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">You asked:</span></p><blockquote class="gmail-ng-star-inserted"><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">So idlc and regmerge are still relevant ?</span></strong></p></blockquote><p class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">My finding is that for modern development, they are largely replaced by the</span><br class="gmail-ng-star-inserted"><span class="gmail-inline-code gmail-ng-star-inserted">unoidl-</span><span class="gmail-ng-star-inserted"> toolchain. I've compiled my recent findings into a Q&A format below,</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">as I think the journey has been very educational.</span></p><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"><br></span></strong></div><div dir="ltr"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">TL;DR - Key Discoveries</span></strong><ul class="gmail-ng-star-inserted"><li class="gmail-ng-star-inserted"><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-inline-code gmail-ng-star-inserted">unoidl-read</span></strong><span class="gmail-ng-star-inserted"> is the modern tool to <u>inspect </u></span><u><span class="gmail-inline-code gmail-ng-star-inserted">.rdb</span></u><span class="gmail-ng-star-inserted"><u> files</u>; </span><span class="gmail-inline-code gmail-ng-star-inserted">regview</span><span class="gmail-ng-star-inserted"> is</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">for legacy formats.</span></p></li><li class="gmail-ng-star-inserted"><p class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">The </span><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">SDK environment must be sourced (</span><span class="gmail-inline-code gmail-ng-star-inserted">setsdkenv_unix.sh</span><span class="gmail-ng-star-inserted">)</span></strong><span class="gmail-ng-star-inserted"> before</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">running its tools to avoid dynamic linker errors.</span></p></li><li class="gmail-ng-star-inserted"><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-inline-code gmail-ng-star-inserted">theCoreReflection</span><span class="gmail-ng-star-inserted"> service is our C++ gateway</span></strong><span class="gmail-ng-star-inserted"> to get rich, live</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">type information from the UNO runtime, which is our primary method for</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">the C++ PoCs.</span></p></li></ul><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"><br></span></strong></div><div dir="ltr"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">GSoC BASIC IDE: A Deeper Dive Q&A on UNO Tooling & Data Extraction</span></strong><p class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">My project's first phase is all about data acquisition. Here are some questions</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">I've explored while trying to get the static UNO API data.</span></p><h4 class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"><u>Tooling Evolution</u></span></h4><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Q1: So, are </span><span class="gmail-inline-code gmail-ng-star-inserted">idlc</span><span class="gmail-ng-star-inserted"> and </span><span class="gmail-inline-code gmail-ng-star-inserted">regmerge</span><span class="gmail-ng-star-inserted"> still relevant?</span></strong></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">A:</span></strong><span class="gmail-ng-star-inserted"> For modern LibreOffice development, mostly no. The documentation is</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">clear: </span><strong class="gmail-ng-star-inserted"><span class="gmail-inline-code gmail-ng-star-inserted">unoidl-write</span></strong><span class="gmail-ng-star-inserted"> is the new, unified tool that compiles </span><span class="gmail-inline-code gmail-ng-star-inserted">.idl</span><span class="gmail-ng-star-inserted"> files</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">directly into the modern </span><span class="gmail-inline-code gmail-ng-star-inserted">.rdb</span><span class="gmail-ng-star-inserted"> format. While the old tools might be kept for</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">legacy build scripts, core development now relies on the </span><span class="gmail-inline-code gmail-ng-star-inserted">unoidl-</span><span class="gmail-ng-star-inserted"> toolchain.</span></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Q2: What is the correct tool to view the contents of modern </span><span class="gmail-inline-code gmail-ng-star-inserted">.rdb</span><span class="gmail-ng-star-inserted"> files?</span></strong></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">A:</span></strong><span class="gmail-ng-star-inserted"> The correct tool is </span><strong class="gmail-ng-star-inserted"><span class="gmail-inline-code gmail-ng-star-inserted">unoidl-read</span></strong><span class="gmail-ng-star-inserted">. My initial attempts to use the</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">older </span><span class="gmail-inline-code gmail-ng-star-inserted">regview</span><span class="gmail-ng-star-inserted"> tool failed because it's designed for the legacy registry</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">format. </span><span class="gmail-inline-code gmail-ng-star-inserted">unoidl-read</span><span class="gmail-ng-star-inserted"> is specifically built to parse the new format that</span><br class="gmail-ng-star-inserted"><span class="gmail-inline-code gmail-ng-star-inserted">unoidl-write</span><span class="gmail-ng-star-inserted"> produces.</span></p><h4 class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"><u>Environment & Execution</u></span></h4><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"><pre><code><span style="font-family:arial,sans-serif"><b>Q3: Why did my <span class="gmail-hljs-keyword">first</span> attempts <span class="gmail-hljs-keyword">to</span> run unoidl<span class="gmail-hljs-operator">-</span>read fail <span class="gmail-hljs-keyword">with</span> a
"Symbol not found" error?</b>
A: This was a classic environment issue. The error dyld[...]:
Symbol <span class="gmail-hljs-keyword">not</span> found... means the unoidl<span class="gmail-hljs-operator">-</span>read executable couldn<span class="gmail-hljs-string">'t
find the shared library it depends on. The SDK tools are not
statically linked, and a standard terminal doesn'</span>t know <span class="gmail-hljs-keyword">where</span>
LibreOffice<span class="gmail-hljs-string">'s internal libraries are.</span></span></code></pre></span><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Q4: What's the correct way to use the SDK tools from the command line?</span></strong></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">A:</span></strong><span class="gmail-ng-star-inserted"> You must prepare your shell session first. The first run of</span><br class="gmail-ng-star-inserted"><span class="gmail-inline-code gmail-ng-star-inserted"><b>instdir/LibreOfficeDev26.2_SDK/setsdkenv_unix</b></span><span class="gmail-ng-star-inserted"> is an interactive setup that</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">creates a personalized script. For every new terminal session after that, you</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">must </span><span class="gmail-inline-code gmail-ng-star-inserted">source</span><span class="gmail-ng-star-inserted"> that </span><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">generated script</span></strong><span class="gmail-ng-star-inserted">. For me, this is:</span><br class="gmail-ng-star-inserted"><span class="gmail-inline-code gmail-ng-star-inserted"><b><span style="color:rgb(103,78,167)">source ~/LibreOfficeDev26.2_SDK/Devanshs-MacBook-Pro.local/setsdkenv_unix.sh</span></b></span></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Q5: After fixing the environment, </span><span class="gmail-inline-code gmail-ng-star-inserted">unoidl-read</span><span class="gmail-ng-star-inserted"> still gave errors like</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">"Unknown entity" or "Input ... does not exist." Why?</span></strong></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">A:</span></strong><span class="gmail-ng-star-inserted"> This revealed two more key concepts:</span></p><ol class="gmail-ng-star-inserted"><li class="gmail-ng-star-inserted"><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Paths:</span></strong><span class="gmail-ng-star-inserted"> The tool works best with absolute paths, which I resolved by</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">using </span><span class="gmail-inline-code gmail-ng-star-inserted">$PWD</span><span class="gmail-ng-star-inserted"> to construct the full path.</span></p></li><li class="gmail-ng-star-inserted"><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Dependencies:</span></strong><span class="gmail-ng-star-inserted"> RDB files depend on each other. For example, </span><span class="gmail-inline-code gmail-ng-star-inserted">offapi.rdb</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">requires </span><span class="gmail-inline-code gmail-ng-star-inserted">udkapi.rdb</span><span class="gmail-ng-star-inserted">. You must provide dependencies first on the command</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">line.</span></p></li></ol><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Q6: What is a correct </span><span class="gmail-inline-code gmail-ng-star-inserted">unoidl-read</span><span class="gmail-ng-star-inserted"> command to dump a complex RDB?</span></strong></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">A:</span></strong><span class="gmail-ng-star-inserted"> You have to list its dependencies first. This successfully generated a full,</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">readable dump for me:</span></p><div class="gmail-syntax-highlighted-code-wrapper"><div class="gmail-syntax-highlighted-code"><pre>      <code>unoidl-read $PWD/workdir/UnoApiTarget/udkapi.rdb \
  $PWD/workdir/UnoApiTarget/offapi.rdb > \
  ~<span class="gmail-hljs-regexp">/gsoc_dumps/u</span>no_offapi.rdb.dump.txt</code>
    </pre></div></div><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Q7: Can </span><span class="gmail-inline-code gmail-ng-star-inserted">unoidl-read</span><span class="gmail-ng-star-inserted"> handle all </span><span class="gmail-inline-code gmail-ng-star-inserted">.rdb</span><span class="gmail-ng-star-inserted"> files?</span></strong></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">A:</span></strong><span class="gmail-ng-star-inserted"> Interestingly, no. When I tried it on </span><span class="gmail-inline-code gmail-ng-star-inserted">pyuno.rdb</span><span class="gmail-ng-star-inserted">, I got the error</span><br class="gmail-ng-star-inserted"><span class="gmail-inline-code gmail-ng-star-inserted">Bad input <...>: cannot open legacy file: 6</span><span class="gmail-ng-star-inserted">. This confirms the tool is</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">for the modern format and highlights the mixed-format nature of the registry.</span></p><h4 class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"><u>Reflection vs. Static Dumps</u></span></h4><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Q8: What did the mentor mean with the </span><span class="gmail-inline-code gmail-ng-star-inserted">cppumaker</span><span class="gmail-ng-star-inserted"> command?</span></strong></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">A:</span></strong><span class="gmail-ng-star-inserted"> The command </span><span class="gmail-inline-code gmail-ng-star-inserted">cppumaker -Gc ...</span><span class="gmail-ng-star-inserted"> reads RDBs to generate C++ header files.</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">It's a perfect example of a tool </span><span style="font-style:italic" class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">consuming</span></span><span class="gmail-ng-star-inserted"> the RDB data. It's not for</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">creating a generic data dump, but it confirms that the RDBs contain the</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">necessary structured information for programmatic use.</span></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Q9: What is the best way to get UNO API info programmatically in C++?</span></strong></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">A:</span></strong><span class="gmail-ng-star-inserted"> The mentor-guided PoC approach using the </span><strong class="gmail-ng-star-inserted"><span class="gmail-inline-code gmail-ng-star-inserted">theCoreReflection</span></strong><span class="gmail-ng-star-inserted"> service is</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">the answer. The UNO runtime loads all RDBs, and </span><span class="gmail-inline-code gmail-ng-star-inserted">theCoreReflection</span><span class="gmail-ng-star-inserted"> is our C++</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">"window" into that live, in-memory type system. It's more reliable than</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">parsing RDB files ourselves. <span class="gmail_default" style="font-family:comic sans ms,sans-serif"></span><span class="gmail_default" style="font-family:arial,sans-serif">Our</span> C++ PoC 2 successfully used</span><br class="gmail-ng-star-inserted"><span class="gmail-inline-code gmail-ng-star-inserted"><b>theCoreReflection::forName()</b></span><span class="gmail-ng-star-inserted"> to dump methods, parameters, and inheritance.</span></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Q10: What crucial information did the </span><span class="gmail-inline-code gmail-ng-star-inserted">theCoreReflection</span><span class="gmail-ng-star-inserted"> PoC confirm we</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">can get?</span></strong></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">A:</span></strong><span class="gmail-ng-star-inserted"> It proved we can get everything needed for rich auto-completion:</span></p><ul class="gmail-ng-star-inserted"><li class="gmail-ng-star-inserted"><p class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Method Signatures (with fully qualified return types).</span></p></li><li class="gmail-ng-star-inserted"><p class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Parameter Names & Types (crucial for "Parameter Info" tooltips).</span></p></li><li class="gmail-ng-star-inserted"><p class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Inheritance (superclasses, essential for a complete member list).</span></p></li><li class="gmail-ng-star-inserted"><p class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Struct & Enum Definitions (member names and types).</span></p></li></ul><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Q11: So, what's the difference between the </span><span class="gmail-inline-code gmail-ng-star-inserted">unoidl-read</span><span class="gmail-ng-star-inserted"> dump and the</span><br class="gmail-ng-star-inserted"><span class="gmail-inline-code gmail-ng-star-inserted">theCoreReflection</span><span class="gmail-ng-star-inserted"> dump?</span></strong></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">A:</span></strong><span class="gmail-ng-star-inserted"> </span><span class="gmail-inline-code gmail-ng-star-inserted">unoidl-read</span><span class="gmail-ng-star-inserted"> gives us a </span><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">static</span></strong><span class="gmail-ng-star-inserted"> view of everything defined in the RDB</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">files. </span><span class="gmail-inline-code gmail-ng-star-inserted">theCoreReflection</span><span class="gmail-ng-star-inserted"> gives us a </span><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">live</span></strong><span class="gmail-ng-star-inserted"> view of what the runtime knows.</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">They should be very similar, but the C++ approach is what we'll use in the</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">final code. The static dump is our "answer key" for validation.</span></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Q12: Why bother with the C++ PoCs if </span><span class="gmail-inline-code gmail-ng-star-inserted">unoidl-read</span><span class="gmail-ng-star-inserted"> gives us the dump?</span></strong></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">A:</span></strong><span class="gmail-ng-star-inserted"> Because the final "Master Analyzer" will be C++ code running inside</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">LibreOffice. The PoCs prove that our implementation language and strategy</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">can access the required data. The </span><span class="gmail-inline-code gmail-ng-star-inserted">unoidl-read</span><span class="gmail-ng-star-inserted"> dump is our "answer key" to</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">check our C++ extractor against.</span></p><h4 class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"><u>Built-in vs. UNO vs. User Code</u></span></h4><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Q13: How does ScriptForge's </span><span class="gmail-inline-code gmail-ng-star-inserted">.pyi</span><span class="gmail-ng-star-inserted"> stub file fit into this?</span></strong></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">A:</span></strong><span class="gmail-ng-star-inserted"> It's a key source of </span><span style="font-style:italic" class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">inspiration</span></span><span class="gmail-ng-star-inserted">. As Rafael Lima mentioned, it might be</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">manually curated for Python tooling. This tells us that having a structured</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">API definition is a powerful pattern, and we can use the </span><span class="gmail-inline-code gmail-ng-star-inserted">.pyi</span><span class="gmail-ng-star-inserted"> as a</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">high-quality reference for what our parser should extract from the actual</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">ScriptForge </span><span class="gmail-inline-code gmail-ng-star-inserted">.bas</span><span class="gmail-ng-star-inserted"> source files.</span></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Q14: What was the point of the </span><span class="gmail-inline-code gmail-ng-star-inserted">MsgBox</span><span class="gmail-ng-star-inserted"> investigation?</span></strong></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">A:</span></strong><span class="gmail-ng-star-inserted"> </span><span class="gmail-inline-code gmail-ng-star-inserted">MsgBox</span><span class="gmail-ng-star-inserted"> is a perfect example of a </span><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">built-in BASIC function</span></strong><span class="gmail-ng-star-inserted">, a</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">different category from UNO services. Its signature isn't in an IDL file. We</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">have to find its definition in the C++ source (</span><span class="gmail-inline-code gmail-ng-star-inserted">basic/source/runtime/</span><span class="gmail-ng-star-inserted">) and</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">see how its parameters are handled to extract its signature. This PoC proves</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">we can handle this third category of data.</span></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Q15: How does the MS Office VBA Object Browser help?</span></strong></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">A:</span></strong><span class="gmail-ng-star-inserted"> The screenshot Jonathan Clark share<span style="font-family:arial,sans-serif">d <span class="gmail_default">post meeting 3 in chat</span> </span></span><span class="gmail-inline-code gmail-ng-star-inserted">MsgBox</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"> as a "Member of<span class="gmail_default" style="font-family:comic sans ms,sans-serif"> </span></span><span class="gmail-ng-star-inserted">Interaction'". This is a crucial UX insight. It tells us that grouping</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">related built-in functions under a logical "class" in our Object Browser</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">will provide a more familiar experience for users.</span></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Q16: Where does the BASIC parser's symbol table fit in?</span></strong></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">A:</span></strong><span class="gmail-ng-star-inserted"> While </span><span class="gmail-inline-code gmail-ng-star-inserted">theCoreReflection</span><span class="gmail-ng-star-inserted"> and C++ analysis handle UNO and built-ins, the</span><br class="gmail-ng-star-inserted"><span class="gmail-inline-code gmail-ng-star-inserted">SbiParser</span><span class="gmail-ng-star-inserted"> and its </span><span class="gmail-inline-code gmail-ng-star-inserted">SbiSymPool</span><span class="gmail-ng-star-inserted"> are the </span><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">only source of truth</span></strong><span class="gmail-ng-star-inserted"> for the user's</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">own code being written in the editor. Our upcoming PoC 4 will focus on</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">extracting symbols from these internal compiler structures.</span></p><h4 class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"><u>Final Thoughts & Flow</u></span></h4><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Q17: What is the immediate coding priority now?</span></strong></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">A:</span></strong><span class="gmail-ng-star-inserted"> <span class="gmail_default" style="font-family:arial,sans-serif">Our</span><span style="font-family:arial,sans-serif"> </span>C++ PoCs 1 & 2 for UNO are working. The next coding task, as per</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">mentor guidance, is </span><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">PoC 3: The </span><span class="gmail-inline-code gmail-ng-star-inserted">MsgBox</span><span class="gmail-ng-star-inserted"> deep dive</span></strong><span class="gmail-ng-star-inserted">, followed by </span><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">PoC 4:</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">BASIC Parser Symbol Extraction</span></strong><span class="gmail-ng-star-inserted">. This "breadth-first" approach demonstrates we</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">can handle all major data categories.</span></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Q18: What's the plan for the cache storage (SQLite, Binary file, etc.)?</span></strong></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">A:</span></strong><span class="gmail-ng-star-inserted"> This is a later design decision. For now, the PoCs are dumping simple</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">text files, which is perfect for analysis. Once we've proven we can </span><span style="font-style:italic" class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">get</span></span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">all the data, we'll design an efficient cache structure.</span></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Q19: What is the flow of information for UNO types, now that we understand</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">the new tools?</span></strong></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">A:</span></strong><span class="gmail-ng-star-inserted"> The updated flowchart is:</span></p><div class="gmail-syntax-highlighted-code-wrapper"><div class="gmail-syntax-highlighted-code"><pre>      <code>.idl Files    <span class="gmail-hljs-comment">--(unoidl-write)-->   .rdb Files</span>
(Source <span class="gmail-hljs-keyword">of</span> Truth)                     (Modern <span class="gmail-hljs-type">Binary</span> Registry loaded <span class="gmail-hljs-keyword">by</span> LO)
      <span class="gmail-hljs-operator">|</span>                                   <span class="gmail-hljs-operator">|</span>
      <span class="gmail-hljs-operator">|</span> (Docs <span class="gmail-hljs-keyword">for</span> humans)                 <span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">-----> <Live UNO Type System></span>
      <span class="gmail-hljs-operator">|</span>                                           (<span class="gmail-hljs-keyword">In</span><span class="gmail-hljs-operator">-</span>memory, accessed by...)
      v                                                 <span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">-----------+                                           v</span>
<span class="gmail-hljs-operator">|</span>  Doxygen  <span class="gmail-hljs-operator">|</span>                                 <span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">---------------------+</span>
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">-----------+                                 | theCoreReflection   |</span>
                                              <span class="gmail-hljs-operator">|</span> (Service <span class="gmail-hljs-keyword">in</span> C<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-operator">+</span>)    <span class="gmail-hljs-operator">|</span>
                                              <span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">---------------------+</span>
                                                        <span class="gmail-hljs-operator">|</span>
                                                        v
                                                 <span class="gmail-hljs-operator"><</span>Rich Type Info <span class="gmail-hljs-keyword">for</span>
                                                  C<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-operator">+</span> PoC <span class="gmail-hljs-operator">/</span> <span class="gmail-hljs-keyword">Final</span> App<span class="gmail-hljs-operator">></span>

<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">----------------+  (Dumps contents of) +--> `unoidl-read` SDK Tool</span>
<span class="gmail-hljs-operator">|</span>  Text Dump     <span class="gmail-hljs-operator">|</span> <span class="gmail-hljs-operator"><</span><span class="gmail-hljs-comment">--------------------+    (For static analysis)</span>
<span class="gmail-hljs-operator">|</span> (Our PoC File) <span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">----------------+</span></code>
    </pre></div></div><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">Q20: What was the final takeaway from my </span><span class="gmail-inline-code gmail-ng-star-inserted">unoidl-read</span><span class="gmail-ng-star-inserted"> struggles?</span></strong></p><p class="gmail-ng-star-inserted"><strong class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">A:</span></strong><span class="gmail-ng-star-inserted"> The environment is everything! Sourcing the </span><span class="gmail-inline-code gmail-ng-star-inserted">setsdkenv_unix.sh</span><span class="gmail-ng-star-inserted"> script</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">to provide the library context for SDK tools is the key. It was an</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted">invaluable lesson.</span></p><span class="gmail-ng-star-inserted"><br></span></div><div dir="ltr"><u><span class="gmail-ng-star-inserted"><br></span></u></div><div><div style="font-family:comic sans ms,sans-serif" class="gmail_default"><u><span style="font-family:monospace"><font size="4">Another flow chart a bit easier compared to above -</font></span></u></div><br></div><div><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"><pre><code><span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">------------------------+</span>
<span class="gmail-hljs-operator">|</span>      .idl Files        <span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">|</span>  (Text Definitions)    <span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">------------------------+</span>
         <span class="gmail-hljs-operator">|</span>
         <span class="gmail-hljs-operator">|</span>  unoidl<span class="gmail-hljs-operator">-</span>write
         v
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">------------------------+</span>
<span class="gmail-hljs-operator">|</span>      .rdb Files        <span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">|</span> (<span class="gmail-hljs-type">Binary</span> Registry Data) <span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">------------------------+</span>
         <span class="gmail-hljs-operator">|</span>
         <span class="gmail-hljs-operator">|</span> Loaded <span class="gmail-hljs-keyword">by</span>
         v
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">----------------------------------------+</span>
<span class="gmail-hljs-operator">|</span>        <span class="gmail-hljs-operator"><</span>Live UNO Type <span class="gmail-hljs-keyword">System</span><span class="gmail-hljs-operator">></span>          <span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">|</span>  (<span class="gmail-hljs-keyword">In</span><span class="gmail-hljs-operator">-</span>memory, managed <span class="gmail-hljs-keyword">by</span> LibreOffice)   <span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">----------------------------------------+</span>
         <span class="gmail-hljs-operator">|</span>
         <span class="gmail-hljs-operator">|</span> Accessed <span class="gmail-hljs-keyword">by</span>
         v
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">------------------------+</span>
<span class="gmail-hljs-operator">|</span>   theCoreReflection    <span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">|</span>  (C<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-operator">+</span> Service API)     <span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">------------------------+</span>
         <span class="gmail-hljs-operator">|</span>
         <span class="gmail-hljs-operator">|</span> Used <span class="gmail-hljs-keyword">in</span>
         v
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">------------------------+</span>
<span class="gmail-hljs-operator">|</span>  Our C<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-operator">+</span> PoC <span class="gmail-hljs-operator">/</span> <span class="gmail-hljs-keyword">Final</span>   <span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">|</span>     Code Completion    <span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">------------------------+</span>

Additional Tools <span class="gmail-hljs-keyword">and</span> Paths:
────────────────────────────────────────────

<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">------------------+         +------------------+</span>
<span class="gmail-hljs-operator">|</span>  Doxygen         <span class="gmail-hljs-operator">|</span><span class="gmail-hljs-operator"><</span><span class="gmail-hljs-comment">--------|  .idl Files      |</span>
<span class="gmail-hljs-operator">|</span> (Docs <span class="gmail-hljs-keyword">for</span> Humans)<span class="gmail-hljs-operator">|</span>         <span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">------------------+</span>

<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">------------------+         +------------------+</span>
<span class="gmail-hljs-operator">|</span>  unoidl<span class="gmail-hljs-operator">-</span>read     <span class="gmail-hljs-operator">|</span><span class="gmail-hljs-operator"><</span><span class="gmail-hljs-comment">--------|  .rdb Files      |</span>
<span class="gmail-hljs-operator">|</span> (<span class="gmail-hljs-keyword">Static</span> Dump)    <span class="gmail-hljs-operator">|</span>         <span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">------------------+</span>
<span class="gmail-hljs-operator">|</span>  → Text Dump     <span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">------------------+</span>

<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">------------------+         +------------------+</span>
<span class="gmail-hljs-operator">|</span>  cppumaker       <span class="gmail-hljs-operator">|</span><span class="gmail-hljs-operator"><</span><span class="gmail-hljs-comment">--------|  .rdb Files      |</span>
<span class="gmail-hljs-operator">|</span>  javamaker       <span class="gmail-hljs-operator">|</span>         <span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">------------------+</span>
<span class="gmail-hljs-operator">|</span> (Lang Bindings)  <span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">------------------+</span></code></pre></span><br><font size="4" style="font-family:monospace"><u><span class="gmail_default">Terminal session</span> -</u></font><br><br></div><div><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"><pre><code> Devanshs<span class="gmail-hljs-operator">-</span>MacBook<span class="gmail-hljs-operator">-</span>Pro    \lode\dev\libreoffice  ➜ (   poc_basic  <span class="gmail-hljs-number">3</span>)   <span class="gmail-hljs-number">21</span>ms   <span class="gmail-hljs-number">6</span>:<span class="gmail-hljs-number">00</span> PM   
 devanshvarshney ❯❯ ls <span class="gmail-hljs-operator">~</span><span class="gmail-hljs-operator">/</span>lode<span class="gmail-hljs-operator">/</span>dev<span class="gmail-hljs-operator">/</span>libreoffice<span class="gmail-hljs-operator">/</span>instdir<span class="gmail-hljs-operator">/</span>LibreOfficeDev26<span class="gmail-hljs-number">.2</span>_SDK<span class="gmail-hljs-operator">/</span>
bin                  config.sub           examples             setsdkenv_unix       share
classes              <a href="http://configure.pl">configure.pl</a>         include              <a href="http://setsdkenv_unix.sh.in">setsdkenv_unix.sh.in</a>
config.guess         docs                 index.html           settings
 Devanshs<span class="gmail-hljs-operator">-</span>MacBook<span class="gmail-hljs-operator">-</span>Pro    \lode\dev\libreoffice  ➜ (   poc_basic  <span class="gmail-hljs-number">3</span>)   <span class="gmail-hljs-number">18</span>ms   <span class="gmail-hljs-number">6</span>:<span class="gmail-hljs-number">34</span> PM   
 devanshvarshney ❯❯ cd <span class="gmail-hljs-operator">~</span><span class="gmail-hljs-operator">/</span>lode<span class="gmail-hljs-operator">/</span>dev<span class="gmail-hljs-operator">/</span>libreoffice<span class="gmail-hljs-operator">/</span>instdir<span class="gmail-hljs-operator">/</span>LibreOfficeDev26<span class="gmail-hljs-number">.2</span>_SDK<span class="gmail-hljs-operator">/</span>
 Devanshs<span class="gmail-hljs-operator">-</span>MacBook<span class="gmail-hljs-operator">-</span>Pro    \lode\dev\libreoffice\instdir\LibreOfficeDev26<span class="gmail-hljs-number">.2</span>_SDK  ➜ (   poc_basic  <span class="gmail-hljs-number">3</span>)   <span class="gmail-hljs-number">15</span>ms   <span class="gmail-hljs-number">6</span>:<span class="gmail-hljs-number">34</span> PM   
 devanshvarshney ❯❯ source .<span class="gmail-hljs-operator">/</span>setsdkenv_unix 

 <span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span>
 <span class="gmail-hljs-operator">*</span>
 <span class="gmail-hljs-operator">*</span>  You have <span class="gmail-hljs-keyword">to</span> configure your SDK environment <span class="gmail-hljs-keyword">first</span> before you can
 <span class="gmail-hljs-operator">*</span>  use it. The configuration has <span class="gmail-hljs-keyword">to</span> be done <span class="gmail-hljs-keyword">only</span> once.
 <span class="gmail-hljs-operator">*</span>
 <span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span>

sh: line <span class="gmail-hljs-number">0</span>: cd: <span class="gmail-hljs-operator">/</span><span class="gmail-hljs-keyword">System</span><span class="gmail-hljs-operator">/</span>Library<span class="gmail-hljs-operator">/</span>Frameworks<span class="gmail-hljs-operator">/</span>JavaVM.Framework<span class="gmail-hljs-operator">/</span>Versions<span class="gmail-hljs-operator">/</span>CurrentJDK: <span class="gmail-hljs-keyword">No</span> such file <span class="gmail-hljs-keyword">or</span> directory
 Used SDK <span class="gmail-hljs-operator">=</span> <span class="gmail-hljs-operator">/</span>Users<span class="gmail-hljs-operator">/</span>devanshvarshney<span class="gmail-hljs-operator">/</span>lode<span class="gmail-hljs-operator">/</span>dev<span class="gmail-hljs-operator">/</span>libreoffice<span class="gmail-hljs-operator">/</span>instdir<span class="gmail-hljs-operator">/</span>LibreOfficeDev26<span class="gmail-hljs-number">.2</span>_SDK

 Enter the Office installation directory [<span class="gmail-hljs-operator">/</span>Applications<span class="gmail-hljs-operator">/</span>LibreOffice.app]: 
 Enter GNU make (<span class="gmail-hljs-number">3.79</span><span class="gmail-hljs-number">.1</span> <span class="gmail-hljs-keyword">or</span> higher) tools directory [<span class="gmail-hljs-operator">/</span>Users<span class="gmail-hljs-operator">/</span>devanshvarshney<span class="gmail-hljs-operator">/</span>lode<span class="gmail-hljs-operator">/</span>opt<span class="gmail-hljs-operator">/</span>bin]: 
 Enter zip (<span class="gmail-hljs-number">2.3</span> <span class="gmail-hljs-keyword">or</span> higher) tool directory [<span class="gmail-hljs-operator">/</span>usr<span class="gmail-hljs-operator">/</span>bin]: 
 Enter cat tool directory [<span class="gmail-hljs-operator">/</span>bin]: 
 Enter sed tool directory [<span class="gmail-hljs-operator">/</span>usr<span class="gmail-hljs-operator">/</span>bin]: 
 C<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-operator">+</span> compilers <span class="gmail-hljs-keyword">where</span> <span class="gmail-hljs-keyword">for</span> example a <span class="gmail-hljs-keyword">language</span> binding exist:
  <span class="gmail-hljs-operator">-</span> Solaris, Sun WorkShop <span class="gmail-hljs-number">6</span> update <span class="gmail-hljs-number">1</span> C<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-operator">+</span> <span class="gmail-hljs-number">5.2</span> <span class="gmail-hljs-number">2000</span><span class="gmail-hljs-operator">/</span><span class="gmail-hljs-number">09</span><span class="gmail-hljs-operator">/</span><span class="gmail-hljs-number">11</span> <span class="gmail-hljs-keyword">or</span> higher
  <span class="gmail-hljs-operator">-</span> Linux, GNU C<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-operator">+</span> compiler, gcc version <span class="gmail-hljs-number">4.0</span><span class="gmail-hljs-number">.1</span> <span class="gmail-hljs-keyword">or</span> higher
  <span class="gmail-hljs-operator">-</span> MacOS, GNU C<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-operator">+</span> compiler, gcc version <span class="gmail-hljs-number">4.0</span><span class="gmail-hljs-number">.1</span> <span class="gmail-hljs-keyword">or</span> higher
 Enter the directory <span class="gmail-hljs-keyword">of</span> the C<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-operator">+</span> compiler, the directory
 <span class="gmail-hljs-keyword">where</span> the compiler <span class="gmail-hljs-keyword">is</span> located (optional) [<span class="gmail-hljs-operator">/</span>usr<span class="gmail-hljs-operator">/</span>bin]: 
 Enter .NET SDK (<span class="gmail-hljs-number">8</span> <span class="gmail-hljs-keyword">or</span> higher) installation directory (optional) []: 
 Enter Java SDK (<span class="gmail-hljs-number">1.6</span> <span class="gmail-hljs-keyword">or</span> higher) installation directory (optional) [<span class="gmail-hljs-operator">/</span>Users<span class="gmail-hljs-operator">/</span>devanshvarshney<span class="gmail-hljs-operator">/</span>jdk<span class="gmail-hljs-operator">/</span>jdk<span class="gmail-hljs-number">-17.0</span><span class="gmail-hljs-number">.15</span><span class="gmail-hljs-operator">+</span><span class="gmail-hljs-number">6</span><span class="gmail-hljs-operator">/</span>Contents<span class="gmail-hljs-operator">/</span>Home]: 
 <span class="gmail-hljs-keyword">Default</span> output directory <span class="gmail-hljs-keyword">is</span> <span class="gmail-hljs-keyword">in</span> your HOME directory.
 Enter an existent directory if you prefer a different output directory (optional) [<span class="gmail-hljs-operator">/</span>Users<span class="gmail-hljs-operator">/</span>devanshvarshney]: 
 Automatic deployment <span class="gmail-hljs-keyword">of</span> UNO components (YES<span class="gmail-hljs-operator">/</span><span class="gmail-hljs-keyword">NO</span>) [YES]: 

 <span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span>
 <span class="gmail-hljs-operator">*</span> ... your SDK environment has been prepared.
 <span class="gmail-hljs-operator">*</span> <span class="gmail-hljs-keyword">For</span> <span class="gmail-hljs-keyword">each</span> <span class="gmail-hljs-type">time</span> you want <span class="gmail-hljs-keyword">to</span> use this configured SDK environment, you
 <span class="gmail-hljs-operator">*</span> have <span class="gmail-hljs-keyword">to</span> run the "setsdkenv_unix" script file<span class="gmail-hljs-operator">!</span>
 <span class="gmail-hljs-operator">*</span> Alternatively can you source <span class="gmail-hljs-keyword">one</span> <span class="gmail-hljs-keyword">of</span> the scripts
 <span class="gmail-hljs-operator">*</span>   "/Users/devanshvarshney/LibreOfficeDev26.2_SDK/Devanshs-MacBook-Pro.local/setsdkenv_unix.sh"
 <span class="gmail-hljs-operator">*</span> <span class="gmail-hljs-keyword">to</span> <span class="gmail-hljs-keyword">get</span> an environment <span class="gmail-hljs-keyword">without</span> starting a <span class="gmail-hljs-keyword">new</span> shell.
 <span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span>


 <span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span>
 <span class="gmail-hljs-operator">*</span>
 <span class="gmail-hljs-operator">*</span> SDK environment <span class="gmail-hljs-keyword">is</span> prepared <span class="gmail-hljs-keyword">for</span> MacOSX
 <span class="gmail-hljs-operator">*</span>
 <span class="gmail-hljs-operator">*</span> SDK <span class="gmail-hljs-operator">=</span> <span class="gmail-hljs-operator">/</span>Users<span class="gmail-hljs-operator">/</span>devanshvarshney<span class="gmail-hljs-operator">/</span>lode<span class="gmail-hljs-operator">/</span>dev<span class="gmail-hljs-operator">/</span>libreoffice<span class="gmail-hljs-operator">/</span>instdir<span class="gmail-hljs-operator">/</span>LibreOfficeDev26<span class="gmail-hljs-number">.2</span>_SDK
 <span class="gmail-hljs-operator">*</span> Office <span class="gmail-hljs-operator">=</span> <span class="gmail-hljs-operator">/</span>Applications<span class="gmail-hljs-operator">/</span>LibreOffice.app
 <span class="gmail-hljs-operator">*</span> Make <span class="gmail-hljs-operator">=</span> <span class="gmail-hljs-operator">/</span>Users<span class="gmail-hljs-operator">/</span>devanshvarshney<span class="gmail-hljs-operator">/</span>lode<span class="gmail-hljs-operator">/</span>opt<span class="gmail-hljs-operator">/</span>bin
 <span class="gmail-hljs-operator">*</span> Zip <span class="gmail-hljs-operator">=</span> <span class="gmail-hljs-operator">/</span>usr<span class="gmail-hljs-operator">/</span>bin
 <span class="gmail-hljs-operator">*</span> cat <span class="gmail-hljs-operator">=</span> <span class="gmail-hljs-operator">/</span>bin
 <span class="gmail-hljs-operator">*</span> sed <span class="gmail-hljs-operator">=</span> <span class="gmail-hljs-operator">/</span>usr<span class="gmail-hljs-operator">/</span>bin
 <span class="gmail-hljs-operator">*</span> C<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-operator">+</span> Compiler <span class="gmail-hljs-operator">=</span> <span class="gmail-hljs-operator">/</span>usr<span class="gmail-hljs-operator">/</span>bin
 <span class="gmail-hljs-operator">*</span> Dotnet <span class="gmail-hljs-operator">=</span> 
 <span class="gmail-hljs-operator">*</span> Java <span class="gmail-hljs-operator">=</span> <span class="gmail-hljs-operator">/</span>Users<span class="gmail-hljs-operator">/</span>devanshvarshney<span class="gmail-hljs-operator">/</span>jdk<span class="gmail-hljs-operator">/</span>jdk<span class="gmail-hljs-number">-17.0</span><span class="gmail-hljs-number">.15</span><span class="gmail-hljs-operator">+</span><span class="gmail-hljs-number">6</span><span class="gmail-hljs-operator">/</span>Contents<span class="gmail-hljs-operator">/</span>Home
 <span class="gmail-hljs-operator">*</span> SDK Output directory <span class="gmail-hljs-operator">=</span> <span class="gmail-hljs-operator">/</span>Users<span class="gmail-hljs-operator">/</span>devanshvarshney<span class="gmail-hljs-operator">/</span>LibreOfficeDev26<span class="gmail-hljs-number">.2</span>_SDK
 <span class="gmail-hljs-operator">*</span> Auto deployment <span class="gmail-hljs-operator">=</span> YES
 <span class="gmail-hljs-operator">*</span>
 <span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span>
[oh<span class="gmail-hljs-operator">-</span>my<span class="gmail-hljs-operator">-</span>zsh] Would you <span class="gmail-hljs-keyword">like</span> <span class="gmail-hljs-keyword">to</span> update? [Y<span class="gmail-hljs-operator">/</span>n] y
Updating Oh My Zsh

 Devanshs<span class="gmail-hljs-operator">-</span>MacBook<span class="gmail-hljs-operator">-</span>Pro    \lode\dev\libreoffice  ➜ (   poc_basic  <span class="gmail-hljs-number">3</span>)   <span class="gmail-hljs-number">17</span>ms   <span class="gmail-hljs-number">6</span>:<span class="gmail-hljs-number">53</span> PM   
 devanshvarshney ❯❯ source <span class="gmail-hljs-operator">~</span><span class="gmail-hljs-operator">/</span>LibreOfficeDev26<span class="gmail-hljs-number">.2</span>_SDK<span class="gmail-hljs-operator">/</span>Devanshs<span class="gmail-hljs-operator">-</span>MacBook<span class="gmail-hljs-operator">-</span>Pro.local<span class="gmail-hljs-operator">/</span>setsdkenv_unix.sh

 <span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span>
 <span class="gmail-hljs-operator">*</span>
 <span class="gmail-hljs-operator">*</span> SDK environment <span class="gmail-hljs-keyword">is</span> prepared <span class="gmail-hljs-keyword">for</span> MacOSX
 <span class="gmail-hljs-operator">*</span>
 <span class="gmail-hljs-operator">*</span> SDK <span class="gmail-hljs-operator">=</span> <span class="gmail-hljs-operator">/</span>Users<span class="gmail-hljs-operator">/</span>devanshvarshney<span class="gmail-hljs-operator">/</span>lode<span class="gmail-hljs-operator">/</span>dev<span class="gmail-hljs-operator">/</span>libreoffice<span class="gmail-hljs-operator">/</span>instdir<span class="gmail-hljs-operator">/</span>LibreOfficeDev26<span class="gmail-hljs-number">.2</span>_SDK
 <span class="gmail-hljs-operator">*</span> Office <span class="gmail-hljs-operator">=</span> <span class="gmail-hljs-operator">/</span>Applications<span class="gmail-hljs-operator">/</span>LibreOffice.app
 <span class="gmail-hljs-operator">*</span> Make <span class="gmail-hljs-operator">=</span> <span class="gmail-hljs-operator">/</span>Users<span class="gmail-hljs-operator">/</span>devanshvarshney<span class="gmail-hljs-operator">/</span>lode<span class="gmail-hljs-operator">/</span>opt<span class="gmail-hljs-operator">/</span>bin
 <span class="gmail-hljs-operator">*</span> Zip <span class="gmail-hljs-operator">=</span> <span class="gmail-hljs-operator">/</span>usr<span class="gmail-hljs-operator">/</span>bin
 <span class="gmail-hljs-operator">*</span> cat <span class="gmail-hljs-operator">=</span> <span class="gmail-hljs-operator">/</span>bin
 <span class="gmail-hljs-operator">*</span> sed <span class="gmail-hljs-operator">=</span> <span class="gmail-hljs-operator">/</span>usr<span class="gmail-hljs-operator">/</span>bin
 <span class="gmail-hljs-operator">*</span> C<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-operator">+</span> Compiler <span class="gmail-hljs-operator">=</span> <span class="gmail-hljs-operator">/</span>usr<span class="gmail-hljs-operator">/</span>bin
 <span class="gmail-hljs-operator">*</span> Dotnet <span class="gmail-hljs-operator">=</span> 
 <span class="gmail-hljs-operator">*</span> Java <span class="gmail-hljs-operator">=</span> <span class="gmail-hljs-operator">/</span>Users<span class="gmail-hljs-operator">/</span>devanshvarshney<span class="gmail-hljs-operator">/</span>jdk<span class="gmail-hljs-operator">/</span>jdk<span class="gmail-hljs-number">-17.0</span><span class="gmail-hljs-number">.15</span><span class="gmail-hljs-operator">+</span><span class="gmail-hljs-number">6</span><span class="gmail-hljs-operator">/</span>Contents<span class="gmail-hljs-operator">/</span>Home
 <span class="gmail-hljs-operator">*</span> SDK Output directory <span class="gmail-hljs-operator">=</span> <span class="gmail-hljs-operator">/</span>Users<span class="gmail-hljs-operator">/</span>devanshvarshney<span class="gmail-hljs-operator">/</span>LibreOfficeDev26<span class="gmail-hljs-number">.2</span>_SDK
 <span class="gmail-hljs-operator">*</span> Auto deployment <span class="gmail-hljs-operator">=</span> YES
 <span class="gmail-hljs-operator">*</span>
 <span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span><span class="gmail-hljs-operator">*</span>
 Devanshs<span class="gmail-hljs-operator">-</span>MacBook<span class="gmail-hljs-operator">-</span>Pro    \lode\dev\libreoffice  ➜ (   poc_basic  <span class="gmail-hljs-number">3</span>)   <span class="gmail-hljs-number">31</span>ms   <span class="gmail-hljs-number">7</span>:<span class="gmail-hljs-number">01</span> PM   
 devanshvarshney ❯❯ ls $PWD<span class="gmail-hljs-operator">/</span>workdir<span class="gmail-hljs-operator">/</span>UnoApiTarget<span class="gmail-hljs-operator">/</span>          
bridgetest.rdb              cppuhelper.rdb              performance.rdb
cppu_qa_cppumaker_types.rdb offapi.rdb                  scaddins.rdb
cppu_qa_types.rdb           oovbaapi.rdb                udkapi.rdb
 Devanshs<span class="gmail-hljs-operator">-</span>MacBook<span class="gmail-hljs-operator">-</span>Pro    \lode\dev\libreoffice  ➜ (   poc_basic  <span class="gmail-hljs-number">3</span>)   <span class="gmail-hljs-number">34</span>ms   <span class="gmail-hljs-number">7</span>:<span class="gmail-hljs-number">01</span> PM   
 devanshvarshney ❯❯ ls <span class="gmail-hljs-operator">-</span>l <span class="gmail-hljs-operator">~</span><span class="gmail-hljs-operator">/</span>LibreOfficeDev26<span class="gmail-hljs-number">.2</span>_SDK<span class="gmail-hljs-operator">/</span>                                                                   
total <span class="gmail-hljs-number">0</span>
drwxr<span class="gmail-hljs-operator">-</span>xr<span class="gmail-hljs-operator">-</span>x  <span class="gmail-hljs-number">3</span> devanshvarshney  staff  <span class="gmail-hljs-number">96</span> <span class="gmail-hljs-number">16</span> Jun <span class="gmail-hljs-number">18</span>:<span class="gmail-hljs-number">35</span> Devanshs<span class="gmail-hljs-operator">-</span>MacBook<span class="gmail-hljs-operator">-</span>Pro.local
drwxr<span class="gmail-hljs-operator">-</span>xr<span class="gmail-hljs-operator">-</span>x  <span class="gmail-hljs-number">3</span> devanshvarshney  staff  <span class="gmail-hljs-number">96</span> <span class="gmail-hljs-number">16</span> Jun <span class="gmail-hljs-number">18</span>:<span class="gmail-hljs-number">35</span> macosx
 Devanshs<span class="gmail-hljs-operator">-</span>MacBook<span class="gmail-hljs-operator">-</span>Pro    \lode\dev\libreoffice  ➜ (   poc_basic  <span class="gmail-hljs-number">3</span>)   <span class="gmail-hljs-number">34</span>ms   <span class="gmail-hljs-number">7</span>:<span class="gmail-hljs-number">15</span> PM   
 devanshvarshney ❯❯ ls <span class="gmail-hljs-operator">-</span>l <span class="gmail-hljs-operator">~</span><span class="gmail-hljs-operator">/</span>LibreOfficeDev26<span class="gmail-hljs-number">.2</span>_SDK<span class="gmail-hljs-operator">/</span>Devanshs<span class="gmail-hljs-operator">-</span>MacBook<span class="gmail-hljs-operator">-</span>Pro.local 
total <span class="gmail-hljs-number">24</span>
<span class="gmail-hljs-operator">-</span>rw<span class="gmail-hljs-operator">-</span>r<span class="gmail-hljs-comment">--r--  1 devanshvarshney  staff  9439 16 Jun 18:35 setsdkenv_unix.sh</span>
 Devanshs<span class="gmail-hljs-operator">-</span>MacBook<span class="gmail-hljs-operator">-</span>Pro    \lode\dev\libreoffice  ➜ (   poc_basic  <span class="gmail-hljs-number">3</span>)   <span class="gmail-hljs-number">112</span>ms   <span class="gmail-hljs-number">7</span>:<span class="gmail-hljs-number">35</span> PM   
 ⚡devanshvarshney ❯❯ unoidl<span class="gmail-hljs-operator">-</span>read $PWD<span class="gmail-hljs-operator">/</span>workdir<span class="gmail-hljs-operator">/</span>UnoApiTarget<span class="gmail-hljs-operator">/</span>udkapi.rdb $PWD<span class="gmail-hljs-operator">/</span>workdir<span class="gmail-hljs-operator">/</span>UnoApiTarget<span class="gmail-hljs-operator">/</span>offapi.rdb <span class="gmail-hljs-operator">></span> <span class="gmail-hljs-operator">~</span><span class="gmail-hljs-operator">/</span>gsoc_dumps<span class="gmail-hljs-operator">/</span>uno_offapi.UnoApiTarget.dump.txt 
 Devanshs<span class="gmail-hljs-operator">-</span>MacBook<span class="gmail-hljs-operator">-</span>Pro    \lode\dev\libreoffice  ➜ (   poc_basic  <span class="gmail-hljs-number">3</span>)   <span class="gmail-hljs-number">31</span>ms   <span class="gmail-hljs-number">7</span>:<span class="gmail-hljs-number">47</span> PM   
 ⚡devanshvarshney ❯❯ unoidl<span class="gmail-hljs-operator">-</span>read $PWD<span class="gmail-hljs-operator">/</span>workdir<span class="gmail-hljs-operator">/</span>Rdb<span class="gmail-hljs-operator">/</span>pyuno.rdb <span class="gmail-hljs-operator">></span> <span class="gmail-hljs-operator">~</span><span class="gmail-hljs-operator">/</span>gsoc_dumps<span class="gmail-hljs-operator">/</span>pyuno.rdb.dump.txt 
Bad input <span class="gmail-hljs-operator"><</span>file:<span class="gmail-hljs-operator">/</span><span class="gmail-hljs-operator">/</span><span class="gmail-hljs-operator">/</span>Users<span class="gmail-hljs-operator">/</span>devanshvarshney<span class="gmail-hljs-operator">/</span>lode<span class="gmail-hljs-operator">/</span>dev<span class="gmail-hljs-operator">/</span>libreoffice<span class="gmail-hljs-operator">/</span>workdir<span class="gmail-hljs-operator">/</span>Rdb<span class="gmail-hljs-operator">/</span>pyuno.rdb<span class="gmail-hljs-operator">></span>: cannot <span class="gmail-hljs-keyword">open</span> legacy file: <span class="gmail-hljs-number">6</span>
 Devanshs<span class="gmail-hljs-operator">-</span>MacBook<span class="gmail-hljs-operator">-</span>Pro    \lode\dev\libreoffice  ➜ (   poc_basic  <span class="gmail-hljs-number">3</span>)   <span class="gmail-hljs-number">65</span>ms   <span class="gmail-hljs-number">7</span>:<span class="gmail-hljs-number">48</span> PM   
 ⚡devanshvarshney ❯❯ unoidl<span class="gmail-hljs-operator">-</span>read $PWD<span class="gmail-hljs-operator">/</span>workdir<span class="gmail-hljs-operator">/</span>Rdb<span class="gmail-hljs-operator">/</span>saxparser.rdb <span class="gmail-hljs-operator">></span> <span class="gmail-hljs-operator">~</span><span class="gmail-hljs-operator">/</span>gsoc_dumps<span class="gmail-hljs-operator">/</span>saxparser.rdb.dump.txt 
Bad input <span class="gmail-hljs-operator"><</span>file:<span class="gmail-hljs-operator">/</span><span class="gmail-hljs-operator">/</span><span class="gmail-hljs-operator">/</span>Users<span class="gmail-hljs-operator">/</span>devanshvarshney<span class="gmail-hljs-operator">/</span>lode<span class="gmail-hljs-operator">/</span>dev<span class="gmail-hljs-operator">/</span>libreoffice<span class="gmail-hljs-operator">/</span>workdir<span class="gmail-hljs-operator">/</span>Rdb<span class="gmail-hljs-operator">/</span>saxparser.rdb<span class="gmail-hljs-operator">></span>: cannot <span class="gmail-hljs-keyword">open</span> legacy file: </code><br></pre></span><br></div><div dir="ltr"><span class="gmail-ng-star-inserted"><br></span></div><div dir="ltr"><span class="gmail-ng-star-inserted">I hope this detailed Q&A is helpful for everyone following the project!</span></div><div><span class="gmail-ng-star-inserted" style="font-family:arial,sans-serif"><span class="gmail_default">I have also attached the generated UNO Static Dump </span></span><span class="gmail-ng-star-inserted" style="font-family:arial,sans-serif"><span class="gmail_default">txt</span></span><span class="gmail-ng-star-inserted" style="font-family:arial,sans-serif"><span class="gmail_default"> Files.</span></span></div><div><span class="gmail-ng-star-inserted" style="font-family:arial,sans-serif"><span class="gmail_default"><br></span></span></div><div><span class="gmail-ng-star-inserted" style="font-family:monospace"><span class="gmail_default"><b>Dynamic PoCs are here</b> </span></span><a href="https://gerrit.libreoffice.org/c/core/+/186475"><span style="font-family:monospace">https://gerrit.libreoffice.org/c/core/+/186475</span></a></div><div><br></div><div><span class="gmail_default" style="font-family:monospace"><b>Initial implementation</b> </span><a href="https://gerrit.libreoffice.org/c/core/+/185362"><span style="font-family:monospace">https://gerrit.libreoffice.org/c/core/+/185362</span></a></div><div><div style="font-family:comic sans ms,sans-serif" class="gmail_default"><span style="font-family:arial,sans-serif">I will also share the updated Master Analyzer ODS soon.</span></div></div><div dir="ltr"><p class="gmail-ng-star-inserted"><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"></span></p><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"><pre><code><b>Initial mail</b>
<a href="https://lists.freedesktop.org/archives/libreoffice/2025-May/093264.html">https:<span class="gmail-hljs-comment">//lists.freedesktop.org/archives/libreoffice/2025-May/093264.html</span></a>

<b>Week <span class="gmail-hljs-number">1</span> mail</b>
<a href="https://lists.freedesktop.org/archives/libreoffice/2025-May/093280.html">https:<span class="gmail-hljs-comment">//lists.freedesktop.org/archives/libreoffice/2025-May/093280.html</span></a>

<b>Week <span class="gmail-hljs-number">2</span> and <span class="gmail-hljs-number">3</span> mail</b>
<a href="https://lists.freedesktop.org/archives/libreoffice/2025-June/093362.html">https:<span class="gmail-hljs-comment">//lists.freedesktop.org/archives/libreoffice/2025-June/093362.html</span></a></code></pre></span><br><p class="gmail-ng-star-inserted"><span><span class="gmail-ng-star-inserted">Thank you again for the pointer. It was exactly the clue I needed to understand</span><br class="gmail-ng-star-inserted"><span class="gmail-ng-star-inserted"></span><span class="gmail-ng-star-inserted">the toolchain and make real progress on the data-gathering phase.</span></span></p><div class="gmail_default" style="font-family:comic sans ms,sans-serif"><div><span style="font-family:monospace"><b>Regards,</b></span></div><div><span style="font-family:monospace;color:rgb(153,0,255)"><b>Devansh</b></span></div><br></div></div><div><br></div><div><br></div><div><br></div><div><br></div><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Mon, 16 Jun 2025 at 17:34, Regis Perdreau <<a href="mailto:regis.perdreau@gmail.com">regis.perdreau@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Hi</div><div><br><a href="https://api.libreoffice.org/docs/tools.html" target="_blank">https://api.libreoffice.org/docs/tools.html</a></div><div><div dir="ltr" class="gmail_signature">"'unoidl-write' is the new UNOIDL compiler, replacing the former idlc and regmerge tools. "</div><div dir="ltr" class="gmail_signature"><br></div><div class="gmail_signature">So idlc and regmerge still relevant ?</div><div class="gmail_signature"><br></div><div class="gmail_signature">Bests,</div><div dir="ltr" class="gmail_signature"><br></div><div dir="ltr" class="gmail_signature"><br></div><div dir="ltr" class="gmail_signature">Régis Perdreau<br><br></div></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le lun. 16 juin 2025 à 13:38, Regis Perdreau <<a href="mailto:regis.perdreau@gmail.com" target="_blank">regis.perdreau@gmail.com</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Hi all,</div><div><br>Tanks for this work.</div><div><br></div><div>Bests,</div><div><div dir="ltr" class="gmail_signature"><br>Régis Perdreau<br><br></div></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le lun. 16 juin 2025 à 13:21, Devansh Varshney <<a href="mailto:varshney.devansh614@gmail.com" target="_blank">varshney.devansh614@gmail.com</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi everyone,<br><br><div>T<span style="font-family:arial,sans-serif">h<span class="gmail_default">is</span></span> week has been one of the best learning<span class="gmail_default" style="font-family:comic sans ms,sans-serif"> </span>experiences for me,</div><div>especially digging into the "behind-the-scenes" of<span class="gmail_default" style="font-family:comic sans ms,sans-serif"></span><span class="gmail_default" style="font-family:arial,sans-serif"> </span><span style="font-family:arial,sans-serif">L</span>ibreOffice's UNO APIs.</div><br>My initial work (<a href="https://gerrit.libreoffice.org/c/core/+/185362" target="_blank">Gerrit 185362</a>) was a first step, but feedback from my<br>mentors in our meetings provided a crucial directive: first, figure out<br>how to get the data. Before we can build a great auto-completion system,<br>we need a deep, proven understanding of where all the information (for<br>BASIC, UNO, ScriptForge, etc.) lives and how to access it programmatically.<br><br>This led to a fascinating dive into the UNO data pipeline.<br><br><b><u><font size="4">Understanding the UNO Data Pipeline: From IDL to Runtime</font></u></b><br>For anyone curious about how UNO works under the hood, here's a breakdown of<br>what I've learned. It's a pipeline that turns human-readable API definitions<br>into an efficient system the application uses at runtime.<br><br>    <span class="gmail_default" style="font-family:comic sans ms,sans-serif"></span><b>IDL</b> <b>(Interface Definition Language):</b> This is the source of truth for all<br>   <b> </b>UNO APIs. These .idl text files define every service, interface, method,<br>    property, struct, and enum.<br>        <b>Locations: udkapi/</b> (core types) & <b>offapi/ </b>(office-specific types).<br><br>    <b>idlc & regmerge:</b> During the build, idlc (the IDL Compiler)<br>    compiles .idl files into intermediate binary .urd files. Then,<br>    regmerge combines these into .rdb (Registry Database) files.<br><br>    <b>.rdb Files:</b> These are the optimized binary databases that LibreOffice<br>    loads at startup. Key files include types.rdb (from udkapi.rdb etc.),<br>    services.rdb, and offapi.rdb. This is an installation artifact,<br>    not a source file, which clarified my initial search!<br><br>   <b> theCoreReflection:</b> At runtime, this powerful UNO service provides<br>    live, programmatic access to all the type information that was loaded<br>    from the .rdb files.<br><br>   <b> regview Tool:</b> A command-line tool (registry/tools/regview.cxx)<br>    designed to dump the contents of an .rdb file. My initial attempts<br>    to use this was unsuccessful, which, along with mentor guidance, led us to<br>    pivot our strategy.<br><br>    <b>SbUnoObject & XIntrospectionAccess:</b> The bridge in BASIC for<br>    interacting with live UNO objects, using dynamic introspection to<br>    discover their capabilities.<br><br><div><u>A simplified flow of this pipeline looks like this:</u></div><div><br></div><div><span style="font-family:arial,sans-serif"><b>.idl Files</b>    --(idlc)-->   <b>.urd Files</b>    --(regmerge)-->   <span class="gmail_default">   </span></span><b><span style="font-family:arial,sans-serif">.</span>rdb Files</b><br>(Source of Truth)         (Binary intermediate)           (Loaded by LO Runtime)<br><span class="gmail_default" style="font-family:comic sans ms,sans-serif"></span>                                                        <span style="font-family:arial,sans-serif">     <span class="gmail_default">                       </span><span class="gmail_default"></span><span class="gmail_default"> </span>  </span>  |<br> <span style="font-family:arial,sans-serif">                                                   <span class="gmail_default">                       </span>           <span class="gmail_default"> </span>  v<br>                                                <span class="gmail_default"> </span>   <span class="gmail_default">                    </span>  </span><LO Runtime Type System><br>                                        <span style="font-family:arial,sans-serif">          <span class="gmail_default">                 </span>  </span>(Accessible via theCoreReflection)<br>             <span style="font-family:arial,sans-serif">                                                 <span class="gmail_default">                       </span>   ^<br>                                                            <span class="gmail_default">                       </span>     | (R</span>eads .rdb)<br>                       <span style="font-family:arial,sans-serif">                                  <span class="gmail_default">                    </span>  <b>regview Tool</b><br>                                                            <span class="gmail_default">                      </span>     |<br>                                                          <span class="gmail_default">                      </span>       v<br>                                                     <span class="gmail_default">                 </span>     <Textual Du</span>mp></div><div><br></div><div><br></div><div><b><font size="4"><u>Understanding ScriptForge (wizards/source/scriptforge/)</u></font></b><br><br>I also looked into ScriptForge, which is crucial for modern BASIC scripting.<br><a href="https://gerrit.libreoffice.org/c/core/+/164867" target="_blank">https://gerrit.libreoffice.org/c/core/+/164867</a><br><span style="font-family:arial,sans-serif">   <span class="gmail_default">-</span> <b>.xlb files</b> are XML manifests listing the libraries.<br>   <span class="gmail_default">-</span> <b>.xba files </b>are ZIP-like packages containing the actual .bas source modules.<br>   <span class="gmail_default">-</span> <b>.pyi file</b> is a</span> Python stub that provides type hints to Python IDEs for<br>    auto-completion. As Rafael Lima mentioned, this might be manually created,<br>    making it a great model for the kind of rich API definition we want to<br>    achieve for BASIC.<br><br><u>How its information becomes available:</u></div><div><span style="font-family:arial,sans-serif"><br></span></div><div><span style="font-family:arial,sans-serif"><b>.bas files (inside .xba packages listed in .xlb)</b><br><span class="gmail_default"></span>  <span class="gmail_default"></span><span class="gmail_default">                 </span>  |<br>   <span class="gmail_default">                </span> v (Loaded by BasicManager/StarBASIC)<br><span class="gmail_default"></span><b><SbModule objects with source code></b><br>  <span class="gmail_default">                </span>  |<br>   <span class="gmail_default">               </span> v (Compiled by SbiParser)<b><br><SbMethod, SbxVariable symbols within the SbModule></b><br><br><span class="gmail_default">            </span><u>--- Parallel path for Python tooling ---</u><br><b>.pyi file (wizards/source/scriptforge/python/scriptforge.pyi)</b><br>    <span class="gmail_default">                    </span>|<br>   <span class="gmail_default">                   </span> v (Read by Python IDEs)<b><br><Type hints for Python auto-completion></b></span></div><div><br></div><div><br></div><div><b><u><font size="4">From Static File Parsing to C++ PoCs</font></u></b><br><br>Given the complexities of parsing static RDB/IDL files directly, and the<br>clear guidance from Meeting 3, our immediate focus has shifted. The new<br>priority is to write C++ Proof-of-Concept (PoC) code to programmatically<br>gather data and get this code onto Gerrit for review.<br><br>I'm very excited to share that the first two PoCs are complete<span class="gmail_default" style="font-family:comic sans ms,sans-serif"></span><span class="gmail_default" style="font-family:arial,sans-serif">.</span><br>Gerrit Patch:<a href="https://gerrit.libreoffice.org/c/core/+/186475" target="_blank"> https://gerrit.libreoffice.org/c/core/+/186475</a><br>This patch contains the CppUnit tests for these experiments.<br><br><b><u><font size="2">UNO Services and Memes<span class="gmail_default" style="font-family:arial,sans-serif"> </span><span class="gmail_default" style="font-family:arial,sans-serif">-</span><span style="font-family:arial,sans-serif"> </span>Why Context Comes First</font></u></b><br>So for example I’ve seen this happen a lot on social media. There’s a meme<br>going around, people are laughing, sharing it, reacting to it… and then there’s<br>always someone in the comments asking:<br>"What’s the context behind this?"<br><br>I mean, I’ve done it too. Sometimes you just miss the reference, maybe it’s<br>from a movie, or some political moment, or even a viral soundbite. Without the<br>context, it’s just a picture or a clip. You don’t get why it’s funny, why it<span class="gmail_default" style="font-family:arial,sans-serif"> </span><span style="font-family:arial,sans-serif">hi</span>ts.<br><br><u>And then someone replies and goes:</u><br>"Oh, this is from Interstellar, that scene where Cooper watches years of<br>messages after time dilation."<br><br>Now it starts to click. <i>That context sets the stage</i>.<br><br><u>Then maybe another reply adds:</u><br>"Yeah, and the reason it’s funny here is because someone compared it to<br>missing one lecture and coming back to find the whole syllabus changed."<br><br>So first you got the context, then someone gave the reference point, say, the<br>movie and then you dove into the details: the exact scene, the emotion, the<br>punchline. That’s what makes it all land.<br><br>And honestly, that’s how I see working with UNO services too.<br><br>In our PoC, we had to first get the component context otherwise we’re just<br>floating, not grounded in the current state of the app. Once we had that, we<br>could ask for something like com.sun.star.reflection.CoreReflection, and only<br>then could we start introspecting the real details, interfaces, methods,<br>enums, all the building blocks.<br><br><u>It’s kind of beautiful how that maps:</u><br><b>Context</b> → <b>“Where am I?”</b><br><b>Service</b> → <b>“What am I working with?”</b><br><b>Introspection</b> → <b>“What can this thing do?”</b><br><br>And just like in memes, without context, the rest doesn’t mean much.<br>Funny enough, this whole idea of “context” is even a thing in frameworks like<br>React or Java. So maybe context is more universal than we think<span class="gmail_default" style="font-family:comic sans ms,sans-serif"></span>.<br><font size="2"><br><b><u>Summary of C++ Proof-of-Concepts (PoCs)</u></b></font><br>Here's a breakdown of the PoCs I've implemented in the Gerrit patch:<br><br><b>PoC 1: Listing All Available UNO Service Names</b><br>    <b>Concept:</b> Queries the <i>XMultiComponentFactory</i> (Service Manager) to get<br>    all creatable UNO service names.<br>    <b>Source:</b> comphelper/processfactory.hxx (getProcessServiceManager()).<br><span style="font-family:arial,sans-serif"> <b>   Task:</b><br>      <span class="gmail_default">-</span>  Get XComponentContext.<br>      <span class="gmail_default">-</span>  Get XMultiComponentFactory.<br>      <span class="gmail_default">-</span>  Call getAvailableServiceNames().<br>      <span class="gmail_default">-</span>  Log each service name.</span><br>    <b>Result:</b> Successfully dumped service names.<br><br><b>PoC 2: Introspecting Specific UNO Definitions via theCoreReflection</b><br>    <b>Concept:</b> <i>theCoreReflection</i> provides access to the complete in-memory<br>    type information that LibreOffice loaded from its RDBs.<br>    <b>Source</b>: com.sun.star.reflection.theCoreReflection, XIdlClass, etc.<br>    (implementation in <a href="https://git.libreoffice.org/core/+/refs/heads/master/stoc" target="_blank">stoc/source/</a>).<br>    <b>Task:</b><br>   <span style="font-family:arial,sans-serif">     <span class="gmail_default">- </span>Get theCoreReflection instance.<br>        <span class="gmail_default">- </span>For a list of key type names (XModel, XSpreadsheet, PropertyValue, etc.):<br>        <span class="gmail_default">- </span>Call forName(sTypeName) to get its XIdlClass blueprint.<br>        <span class="gmail_default">- </span>Dump all details: superclasses, methods (with full parameter info),<br>        <span class="gmail_default">   </span>properties, struct fields, and enum members.<br>    <b>Result:</b> <span class="gmail_default"></span><span class="gmail_default">E</span>xtracted rich, detailed API definitions. This</span><br>    proves we can get the data needed for Parameter Info and accurate dot-completion.<br><br><a href="https://gerrit.libreoffice.org/c/core/+/186475/4/basic/uno_available_services_cpp_dump.txt" target="_blank">https://gerrit.libreoffice.org/c/core/+/186475/4/basic/uno_available_services_cpp_dump.txt</a><br><br><b><u>Next Steps: Diving into BASIC Internals</u></b><br><br>With the UNO data access path validated, the next focus is on BASIC itself.<br><br>    <b>PoC 3 (In Progress): The MsgBox Deep Dive</b><br>        My current task is to trace <b>MsgBox</b> from its user-facing documentation<br>        (both LO and MSO) down to its C++ implementation<br>        (<b>SbRtl_MsgBox in basic/source/runtime/methods.cxx</b>). This will help<br>        us understand how to handle built-in functions and their often-implicit<br>        parameter signatures.<br><br>    <b>Future PoC: Parser Symbol Extraction</b><br>        After MsgBox, the plan is to write a C++ PoC that interacts with the<br>        SbiParser to extract its internal symbol tables (SbiSymPool) for<br>        user-defined code.<br><br>A mentor's comment, <b>"We have a cppumaker, etc., and why not a basicmaker?"</b>,<br>really resonated with me. It highlights that our ultimate goal is to create<br>a powerful "analyzer" for BASIC that provides the same level of rich,<br>structured information for our IDE tools as other "makers" do for their<br>respective languages.<span class="gmail_default" style="font-family:arial,sans-serif"> And yes I have to speed up stuff.</span><br><br>Thanks for following this<span class="gmail_default" style="font-family:comic sans ms,sans-serif">.</span></div><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><span style="font-family:monospace"><b>Regards,</b></span></div><div><span style="font-family:monospace;color:rgb(153,0,255)"><b>Devansh</b></span><br></div></div></div></div>
</blockquote></div>
</blockquote></div>
</blockquote></div><div><br clear="all"></div><br><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><span style="font-family:monospace"><b>Regards,</b></span></div><div><span style="font-family:monospace;color:rgb(153,0,255)"><b>Devansh</b></span><br></div></div></div></div>