static HNArray Create(const bool * arValues, NInt valuesLength, NAttributes attributes) { if (valuesLength < 0) NThrowArgumentLessThanZeroException(N_T("valuesLength")); if (!arValues && valuesLength != 0) NThrowArgumentNullException("arValues"); NAutoFree values(NAlloc(valuesLength * sizeof(NBool))); for (NInt i = 0; i < valuesLength; i++) { ((NBool *)values.Get())[i] = arValues[i] ? NTrue : NFalse; } HNArray hValue; NCheck(NArrayCreateFromBooleanArray((NBool *)values.Get(), valuesLength, (NAttributes)(attributes | naPromoteValue), &hValue)); values.Release(); return hValue; }
void GetBuffer(void ** buffer, NSizeType * bufferSize) { size_t size = parameters.size() * 16; *buffer = NAlloc(size); char * pos = (char *)*buffer; for (std::vector<MParameter *>::const_iterator param = parameters.begin(); param != parameters.end(); param ++) { NUInt32 * val = (NUInt32 *)pos; *val = (*param)->part; pos += 4; val = (NUInt32 *)pos; *val = (*param)->id; pos += 4; NUInt64 * val64 = (NUInt64 *)pos; *val64 = (*param)->value; pos += 8; } *bufferSize = size; }
inline void * NAlloc(NSizeType size) { void * pBlock; NCheck(NAlloc(size, &pBlock)); return pBlock; }