diff --git a/invstmt.go b/invstmt.go index bffd93b..77282a1 100644 --- a/invstmt.go +++ b/invstmt.go @@ -764,6 +764,7 @@ type InvPosition struct { // Position is an interface satisfied by all the other *Position types type Position interface { PositionType() string + InvPosition() InvPosition } // DebtPosition represents a position held in a debt security @@ -777,6 +778,11 @@ func (p DebtPosition) PositionType() string { return "POSDEBT" } +// InvPosition returns InvPos +func (p DebtPosition) InvPosition() InvPosition { + return p.InvPos +} + // MFPosition represents a position held in a mutual fund type MFPosition struct { XMLName xml.Name `xml:"POSMF"` @@ -792,6 +798,11 @@ func (p MFPosition) PositionType() string { return "POSMF" } +// InvPosition returns InvPos +func (p MFPosition) InvPosition() InvPosition { + return p.InvPos +} + // OptPosition represents a position held in an option type OptPosition struct { XMLName xml.Name `xml:"POSOPT"` @@ -804,6 +815,11 @@ func (p OptPosition) PositionType() string { return "POSOPT" } +// InvPosition returns InvPos +func (p OptPosition) InvPosition() InvPosition { + return p.InvPos +} + // OtherPosition represents a position held in a security type not covered by // the other *Position elements type OtherPosition struct { @@ -816,6 +832,11 @@ func (p OtherPosition) PositionType() string { return "POSOTHER" } +// InvPosition returns InvPos +func (p OtherPosition) InvPosition() InvPosition { + return p.InvPos +} + // StockPosition represents a position held in a stock type StockPosition struct { XMLName xml.Name `xml:"POSSTOCK"` @@ -830,6 +851,11 @@ func (p StockPosition) PositionType() string { return "POSSTOCK" } +// InvPosition returns InvPos +func (p StockPosition) InvPosition() InvPosition { + return p.InvPos +} + // PositionList represents a list of positions held in securities in an // investment account type PositionList []Position