Category : Dbase (Clipper, FoxBase, etc) Languages Source Code
Archive   : OCLIP.ZIP
Filename : OCLIP.PRG

 
Output of file : OCLIP.PRG contained in archive : OCLIP.ZIP
/*
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
º o:Clip º
º An Object Oriented Extension to Clipper 5.01 º
º (c) 1991 Peter M. Freese, CyberSoft º
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

Version 1.0a - November 25, 1991
*/

EXTERNAL ;
__IVAR01,__IVAR02,__IVAR03,__IVAR04,__IVAR05,;
__IVAR06,__IVAR07,__IVAR08,__IVAR09,__IVAR10,;
__IVAR11,__IVAR12,__IVAR13,__IVAR14,__IVAR15,;
__IVAR16,__IVAR17,__IVAR18,__IVAR19,__IVAR20,;
__IVAR21,__IVAR22,__IVAR23,__IVAR24,__IVAR25,;
__IVAR26,__IVAR27,__IVAR28,__IVAR29,__IVAR30,;
__IVAR31,__IVAR32,__IVAR33,__IVAR34,__IVAR35,;
__IVAR36,__IVAR37,__IVAR38,__IVAR39,__IVAR40,;
__IVAR41,__IVAR42,__IVAR43,__IVAR44,__IVAR45,;
__IVAR46,__IVAR47,__IVAR48,__IVAR49,__IVAR50
EXTERNAL ;
__SIVAR01,__SIVAR02,__SIVAR03,__SIVAR04,__SIVAR05,;
__SIVAR06,__SIVAR07,__SIVAR08,__SIVAR09,__SIVAR10,;
__SIVAR11,__SIVAR12,__SIVAR13,__SIVAR14,__SIVAR15,;
__SIVAR16,__SIVAR17,__SIVAR18,__SIVAR19,__SIVAR20,;
__SIVAR21,__SIVAR22,__SIVAR23,__SIVAR24,__SIVAR25,;
__SIVAR26,__SIVAR27,__SIVAR28,__SIVAR29,__SIVAR30,;
__SIVAR31,__SIVAR32,__SIVAR33,__SIVAR34,__SIVAR35,;
__SIVAR36,__SIVAR37,__SIVAR38,__SIVAR39,__SIVAR40,;
__SIVAR41,__SIVAR42,__SIVAR43,__SIVAR44,__SIVAR45,;
__SIVAR46,__SIVAR47,__SIVAR48,__SIVAR49,__SIVAR50

STATIC aClassList := {}, aMethodList := {}, aVarList := {}, nCurrent := 0
STATIC oParent

FUNCTION __DefineClass(cName,bParent)
LOCAL nParent
oParent := nil
if(bParent <> nil,oParent:= bParent:Eval(),) // ensure parent defined
AADD(aClassList,UPPER(cName))
AADD(aMethodList,{ {"__PARENT","__PARENT"} })
AADD(aVarList,{})
++nCurrent
if bParent <> nil .and. ;
(nParent := ASCAN(aClassList,UPPER(oParent:ClassName))) <> 0
aMethodList[nCurrent] := ACLONE(aMethodList[nParent])
aVarList[nCurrent] := ACLONE(aVarList[nParent])
end
RETURN oParent

PROCEDURE __AddVar(cName)
AADD(aVarList[nCurrent],cName)
RETURN

PROCEDURE __AddMethod(cName,cUDF)
LOCAL n
cName := UPPER(cName)
n := ASCAN(aMethodList[nCurrent], { |aMethod| aMethod[1] == cName } )
if n > 0
aMethodList[nCurrent,n] := {cName,cUDF} // override parent method
else
AADD(aMethodList[nCurrent],{cName,cUDF})
end
RETURN

FUNCTION __MakeClass()
LOCAL i := 0,cVar,s
LOCAL nHandle := __ClassNew(aClassList[nCurrent],LEN(aVarList[nCurrent])+1)
AEVAL(aMethodList[nCurrent], ;
{|cMethod| __ClassAdd(nHandle,cMethod[1],cMethod[2]) } )
while i++ < LEN(aVarList[nCurrent])
cVar := aVarList[nCurrent,i]
s := PADL(LTRIM(STR(i+1)),2,"0")
__ClassAdd(nHandle,cVar,"__IVAR"+s)
__ClassAdd(nHandle,"_"+cVar,"__SIVAR"+s)
end
RETURN nHandle

FUNCTION __PARENT(bParent)
LOCAL r
if(LEN(QSELF())>1,ACOPY(QSELF(),QSELF()[1],2,,2),)
r := EVAL(bParent,QSELF()[1])
if(LEN(QSELF())>1,ACOPY(QSELF()[1],QSELF(),2,,2),)
RETURN r




  3 Responses to “Category : Dbase (Clipper, FoxBase, etc) Languages Source Code
Archive   : OCLIP.ZIP
Filename : OCLIP.PRG

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/