wrapper java.io.FileOutputStream requiredif RFile, RFileSystem {
requires java.io.RFileMap;
state
RFile rfile;
helper static RFile doOpen (java.io.File file) {
RFile trfile;
trfile = RFileMap.lookupAdd (file);
if (file.exists ()) {
RFileSystem.openOverwrite (trfile);
} else {
RFileSystem.openCreate (trfile);
}
return trfile;
}
wrapper FileOutputStream (java.io.File file) {
RFile trfile;
trfile = doOpen (file);
#;
rfile = trfile;
}
wrapper FileOutputStream (String file) {
File tmp;
tmp = new File (file);
RFile trfile;
trfile = doOpen (tmp);
#;
rfile = trfile;
}
// Need to be careful here becuase printstream uses it.
wrapper FileOutputStream (java.io.FileDescriptor file) {
RFile trfile;
if (NCheck.isInitialized ()) {
trfile = RFileMap.lookupAddReal (file);
if (trfile != null) {
// Must exist since its a descriptor
RFileSystem.openOverwrite (trfile);
}
} else {
trfile = null;
}
#;
rfile = trfile;
}
wrapper FileOutputStream (String file, boolean append) {
if (append) {
RFileSystem.openAppend (RFileMap.lookupAdd (file));
} else {
File tmp;
tmp = new File (file);
RFile trfile;
trfile = RFileMap.lookupAdd (file);
if (tmp.exists ()) {
RFileSystem.openOverwrite (trfile);
} else {
RFileSystem.openCreate (trfile);
}
}
#;
rfile = RFileMap.lookup (file);
NCheck.assert (rfile != null);
}
wrapper void write (int b) {
if (rfile != null) {
RFileSystem.preWrite (rfile, 1);
}
#;
if (rfile != null) {
RFileSystem.postWrite (rfile, 1);
}
}
wrapper void write (byte data[]) {
if (rfile != null) {
RFileSystem.preWrite (rfile, data.length);
}
#;
if (rfile != null) {
RFileSystem.postWrite (rfile, data.length);
}
}
wrapper void write (byte b[], int off, int len) {
if (rfile != null) {
RFileSystem.preWrite (rfile, len);
}
#;
if (rfile != null) {
RFileSystem.postWrite (rfile, len);
}
}
wrapper void close () {
if (rfile != null) {
RFileSystem.close (rfile);
}
#;
}
wrapper java.io.FileDescriptor getFD () {
#;
RFileMap.addReference (result, rfile);
}
}
Naccio Home Page
University of Virginia, Computer Science