gen "\tjs->$usuc->tvUsec = src->$_.tv_usec;\n";
} elsif ($ft eq 'string') {
gen "\tjs->$usuc = soap_strdup(soap,src->$_);\n";
+ } elsif ($f->{null}) {
+ gen qq{
+! if (src->$_ == $f->{null}) js->$usuc = NULL;
+! else {
+! js->$usuc = soap_malloc(soap,sizeof *js->$usuc);
+! *js->$usuc = src->$_;
+! }
+};
} else { gen "\tjs->$usuc = src->$_;\n"; }
}
@@@}
} elsif ($ft eq 'string') {
gen "\tdest->$_ = src->$usuc;\n";
gen "\tsoap_unlink(soap,src->$usuc);\n";
+ } elsif ($f->{null}) {
+ gen "\tdest->$_ = (src->$usuc) ? *(src->$usuc) : $f->{null};\n";
} else {
gen "\tdest->$_ = src->$usuc;\n";
}
bool cream_cancelling Cancellation request in process
int cream_cpu_time Consumed CPU time
int cream_jw_status Users jw_status enum
+ _null_ -1
_pad_ 30
}
my $comment = getComment $f;
+# XXX: if null value is specified, the field can be optional
if ($name eq 'stateEnterTimes' || $name eq 'childrenHist') {
# XXX: stateEnterTimes and childrenHist are the only case of enum-indexed array
gen qq{
};
}
else {
-# XXX: currently nothing is "optional" as we don't know from status.T
+# orig XXX: currently nothing is "optional" as we don't know from status.T
+# XXX: if null is defined, the field is optional
+ my $opt = $f->{null} ? 'yes' : 'no';
gen qq{
-! <elem name="$name" type="$type" list="$list" optional="no">$comment</elem>
+! <elem name="$name" type="$type" list="$list" optional="$opt">$comment</elem>
};
}
}