Hi Tyron,<br><br>I don't know of any such function. You might get by with:<br><br>> listing all modules in your path with code:get_path().<br>> Filtering out the ones which you don't want (i.e. the ones which come with the Erlang distribution). Probably you'd use the $ERL_TOP environment variable if it's set or something.<br>
> Listing the beams in these directories and taking it from there basically.. i.e. you could then check using ModuleName:module_info(exports) or something... it's a DIY solution off the top of my head but it should work.<br>
<br>Hi Richard,<br><br>Of course, encapsulating the logic to handle gen_server messages in different functions and then delegating to them is a good idea... I just wanted to point out that there **might** be a reason to get access to one or more of a function's clauses (and that parse_transform/2 is probably the way to go about it).<br>
<br>cheers,<br>Justin<br><br><div class="gmail_quote">On 21 August 2012 08:23, Tyron Zerafa <span dir="ltr"><<a href="mailto:tyron.zerafa@gmail.com" target="_blank">tyron.zerafa@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hey,<div>    Thanks for your answers, I tried using xref and it is working perfectly, I am able to get both the local and remote functions which I am calling from a specific function. </div><div><br></div><div>I need to extract the function body for the following reasons. I need to transfer only the code that a function makes use of between nodes, nothing more. Xref is giving me the signature of all those functions that I need. Now, I want to use these signatures to extract the remaining body of the functions. </div>

<div><br></div><div>Another short question, is there any way in which I can differentiate whether a function comes from an Erlang release or not? Thus, if for example I ask is_native(io_lib,format,2) - > true, otherwise is_native(MyModule, MyFunction,0) -> false. I do not need to transfer functions which are native to Erlang and which can be found on any Erlang node.</div>

<div><br></div><div>Thanks again for your help</div><div><div><div class="h5"><br><div class="gmail_quote">On Tue, Aug 21, 2012 at 12:58 AM, Richard O'Keefe <span dir="ltr"><<a href="mailto:ok@cs.otago.ac.nz" target="_blank">ok@cs.otago.ac.nz</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><br>
On 21/08/2012, at 9:48 AM, Justin Calleja wrote:<br>
><br>
> Here's one instance that comes to mind with regards to wanting part of a function definition (i.e. just some of it's clauses):<br>
> When implementing a gen_server you handle synchronous requests using handle_call/3. You might just want the implementation of handle_call/3 which deals with certain messages.<br>
<br>
</div>Yes, but that part<br>
 - might be more than one clause<br>
 - which need not be contiguous in the function<br>
 - and some or all of them might be shared with the handling<br>
   of other messages.<br>
<br>
It is possible to deliberately construct a function as a<br>
collection of clauses with small non-overlapping heads that<br>
simply redirect to other functions, so that it would make<br>
sense to extract part of _that_ function, and you would<br>
do so *not* by extracting the clause but by simply picking<br>
up the entire function that it delegates to.<br>
<br>
That doesn't mean it makes sense to extract part of a<br>
function that wasn't written to be treated that way.<br>
<br>
<br>
</blockquote></div><br><br clear="all"><div><br></div></div></div><span class="HOEnZb"><font color="#888888">-- <br>Best Regards,<div>Tyron Zerafa</div><br>
</font></span></div>
</blockquote></div><br>