# Informazione codice

**URL:** <https://www.ruby-forum.com/t/informazione-codice/174614>\
**Category:** IT\
**Created:** [August 29, 2009, 8:50pm UTC](https://www.ruby-forum.com/t/informazione-codice/174614 "2009-08-29T20:50:11Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![joxer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/f19dbf/32.png) [@joxer](https://www.ruby-forum.com/u/joxer)\
**Post date:** [August 29, 2009, 8:50pm UTC](https://www.ruby-forum.com/t/informazione-codice/174614/1 "2009-08-29T20:50:11Z")

</div>

Salve, spero di non essere off-topic in quanto c, ma chiedo lo stesso.  
Ho questo pezzo di codice preso da string.c dei source di ruby (ho preso  
il pezzo di codice a caso).  
Non capisco perche’ dopo rb\_str\_new ci siano delle righe di definizione  
delle variabili. Qualcuno sa spiegarmi cosa sono ? 😛

VALUE  
rb\_str\_new(ptr, len)  
const char \*ptr;  
long len;  
{  
return str\_new(rb\_cString, ptr, len);  
}

grazie, joxer

---

<div class="post-metadata">

**Author:** ![joxer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/f19dbf/32.png) [@joxer](https://www.ruby-forum.com/u/joxer)\
**Post date:** [August 29, 2009, 8:53pm UTC](https://www.ruby-forum.com/t/informazione-codice/174614/2 "2009-08-29T20:53:07Z")

</div>

Il giorno 29 agosto 2009 20.49, joxer[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha scritto:

> VALUE  
> rb\_str\_new(ptr, len)  
> const char \*ptr;  
> long len;  
> {  
> return str\_new(rb\_cString, ptr, len);  
> }

la funzione è tutta qui o c’è dell’altro?

pietro

---

<div class="post-metadata">

**Author:** ![joxer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/f19dbf/32.png) [@joxer](https://www.ruby-forum.com/u/joxer)\
**Post date:** [August 29, 2009, 9:03pm UTC](https://www.ruby-forum.com/t/informazione-codice/174614/3 "2009-08-29T21:03:39Z")

</div>

Pietro G. wrote:

> la funzione è tutta qui o c’è dell’altro?
> 
> pietro
> 
> * * *
> 
> Ml mailing list  
> removed\_email\_address@domain.invalid  
> [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)

ho preso questa funzione ad esempio. Tutte le altre sono strutturate  
allo stesso modo tipo:

VALUE  
rb\_str\_new5(obj, ptr, len)  
VALUE obj;  
const char \*ptr;  
long len;  
{  
return str\_new(rb\_obj\_class(obj), ptr, len);  
}

oppure :

static VALUE  
rb\_str\_length(str)  
VALUE str;  
{  
return LONG2NUM(RSTRING(str)-\>len);  
}

grazie, joxer

---

<div class="post-metadata">

**Author:** ![joxer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/f19dbf/32.png) [@joxer](https://www.ruby-forum.com/u/joxer)\
**Post date:** [August 29, 2009, 9:07pm UTC](https://www.ruby-forum.com/t/informazione-codice/174614/4 "2009-08-29T21:07:09Z")

</div>

Il giorno 29 agosto 2009 21.02, joxer[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha scritto:

> return str\_new(rb\_obj\_class(obj), ptr, len);

ok, la questione qui è come è definita la macro VALUE, senza di quella  
non so proprio che dire.

pietro

---

<div class="post-metadata">

**Author:** ![joxer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/f19dbf/32.png) [@joxer](https://www.ruby-forum.com/u/joxer)\
**Post date:** [August 30, 2009, 12:40am UTC](https://www.ruby-forum.com/t/informazione-codice/174614/5 "2009-08-30T00:40:50Z")

</div>

Pietro G. wrote:

> > long len;  
> > return LONG2NUM(RSTRING(str)-\>len);  
> > removed\_email\_address@domain.invalid  
> > [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)

VALUE e’ un tipo di dato nei source ruby

joxer

---

<div class="post-metadata">

**Author:** ![joxer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/f19dbf/32.png) [@joxer](https://www.ruby-forum.com/u/joxer)\
**Post date:** [August 29, 2009, 9:07pm UTC](https://www.ruby-forum.com/t/informazione-codice/174614/6 "2009-08-29T21:07:45Z")

</div>

joxer wrote:

> > >
> 
> ho preso questa funzione ad esempio. Tutte le altre sono strutturate  
> }  
> grazie, joxer

Mi rispondo da solo. Ho trovato che e’ una vecchia notazione del c ed e’  
equivalente a definire il tipo dentro le parentesi. Non so che vantaggio  
abbia o cosa altro.

grazie, joxer
