| 889 | } |
| 890 | |
| 891 | void NULLC::AutoArraySet(NULLCRef x, unsigned pos, NULLCAutoArray* arr) |
| 892 | { |
| 893 | if(x.typeID != arr->typeID) |
| 894 | { |
| 895 | nullcThrowError("ERROR: cannot convert from '%s' to an 'auto[]' element type '%s'", nullcGetTypeName(x.typeID), nullcGetTypeName(arr->typeID)); |
| 896 | return; |
| 897 | } |
| 898 | unsigned elemSize = linker->exTypes[arr->typeID].size; |
| 899 | if(pos >= arr->len) |
| 900 | { |
| 901 | unsigned newSize = 1 + arr->len + (arr->len >> 1); |
| 902 | if(pos >= newSize) |
| 903 | newSize = pos; |
| 904 | NULLCAutoArray n; |
| 905 | AutoArray(&n, arr->typeID, newSize); |
| 906 | if(!n.ptr) |
| 907 | return; |
| 908 | memcpy(n.ptr, arr->ptr, arr->len * elemSize); |
| 909 | *arr = n; |
| 910 | } |
| 911 | memcpy(arr->ptr + elemSize * pos, x.ptr, elemSize); |
| 912 | } |
| 913 | |
| 914 | void NULLC::ShrinkAutoArray(NULLCAutoArray* arr, unsigned size) |
| 915 | { |
nothing calls this directly
no test coverage detected