# Using rb\_str\_insert from c

**URL:** <https://www.ruby-forum.com/t/using-rb-str-insert-from-c/61432>\
**Category:** Ruby\
**Created:** [May 24, 2006, 12:29am UTC](https://www.ruby-forum.com/t/using-rb-str-insert-from-c/61432 "2006-05-24T00:29:28Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![splashlin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/90db22/32.png) [@splashlin](https://www.ruby-forum.com/u/splashlin)\
**Post date:** [May 24, 2006, 12:29am UTC](https://www.ruby-forum.com/t/using-rb-str-insert-from-c/61432/1 "2006-05-24T00:29:28Z")

</div>

Hi all,

The function:

static VALUE rb\_str\_insert(VALUE, VALUE, VALUE)

is defined in string.c but is static and so is not avalible to me to  
call  
directly on my string. I have a feeling rb\_funcall is my answer but I  
can’t  
find any decent documentation on getting the functions ID.

Can anyone help?

Cheers,  
Phil

---

<div class="post-metadata">

**Author:** ![splashlin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/90db22/32.png) [@splashlin](https://www.ruby-forum.com/u/splashlin)\
**Post date:** [May 24, 2006, 12:39am UTC](https://www.ruby-forum.com/t/using-rb-str-insert-from-c/61432/2 "2006-05-24T00:39:21Z")

</div>

Phil J. wrote:

> Can anyone help?
> 
> Cheers,  
> Phil

Offhand I think this will work:

id\_insert = rb\_intern(“insert”); // you can do this once

rb\_funcall(str, id\_insert, 2, idx, str2);

---

<div class="post-metadata">

**Author:** ![splashlin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/90db22/32.png) [@splashlin](https://www.ruby-forum.com/u/splashlin)\
**Post date:** [May 24, 2006, 1:13am UTC](https://www.ruby-forum.com/t/using-rb-str-insert-from-c/61432/3 "2006-05-24T01:13:46Z")

</div>

On Wed, May 24, 2006 at 07:37:21 +0900, Joel VanderWerf wrote:

> id\_insert = rb\_intern(“insert”); // you can do this once
> 
> rb\_funcall(str, id\_insert, 2, idx, str2);

You were spot-on, the mistake I was making was:

ID id = rb\_intern(“insert”);  
rb\_funcall(cur\_str, id, 3, cur\_str, idx, str2);

Which I guess would be the Ruby equivilent of:

str.insert(str, 1, “hello world”)

Thanks,  
Phil

---

<div class="post-metadata">

**Author:** ![splashlin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/90db22/32.png) [@splashlin](https://www.ruby-forum.com/u/splashlin)\
**Post date:** [May 24, 2006, 1:23am UTC](https://www.ruby-forum.com/t/using-rb-str-insert-from-c/61432/4 "2006-05-24T01:23:12Z")

</div>

Hi,

At Wed, 24 May 2006 07:27:21 +0900,  
Phil J. wrote in [ruby-talk:194275]:

> The function:
> 
> static VALUE rb\_str\_insert(VALUE, VALUE, VALUE)
> 
> is defined in string.c but is static and so is not avalible to me to call  
> directly on my string. I have a feeling rb\_funcall is my answer but I can’t  
> find any decent documentation on getting the functions ID.

If you are responsible to the arguments, rb\_str\_update() might  
be an answer.
