package ole // OleError stores COM errors. type OleError struct { hr uintptr description string subError error } // NewError creates new error with HResult. func NewError(hr uintptr) *OleError { return &OleError{hr: hr} } // NewErrorWithDescription creates new COM error with HResult and description. func NewErrorWithDescription(hr uintptr, description string) *OleError { return &OleError{hr: hr, description: description} } // NewErrorWithSubError creates new COM error with parent error. func NewErrorWithSubError(hr uintptr, description string, err error) *OleError { return &OleError{hr: hr, description: description, subError: err} } // Code is the HResult. func (v *OleError) Code() uintptr { return uintptr(v.hr) } // String description, either manually set or format message with error code. func (v *OleError) String() string { if v.description != "" { return errstr(int(v.hr)) + " (" + v.description + ")" } return errstr(int(v.hr)) } // Error implements error interface. func (v *OleError) Error() string { return v.String() } // Description retrieves error summary, if there is one. func (v *OleError) Description() string { return v.description } // SubError returns parent error, if there is one. func (v *OleError) SubError() error { return v.subError }