diff options
author | Niall Sheridan <nsheridan@gmail.com> | 2016-06-06 00:55:30 +0100 |
---|---|---|
committer | Niall Sheridan <nsheridan@gmail.com> | 2016-06-06 00:55:30 +0100 |
commit | a18a13fb09eac00cdacf1f74080524182b7243de (patch) | |
tree | bcf982d0054f0b86c01f93fe095633568aacfea8 /vendor/github.com/aws/aws-sdk-go/aws/awsutil/equal.go | |
parent | b8af9fe60f27353bdd5933ed37508b30d4290046 (diff) |
update vendor
Diffstat (limited to 'vendor/github.com/aws/aws-sdk-go/aws/awsutil/equal.go')
-rw-r--r-- | vendor/github.com/aws/aws-sdk-go/aws/awsutil/equal.go | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/awsutil/equal.go b/vendor/github.com/aws/aws-sdk-go/aws/awsutil/equal.go new file mode 100644 index 0000000..59fa4a5 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/awsutil/equal.go @@ -0,0 +1,27 @@ +package awsutil + +import ( + "reflect" +) + +// DeepEqual returns if the two values are deeply equal like reflect.DeepEqual. +// In addition to this, this method will also dereference the input values if +// possible so the DeepEqual performed will not fail if one parameter is a +// pointer and the other is not. +// +// DeepEqual will not perform indirection of nested values of the input parameters. +func DeepEqual(a, b interface{}) bool { + ra := reflect.Indirect(reflect.ValueOf(a)) + rb := reflect.Indirect(reflect.ValueOf(b)) + + if raValid, rbValid := ra.IsValid(), rb.IsValid(); !raValid && !rbValid { + // If the elements are both nil, and of the same type the are equal + // If they are of different types they are not equal + return reflect.TypeOf(a) == reflect.TypeOf(b) + } else if raValid != rbValid { + // Both values must be valid to be equal + return false + } + + return reflect.DeepEqual(ra.Interface(), rb.Interface()) +} |