| 1247 | } |
| 1248 | |
| 1249 | int |
| 1250 | FileDatastore::resizeInt(int newSize) { |
| 1251 | int sizeOfChar = sizeof(char); |
| 1252 | int sizeOfInt = sizeof(int); |
| 1253 | int sizeOfDouble = sizeof(double); |
| 1254 | newSize = (newSize+1)*sizeOfInt/sizeOfChar; |
| 1255 | |
| 1256 | if (newSize < sizeData) |
| 1257 | return 0; // already big enough |
| 1258 | |
| 1259 | if (newSize <= 0) { |
| 1260 | opserr << "FileDatastore::resizeInt(int newSize) - invalidSize " << newSize << endln; |
| 1261 | return -1; // invalid size |
| 1262 | } |
| 1263 | |
| 1264 | if (data != 0) |
| 1265 | delete [] data; |
| 1266 | |
| 1267 | data = new char[newSize]; |
| 1268 | if (data == 0) { |
| 1269 | opserr << "FileDatastore::resizeInt(int newSize) - out of memory for size: " << newSize << endln; |
| 1270 | return -1; |
| 1271 | } |
| 1272 | |
| 1273 | sizeData = newSize; |
| 1274 | |
| 1275 | currentMaxInt = (sizeData/sizeOfChar-sizeOfInt)/sizeOfInt; |
| 1276 | currentMaxDouble = (sizeData/sizeOfChar-sizeOfInt)/sizeOfDouble; |
| 1277 | char *dataPtr = &data[sizeof(int)]; |
| 1278 | theIntData.dbTag = (int *)data; |
| 1279 | theIntData.data = (int *)dataPtr; |
| 1280 | theDoubleData.dbTag = (int *)data; |
| 1281 | theDoubleData.data = (double *)dataPtr; |
| 1282 | |
| 1283 | return 0; |
| 1284 | } |
| 1285 | |
| 1286 | int |
| 1287 | FileDatastore::resizeDouble(int newSize) { |