# Ruby function calling c

**URL:** <https://www.ruby-forum.com/t/ruby-function-calling-c/120894>\
**Category:** Ruby\
**Created:** [November 21, 2007, 3:49pm UTC](https://www.ruby-forum.com/t/ruby-function-calling-c/120894 "2007-11-21T15:49:24Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![jturney](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e99b99/32.png) [@jturney](https://www.ruby-forum.com/u/jturney)\
**Post date:** [November 21, 2007, 3:49pm UTC](https://www.ruby-forum.com/t/ruby-function-calling-c/120894/1 "2007-11-21T15:49:24Z")

</div>

In this simple example, if I assign two Ruby functions to call the same  
C function:

rb\_define\_method(m\_rbTask, “prefix=”, RUBYCAST(rb\_prefix\_set), 1);  
rb\_define\_method(m\_rbTask, “scratch=”, RUBYCAST(rb\_prefix\_set), 1);

is there a way in rb\_prefix\_set to determine if the user used prefix= or  
scratch=?

Thanks,  
Justin

---

<div class="post-metadata">

**Author:** ![jturney](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e99b99/32.png) [@jturney](https://www.ruby-forum.com/u/jturney)\
**Post date:** [November 21, 2007, 10:14pm UTC](https://www.ruby-forum.com/t/ruby-function-calling-c/120894/2 "2007-11-21T22:14:20Z")

</div>

On Nov 21, 2007, at 06:49 , Justin T. wrote:

> In this simple example, if I assign two Ruby functions to call the  
> same  
> C function:
> 
> rb\_define\_method(m\_rbTask, “prefix=”, RUBYCAST(rb\_prefix\_set), 1);  
> rb\_define\_method(m\_rbTask, “scratch=”, RUBYCAST(rb\_prefix\_set), 1);
> 
> is there a way in rb\_prefix\_set to determine if the user used  
> prefix= or  
> scratch=?

def my\_caller  
caller[0][/`(.\*)’/, 1]  
end

And use rb\_funcall() to call my\_caller.

---

<div class="post-metadata">

**Author:** ![jturney](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e99b99/32.png) [@jturney](https://www.ruby-forum.com/u/jturney)\
**Post date:** [November 21, 2007, 10:20pm UTC](https://www.ruby-forum.com/t/ruby-function-calling-c/120894/3 "2007-11-21T22:20:12Z")

</div>

On Nov 21, 2007 3:49 PM, Justin T. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> In this simple example, if I assign two Ruby functions to call the same  
> C function:
> 
> rb\_define\_method(m\_rbTask, “prefix=”, RUBYCAST(rb\_prefix\_set), 1);  
> rb\_define\_method(m\_rbTask, “scratch=”, RUBYCAST(rb\_prefix\_set), 1);
> 
> is there a way in rb\_prefix\_set to determine if the user used prefix= or  
> scratch=?

See rb\_frame\_last\_func().

Laurent

---

<div class="post-metadata">

**Author:** ![jturney](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e99b99/32.png) [@jturney](https://www.ruby-forum.com/u/jturney)\
**Post date:** [November 21, 2007, 11:47pm UTC](https://www.ruby-forum.com/t/ruby-function-calling-c/120894/4 "2007-11-21T23:47:19Z")

</div>

Thanks for your help. This is exactly what I needed.

Justin
