home *** CD-ROM | disk | FTP | other *** search
-
- * Maxon C++ Library:
- * Modul "extstream"
- * Jens Gelhar 29.04.92, 08.04.94
-
- xdef _0dt__fstreambase__T
- xdef _0dt__ifstream__T,_0dt__ofstream__T,_0dt__fstream__T
- xdef _0ct__ifstream__T,_0ct__ofstream__T,_0ct__fstream__T
- xdef _0ct__ifstream__TPCci,_0ct__ofstream__TPCci,_0ct__fstream__TPCci
- xdef close__fstreambase__T
- xdef open__fstreambase__TPCci
-
- xref fclose__P06stream,fopen__PCcPCc
-
- _0dt__fstream__T:
- addq.l #6,4(a7) ; nur Basisklasse destruieren
- _0dt__ifstream__T:
- _0dt__ofstream__T:
- addq.l #6,4(a7) ; Basisklasse "fstreambase"
- _0dt__fstreambase__T:
- close__fstreambase__T:
- move.l 4(a7),a0
- move.l (a0),a0 ; virtuelle Basisklasse "ios"
- tst.l (a0)
- beq.b .clo0
- move.l (a0),-(a7)
- clr.l (a0)
- jsr fclose__P06stream
- addq.l #4,a7
- .clo0 rts
-
- _0ct__ofstream__T:
- _0ct__ifstream__T:
- movem.l a0/d0,-(a7)
- move.l 8+4(a7),a0
- clr.b 5(a0) ; Fehlerflag/Basis löschen
- move.b 4(a0),d0
- or.b 6+4(a0),d0 ; Lizenz zum Töten? (soll heißen: darf virtuelle Basisklasse "ios" hier konstruiert werden?)
- and.w #1,d0
- beq.b ctnix
- bra.b ctIn
-
- _0ct__fstream__T:
- movem.l a0/d0,-(a7)
- move.l 8+4(a7),a0
- clr.b 5(a0) ; Fehlerflag/Basis löschen
- clr.b 5+6(a0) ; Fehlerflag/Basis löschen
- move.b 4(a0),d0
- or.b 6+4(a0),d0 ; Lizenz zum Töten?
- or.b 12+4(a0),d0
- and.w #1,d0
- beq.b ctnix
- ctIn move.l (a0),a0
- clr.l (a0) ; Filehandle löschen
- movem.l (a7)+,a0/d0
- rts
-
- _0ct__ofstream__TPCci:
- _0ct__ifstream__TPCci:
- movem.l a0/d0,-(a7)
- move.l 8+4(a7),a0 ; "this"
- move.b 4(a0),d0
- or.b 6+4(a0),d0 ; Lizenz zum Töten?
- and.w #1,d0
- bne.b ctOpen
- ctnix movem.l (a7)+,d0/a0
- rts
-
- _0ct__fstream__TPCci:
- movem.l a0/d0,-(a7)
- move.l 8+4(a7),a0 ; "this"
- move.b 4(a0),d0
- or.b 6+4(a0),d0 ; Lizenz zum Töten?
- or.b 12+4(a0),d0
- and.w #1,d0
- beq.s ctnix
- clr.b 6+5(a0) ; Fehlerflag/Basis
- ctOpen ; Datei öffnen:
- clr.b 5(a0) ; Fehlerflag/Basis
- move.l 8+4+8(a7),-(a7)
- move.l 8+4+8(a7),-(a7)
- move.l a0,-(a7)
- jsr open__fstreambase__TPCci(pc)
- lea 12(a7),a7
- bra.b ctnix
-
- open__fstreambase__TPCci:
- ; Stack-Argumente:
- ; 0 L "this", 4 L Name, 8 i Mode
- move.l a0,-(a7)
- moveq #7,d0
- and.w 4+4+8+2(a7),d0 ; Modus:
- asl.l #1,d0
- move.w str(pc,d0),d0
- clr.l -(a7)
- move.w d0,(a7)
- move.l a7,-(a7) ; Modusstring
- move.l 8+4+4+4(a7),-(a7) ; Name
- jsr fopen__PCcPCc
- lea 12(a7),a7
- move.l 4+4(a7),a0 ; _extstreamclass
- move.l (a0),a0 ; _filebufclass
- move.l d0,(a0)
- move.l (a7)+,a0
- rts
-
- str: dc.b 'r',0 ; -
- dc.b 'r',0 ; in
- dc.b 'w',0 ; out
- dc.b 'r+' ; in|out
- dc.b 'a',0 ; app
- dc.b 'a+' ; in| app
- dc.b 'a',0 ; out|app
- dc.b 'w+' ; in|out|app
-
- end
-
-