Zig 0.17.0-dev (Split by item)
This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig library itself.
Zig › std/ › Build.zig › userValuesAreSame
userValuesAreSame
Build.userValuesAreSame
fn userValuesAreSame (lhs : UserValue , rhs : UserValue ) bool
File
Code
fn userValuesAreSame (lhs : UserValue , rhs : UserValue ) bool {
if (std .meta .activeTag (lhs ) != rhs ) return false ;
switch (lhs ) {
.flag => {},
.scalar => |lhs_scalar | {
const rhs_scalar = rhs .scalar ;
if (!std .mem .eql (u8 , lhs_scalar , rhs_scalar ))
return false ;
},
.list => |lhs_list | {
const rhs_list = rhs .list ;
if (lhs_list .items .len != rhs_list .items .len )
return false ;
for (lhs_list .items , rhs_list .items ) |lhs_list_entry , rhs_list_entry | {
if (!std .mem .eql (u8 , lhs_list_entry , rhs_list_entry ))
return false ;
}
},
.map => |lhs_map | {
const rhs_map = rhs .map ;
if (lhs_map .count () != rhs_map .count ())
return false ;
var lhs_it = lhs_map .iterator ();
while (lhs_it .next ()) |lhs_entry | {
const rhs_value = rhs_map .get (lhs_entry .key_ptr .*) orelse return false ;
if (!userValuesAreSame (lhs_entry .value_ptr .*.*, rhs_value .*))
return false ;
}
},
.lazy_path => |lhs_lp | {
const rhs_lp = rhs .lazy_path ;
return userLazyPathsAreTheSame (lhs_lp , rhs_lp );
},
.lazy_path_list => |lhs_lp_list | {
const rhs_lp_list = rhs .lazy_path_list ;
if (lhs_lp_list .items .len != rhs_lp_list .items .len ) return false ;
for (lhs_lp_list .items , rhs_lp_list .items ) |lhs_lp , rhs_lp | {
if (!userLazyPathsAreTheSame (lhs_lp , rhs_lp )) return false ;
}
return true ;
},
}
return true ;
}