MCPcopy Create free account
hub / github.com/WheretIB/nullc / AutoArraySet

Method AutoArraySet

NULLC/StdLib.cpp:891–912  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

889}
890
891void 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
914void NULLC::ShrinkAutoArray(NULLCAutoArray* arr, unsigned size)
915{

Callers

nothing calls this directly

Calls 2

nullcThrowErrorFunction · 0.70
nullcGetTypeNameFunction · 0.50

Tested by

no test coverage detected