package Ġcom . ish ant . music ify . other Ċ Ċ // ĠIt Ġis Ġa Ġclass Ġwe Ġwill Ġuse Ġto Ġget Ġthe Ġcurrent Ġstatus Ġof Ġour Ġsong . ĠA Ġsong Ġcan Ġbe Ġloaded Ġ( SUCCESS ), ĠNot Ġloaded Ġ( ERROR ) Ġor Ġloading Ġ( LOADING ) Ċ // ĠYou Ġcan Ġuse Ġthis Ġclass Ġwith Ġany Ġdatatype Ġor Ġany Ġclass Ġas Ġwe Ġhave Ġused Ġgeneric Ġtype ĠT Ċ // ĠThe Ġout Ġkeyword Ġin Ġ< out ĠT > Ġmeans Ġit Ġcan Ġeven Ġtake Ġthe Ġparent Ġclass Ġof ĠT Ċ data Ġclass ĠResource < out ĠT >( val Ġstatus : ĠStatus , Ġval Ġdata : ĠT ?, Ġval Ġmessage : ĠString ?) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġwill Ġcall Ġthese Ġfunctions Ġwhenever Ġwe Ġneed Ġto Ġdefine Ġa Ġparticular Ġstate Ġfor Ġa Ġsong ĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġsuccess ( data : ĠT ?) Ġ= ĠResource ( Status . SUCCESS , Ġdata , Ġnull ) ĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġerror ( message : ĠString , Ġdata : ĠT ?) Ġ= ĠResource ( Status . ERROR , data , message ) ĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġloading ( data : ĠT ?) Ġ= ĠResource ( Status . LOADING , data , null ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ // ĠHere Ġare Ġthe Ġthree Ġenum Ġclass Ġstates Ġof Ġour Ġsong Ċ enum Ġclass ĠStatus Ġ{ ĊĠĠĠ ĠSUCCESS , ĊĠĠĠ ĠERROR , ĊĠĠĠ ĠLO ADING Ċ }