Hi,<br><br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="im"><br>
>      > +#define sql_GetIntegerColumn( A, B, C, D ) sql_GetColumn( A, B, C,<br>
>      SQL_INT, D )<br>
>      > +#define sql_GetDoubleColumn( A, B, C, D ) sql_GetColumn( A, B, C,<br>
>      SQL_DOUBLE, D )<br>
>      > +#define sql_GetTextColumn( A, B, C, D ) sql_GetColumn( A, B, C,<br>
>      SQL_TEXT, D )<br>
>      > +#define sql_GetBlobColumn( A, B, C, D ) sql_GetColumn( A, B, C,<br>
>      SQL_BLOB, D )<br>
>       I think more advanced wrapper would be helpful, they could completly<br>
>      hide sql_value_t.<br>
><br>
>     <br>
>    I'm not sure why one would want to hide the type of the value, because<br>
>    that was one of the reasons the prepared statement interface is being<br>
>    included. So that there may be stronger type checking.<br>
</div> That's why better wrappers will help.<br>
 Something like that for example:<br>
static inline int sql_GetColumnInteger( sql_t* p_sql, sql_stmt_t* p_stmt, int i_col, int *pi_res)<br>
{<br>
 sql_value_t v;<br>
 if(sql_GetColumn(..., &v))<br>
  return VLC_EGENERIC;<br>
 *pi_res = v.i_int;<br>
 return VLC_SUCCESS;<br>
}<br>
 It will make sure that you don't do a sql_GetColumnInteger(&v) and then uses<br>
v.dbl for example.<br></blockquote><br>
<div>I did this. But it seems to make the include a lot heavier. Not too heavy though. <br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">
> +    /** Bind parameters to a statement */<br>
</div>> +    int (*pf_bind) ( sql_t* p_sql, sql_stmt_t* p_stmt, sql_type_e type,<br>
> +                             sql_value_t* p_value, int i_pos );<br>
 How is p_value used ? As an input or as a pointer where the output value<br>
will be stored ? (If as an input, a const is probably needed).<br>
<div class="im"><br></div></blockquote><div><br>It's an input. const added. <br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">
> +<br>
> +    /** Get the datatype for a specified column */<br>
> +    int (*pf_gettype) ( sql_t* p_sql, sql_stmt_t* p_stmt, int i_col,<br>
> +                        sql_type_e* type );<br>
> +<br>
> +    /** Get the data from a specified column */<br>
</div>> +    int (*pf_getcolumn) ( sql_t* p_sql, sql_stmt_t* p_stmt, int i_col,<br>
> +                          sql_type_e type, sql_value_t *p_res );<br>
>  };<br>
 As a general remark, I don't think the order of the arguments of<br>
pf_bind/pf_gettype/pf_getcolumn are consistant (or I missed the logic).<br>
<br></blockquote><div><br>You're right. Fixed.<br><br>I've also made the other minor changes.<br></div></div><br clear="all"><br>-- <br>Regards,<br>Srikanth Raju<br>