/* Ċ Ġ* ĠP ory gen Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) ĠL an tern Power ed Ġ< https :// www . lan tern powered . org > Ċ Ġ* ĠCopyright Ġ( c ) Ġcontributors Ċ Ġ* Ċ Ġ* ĠThis Ġwork Ġis Ġlicensed Ġunder Ġthe Ġterms Ġof Ġthe ĠMIT ĠLicense Ġ( MIT ). ĠFor Ċ Ġ* Ġa Ġcopy , Ġsee Ġ' LICENSE . txt ' Ġor Ġ< https :// opensource . org / licenses / MIT >. Ċ Ġ*/ Ċ package Ġorg . lan tern powered . p ory gen . graph . node Ċ Ċ import Ġorg . lan tern powered . p ory gen . graph . node . port . Input Port Ċ import Ġorg . lan tern powered . p ory gen . graph . node . port . Output Port Ċ import Ġorg . lan tern powered . p ory gen . graph . node . port . Port Id Ċ import Ġorg . lan tern powered . p ory gen . graph . node . property . Property Ċ import Ġorg . lan tern powered . p ory gen . graph . node . property . Property Id Ċ import Ġorg . lan tern powered . p ory gen . util . type . GenericType Ċ import Ġorg . lan tern powered . p ory gen . util . type . generic TypeOf Ċ Ċ /** Ċ Ġ* ĠRegisters Ġa Ġnew Ġoutput Ġport . Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠT > ĠDynamic Node . add Output ( id : ĠPort Id , Ġno inline Ġoutput : Ġ( Node ) Ġ-> ĠT ?): ĠOutput Port < T > Ġ= ĊĠ Ġadd Output ( id , Ġgeneric TypeOf (), Ġoutput ) Ċ Ċ /** Ċ Ġ* ĠRegisters Ġa Ġnew Ġinput Ġport . Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠT > ĠDynamic Node . add Input ( id : ĠPort Id , Ġno inline Ġdefault : Ġ() Ġ-> ĠT ? Ġ= Ġ{ Ġnull Ġ}): ĠInput Port < T > Ġ= ĊĠ Ġadd Input ( id , Ġgeneric TypeOf (), Ġdefault ) Ċ Ċ /** Ċ Ġ* ĠRegisters Ġa Ġnew Ġproperty . Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠT > ĠDynamic Node . addProperty ( id : ĠProperty Id , Ġvalue : ĠT ): ĠProperty < T > Ġ= ĊĠ Ġadd Property ( id , Ġgeneric TypeOf (), Ġvalue ) Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġnode Ġthat Ġcan Ġbe Ġdynamically Ċ Ġ* Ġmodified . Ċ Ġ*/ Ċ interface ĠDynamic Node Ġ: ĠNode Ġ{ ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRegisters Ġa Ġnew Ġoutput Ġport . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġ< T > Ġadd Output ( id : ĠPort Id , Ġtype : ĠGeneric Type < T >, Ġoutput : Ġ( Node ) Ġ-> ĠT ?): ĠOutput Port < T > ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRegisters Ġa Ġnew Ġinput Ġport . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġ< T > Ġadd Input ( id : ĠPort Id , Ġtype : ĠGeneric Type < T >, Ġdefault : Ġ() Ġ-> ĠT ? Ġ= Ġ{ Ġnull Ġ}): ĠInput Port < T > ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRemoves Ġthe Ġport Ġwith Ġthe Ġgiven Ġid Ġand Ġremoves ĊĠĠ Ġ* Ġall Ġthe Ġconnections Ġto Ġit . ĠReturns Ġwhether Ġit ĊĠĠ Ġ* Ġwas Ġsuccessful . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġremove Port ( id : ĠPort Id ): ĠBoolean ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRegisters Ġa Ġnew Ġproperty . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġ< T > Ġadd Property ( id : ĠProperty Id , Ġtype : ĠGeneric Type < T >, Ġvalue : ĠT ): ĠProperty < T > ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠRemoves Ġthe Ġproperty Ġwith Ġthe Ġgiven Ġid . ĠReturns ĊĠĠ Ġ* Ġwhether Ġit Ġwas Ġsuccessful . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġremove Property ( id : ĠProperty Id ): ĠBoolean Ċ } Ċ