www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Checking C return results against NULL

reply "Laeeth Isharc" <laeethnospam spammenot_laeeth.com> writes:
Am I missing a more agreeable way to check the return value of a 
C function against NULL.  It's fine if it's a char*, but if it 
returns a pointer to some kind of struct, one has to go through 
and convert each instance of NULL to a cast of the appropriate 
return type.  Eg cast(funnystruct*)0

   if ((tomime_fields.fld_description==cast(char*)0))
     throw new Exception("show_part_info: description is NULL");
Dec 31 2014
parent reply Rikki Cattermole <alphaglosined gmail.com> writes:
On 1/01/2015 12:22 a.m., Laeeth Isharc wrote:
 Am I missing a more agreeable way to check the return value of a C
 function against NULL.  It's fine if it's a char*, but if it returns a
 pointer to some kind of struct, one has to go through and convert each
 instance of NULL to a cast of the appropriate return type.  Eg
 cast(funnystruct*)0

    if ((tomime_fields.fld_description==cast(char*)0))
      throw new Exception("show_part_info: description is NULL");
== for value is for pointers if (tomime_fields.fld_description is null) throw new Exception("...");
Dec 31 2014
parent reply Mike Parker <aldacron gmail.com> writes:
On 12/31/2014 8:29 PM, Rikki Cattermole wrote:
 On 1/01/2015 12:22 a.m., Laeeth Isharc wrote:
 Am I missing a more agreeable way to check the return value of a C
 function against NULL.  It's fine if it's a char*, but if it returns a
 pointer to some kind of struct, one has to go through and convert each
 instance of NULL to a cast of the appropriate return type.  Eg
 cast(funnystruct*)0
You can take your pick of these: if( !ptr ) ... if( ptr == null ) ... if( ptr is null ) ...
    if ((tomime_fields.fld_description==cast(char*)0))
      throw new Exception("show_part_info: description is NULL");
== for value is for pointers if (tomime_fields.fld_description is null) throw new Exception("...");
Actually, while 'is' does work for pointers, it's only necessary for references.
Dec 31 2014
parent "Laeeth Isharc" <Laeeth.nospam nospam-laeeth.com> writes:
Thanks for the help.

Laeeth
Dec 31 2014