<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Preventing access to internal library subroutines in Intel® Fortran Compiler</title>
    <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Preventing-access-to-internal-library-subroutines/m-p/883542#M76027</link>
    <description>&lt;DIV style="margin:0px;"&gt;There is no way to prevent someone from calling a routine in a static library. Typically what one would do is choose a naming convention that separates the private routines from the public ones.&lt;/DIV&gt;
&lt;DIV style="margin:0px;"&gt;&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV style="margin:0px;"&gt;Of course, of you provide your procedures in modules, you can use Fortran's accessibility attributes (PUBLIC/PRIVATE) to specify that everything is private unless made public. This affects users of the module - theoretically, if someone figured out the private routine name and wrote their own interface (without using the module), they could call it.&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;</description>
    <pubDate>Fri, 12 Dec 2008 23:44:39 GMT</pubDate>
    <dc:creator>Steven_L_Intel1</dc:creator>
    <dc:date>2008-12-12T23:44:39Z</dc:date>
    <item>
      <title>Preventing access to internal library subroutines</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Preventing-access-to-internal-library-subroutines/m-p/883537#M76022</link>
      <description>&lt;P&gt;I apologize if this question has already been asked and answered before... I would like to know how to prevent future users of my libraries to call someinternal subroutines in these libraries.&lt;/P&gt;
&lt;P&gt;For instance, assume that I have two subroutines S_PUBLIC and S_PRIVATE in a library. S_PUBLIC is meant for usage by customer's codes; S_PRIVATE is a utility subroutine that is used by S_PUBLIC but which should not be accessed outside the library.&lt;/P&gt;
&lt;P&gt;How would I enforce this?&lt;/P&gt;
&lt;P&gt;Thank you!&lt;/P&gt;
&lt;P&gt;Olivier&lt;/P&gt;</description>
      <pubDate>Fri, 12 Dec 2008 18:26:26 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Preventing-access-to-internal-library-subroutines/m-p/883537#M76022</guid>
      <dc:creator>OP1</dc:creator>
      <dc:date>2008-12-12T18:26:26Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing access to internal library subroutines</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Preventing-access-to-internal-library-subroutines/m-p/883538#M76023</link>
      <description>&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR /&gt;I suppose you would put the private subroutine in a module and declare it private.&lt;/P&gt;</description>
      <pubDate>Fri, 12 Dec 2008 19:58:43 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Preventing-access-to-internal-library-subroutines/m-p/883538#M76023</guid>
      <dc:creator>TimP</dc:creator>
      <dc:date>2008-12-12T19:58:43Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing access to internal library subroutines</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Preventing-access-to-internal-library-subroutines/m-p/883539#M76024</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="margin-top: 5px; width: 100%;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/367365"&gt;tim18&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;
&lt;P&gt;&lt;BR /&gt;I suppose you would put the private subroutine in a module and declare it private.&lt;/P&gt;
&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&lt;BR /&gt;Thanks Tim... yes, this solution would work if you only have a limited number of small subroutines. But this is not convenient when you have a lot of large subroutines... the resulting module would be unwieldy for later maintenance, upgrades etc...&lt;/P&gt;
&lt;P&gt;Is there another solution?&lt;/P&gt;
&lt;P&gt;For instance, I am sure that the MKL libraries refer to many internal subroutines that one cannot access when these libraries are linked in a program. How is it done?&lt;/P&gt;
&lt;P&gt;Olivier&lt;/P&gt;</description>
      <pubDate>Fri, 12 Dec 2008 20:17:34 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Preventing-access-to-internal-library-subroutines/m-p/883539#M76024</guid>
      <dc:creator>OP1</dc:creator>
      <dc:date>2008-12-12T20:17:34Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing access to internal library subroutines</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Preventing-access-to-internal-library-subroutines/m-p/883540#M76025</link>
      <description>&lt;DIV style="margin:0px;"&gt;Make it a dynamic link library and only export the public symbols?&lt;/DIV&gt;
&lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 12 Dec 2008 20:22:41 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Preventing-access-to-internal-library-subroutines/m-p/883540#M76025</guid>
      <dc:creator>anthonyrichards</dc:creator>
      <dc:date>2008-12-12T20:22:41Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing access to internal library subroutines</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Preventing-access-to-internal-library-subroutines/m-p/883541#M76026</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="margin-top: 5px; width: 100%;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/341673"&gt;anthonyrichards&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;
&lt;DIV style="margin:0px;"&gt;Make it a dynamic link library and only export the public symbols?&lt;/DIV&gt;
&lt;P&gt;&lt;/P&gt;
&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&lt;BR /&gt;Yes, but what about static libraries? There is no equivalent facility provided for static libraries?&lt;/P&gt;</description>
      <pubDate>Fri, 12 Dec 2008 21:31:10 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Preventing-access-to-internal-library-subroutines/m-p/883541#M76026</guid>
      <dc:creator>OP1</dc:creator>
      <dc:date>2008-12-12T21:31:10Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing access to internal library subroutines</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Preventing-access-to-internal-library-subroutines/m-p/883542#M76027</link>
      <description>&lt;DIV style="margin:0px;"&gt;There is no way to prevent someone from calling a routine in a static library. Typically what one would do is choose a naming convention that separates the private routines from the public ones.&lt;/DIV&gt;
&lt;DIV style="margin:0px;"&gt;&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV style="margin:0px;"&gt;Of course, of you provide your procedures in modules, you can use Fortran's accessibility attributes (PUBLIC/PRIVATE) to specify that everything is private unless made public. This affects users of the module - theoretically, if someone figured out the private routine name and wrote their own interface (without using the module), they could call it.&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;</description>
      <pubDate>Fri, 12 Dec 2008 23:44:39 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Preventing-access-to-internal-library-subroutines/m-p/883542#M76027</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2008-12-12T23:44:39Z</dc:date>
    </item>
  </channel>
</rss>

