[Coco] question C++

John Kent jekent at optusnet.com.au
Wed Mar 21 23:50:30 EDT 2012



On 22/03/2012 1:30 AM, Mark McDougall wrote:
> On 22/03/2012 12:03 AM, Luis Fernández wrote:
>
>> ANYONE can tell me the meaning&  here
>> write_buf (h, 1,&  val);
>
> The '&' is the 'address of' operator, so it passes the address of the 
> 'val' variable.
>
>> static void write_buf_const (dmk_handle h, int count, uint8_t val)
>> {
>>   while (count--)
>>     write_buf (h, 1, &val);
>> }
>
> This looks like it writes 'count' number of pad bytes of value 'val'.
>
> Regards,
>

val is passed on the stack to the write_buf_const procedure.
I assume dmk_handle is a type definition for a structure pointer type 
for the buffer.
"handle" I suspect refers to a pointer type.

so you might have something like

struct dmk_buff {
   unit8_t *inptr;
   unit8_t *outptr;
   int count;
   uint8_t buffer[MAX_BUF_SIZE]]
};

typdef struct dmk_buff *dmk_handle;

although the _t in uint8_t indicates that it is a type definition, and 
dmk_handle does not indicate it's a type definition, but I assume it is.

anyway .... what it seems to be doing is passing the address of val to 
the write_buf routine and the write_buf routine will access val via it's 
address passed as a pointer value . i.e.

void write_buf( dmk_handle h, int fill_count, uint8_t *valptr )
{
   int i;

   h->inptr = &h->buffer[h->count];
   for( i=0; i<fill_count; i++ )
   {
     *h->inptr++ = *valptr;
      h->count++;
   }
}


unit8_count will be 1.
write_buf will fetch val, using it's address and write it to the buffer 
via the input pointer

h->count mean that h is pointing to a structure contain a member 
variable "count".

I hope that's right.

John.

-- 
http://www.johnkent.com.au
http://members.optusnet.com.au/jekent




More information about the Coco mailing list