Example #1
0
	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;
}