BLS.pcs.crosspost
Language enhancement request 1 Generic programming September 22, 2008 06:26PM |
Peter Holemans
Re: Language enhancement request 1 Generic programming September 22, 2008 09:04PM |
Mourillon
Re: Language enhancement request 1 Generic programming September 23, 2008 03:57AM |
BLS
Re: Language enhancement request 1 Generic programming September 23, 2008 08:35PM |
Quote
Mourillon
Have you tried to define the stack as an array of variant?
s is cVARIANTStack c is FancyClass s s.push(c) // Njet. Ne, Never, You stink
cGenericStack is class constructor(TYPE) SWITCH TypeVar(TYPE) CASE wlInt stack is array of 0 int CASE wlReal stack is array of 0 real // FAILS CASE wlInstance stack is array of 0 object dynamic /FAILS END END
cGenericStack is class([T]) // syntax stolen from Eiffel ... PRIVATE stack is array of 0 Twill work, and in opposite to # 2 this is a compile time solution, not a (non working) runtime solution. (Sanity and Speed.)
BLS
Re: Language enhancement request 1 Generic programming September 23, 2008 08:59PM |
Alexandre Leclerc
Re: Language enhancement request 1 Generic programming September 23, 2008 09:27PM |
CFullDynamic is class m_ptabStack is array dynamic END PROCEDURE Constructor(sDataType is string) sAllocProc is string = [ PROCEDURE AllocMyArray(MyArray) MyArray = new array dynamic of 0 %1 ] sCom is string = Compile("AllocMyArray",StringBuild(sAllocProc,sDataType)) IF sCom="" THEN Exécute("AllocMyArray",:m_ptabStack) Compile("AllocMyArray","") ELSE Error(sCom+CR+ErrorInfo()) END PROCEDURE Destructor() PROCEDURE Push(Item) ArrayAdd(:m_ptabStack,Item) PROCEDURE Pop(LOCAL Item) i is int = :Count() Item = :m_ptabStack ArrayDelete(:m_ptabStack,i) RESULT Item PROCEDURE Count() RESULT ArrayCount(:m_ptabStack)
CDynamic is class m_ptabStack is array dynamic END PROCEDURE Constructor(sDataType is string) SWITCH sdatatype CASE "integer": :m_ptabStack = new array dynamic of 0 int CASE "string": :m_ptabStack = new array dynamic of 0 strings END PROCEDURE Destructor() PROCEDURE Push(Item) ArrayAdd(:m_ptabStack,Item) PROCEDURE Pop(LOCAL Item) i is int = :Count() Item = :m_ptabStack ArrayDelete(:m_ptabStack,i) RESULT Item PROCEDURE Count() RESULT ArrayCount(:m_ptabStack)
// In declaration for example: gclMyIntegers is CDynamic ("integer") gclMyStrings is CDynamic ("string") gclMyIntegersush(1) gclMyIntegersush(2) gclMyIntegersush(3) gclMyStringsush("Ya!") gclMyStringsush("Yes!") gclMyStringsush("Oui!") gclFullString is CFullDynamic ("string") gclFullStringush("Eins") gclFullStringush("One") gclFullStringush("Un") // in a button (for example): i is int s is string Info((gclMyIntegersop(i)+gclMyIntegersop(i))+" and "+gclMyIntegersop(i)+" rest "+gclMyIntegers:Count()) Info(gclMyStringsop(s)+" and "+gclMyStringsop(s)+" rest "+gclMyStrings:Count()) Info(gclFullStringop(s)+" and "+gclFullStringop(s)+" rest "+gclFullString:Count())
BLS
Re: Language enhancement request 1 Generic programming September 23, 2008 09:54PM |
Alexandre Leclerc
Re: Language enhancement request 1 Generic programming September 24, 2008 03:35PM |
BLS
Re: Language enhancement request 1 Generic programming September 24, 2008 10:06PM |
BLS
Re: Language enhancement request 1 Generic programming September 24, 2008 10:47PM |
Al
Re: Language enhancement request 1 Generic programming September 25, 2008 04:18AM |
BLS
Re: Language enhancement request 1 Generic programming September 25, 2008 11:56AM |
COMPOSITE is class member is dynamic array of 0 shape // shape is the abstract base class of circle, rect.. END
BLS
Re: Language enhancement request 1 Generic programming September 25, 2008 12:09PM |
Al
Re: Language enhancement request 1 Generic programming September 25, 2008 02:33PM |
Alexandre Leclerc
Re: Language enhancement request 1 Generic programming September 25, 2008 03:30PM |
BLS.pcs.crosspost
Re: Language enhancement request 1 Generic programming September 25, 2008 06:47PM |
BLS.pcs.crosspost
Re: Language enhancement request 1 Generic programming September 25, 2008 06:50PM |
Alexandre Leclerc
Re: Language enhancement request 1 Generic programming September 25, 2008 07:05PM |
BLS
Re: Language enhancement request 1 Generic programming September 25, 2008 07:19PM |