View Javadoc

1   package com.tapina.robe.swi.clib.stdio;
2   
3   import com.tapina.robe.runtime.ByteArray;
4   import com.tapina.robe.runtime.Environment;
5   import com.tapina.robe.runtime.MemoryMap;
6   import com.tapina.robe.swi.clib.Stub;
7   
8   import java.io.IOException;
9   
10  /***
11   * This function writes a3 objects of size specified by a2 from the array pointed to by a1, into the file
12   * pointed to by a4.
13   * Returns: The number of objects written.
14   */
15  public class FWrite extends Stub {
16      public void executeStub(Environment environment) {
17          final int[] R = environment.getCpu().R;
18          final int writeSize = R[2] * R[1];
19          final MemoryMap memoryMap = environment.getMemoryMap();
20          final FilePointer filePointer = FilePointer.find(environment.getMemoryMap().getWord(R[3]));
21          final ByteArray data = memoryMap.getByteArray(R[0], writeSize, false);
22          try {
23              filePointer.write(data.getArray(), data.getOffset(), data.getLength());
24              R[0] = R[2];
25          } catch (IOException e) {
26              log.severe("Error in fwrite(): " + e.getMessage());
27              R[0] = 0;
28          }
29      }
30  }