本文整理汇总了C++中PR_MIN函数的典型用法代码示例。如果您正苦于以下问题:C++ PR_MIN函数的具体用法?C++ PR_MIN怎么用?C++ PR_MIN使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了PR_MIN函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: memcpy
PRBool
gfxImageSurface::CopyFrom(gfxImageSurface *other)
{
if (other->mSize != mSize)
{
return PR_FALSE;
}
if (other->mFormat != mFormat &&
!(other->mFormat == ImageFormatARGB32 && mFormat == ImageFormatRGB24) &&
!(other->mFormat == ImageFormatRGB24 && mFormat == ImageFormatARGB32))
{
return PR_FALSE;
}
if (other->mStride == mStride) {
memcpy (mData, other->mData, mStride * mSize.height);
} else {
int lineSize = PR_MIN(other->mStride, mStride);
for (int i = 0; i < mSize.height; i++) {
unsigned char *src = other->mData + other->mStride * i;
unsigned char *dst = mData + mStride * i;
memcpy (dst, src, lineSize);
}
}
return PR_TRUE;
}
示例2: double
nsSMILTimeValue
nsSMILTimedElement::GetRepeatDuration()
{
nsSMILTimeValue result;
if (mRepeatCount.IsDefinite() && mRepeatDur.IsResolved()) {
if (mSimpleDur.IsResolved()) {
nsSMILTime activeDur = mRepeatCount * double(mSimpleDur.GetMillis());
result.SetMillis(PR_MIN(activeDur, mRepeatDur.GetMillis()));
} else {
result = mRepeatDur;
}
} else if (mRepeatCount.IsDefinite() && mSimpleDur.IsResolved()) {
nsSMILTime activeDur = mRepeatCount * double(mSimpleDur.GetMillis());
result.SetMillis(activeDur);
} else if (mRepeatDur.IsResolved()) {
result = mRepeatDur;
} else if (mRepeatCount.IsIndefinite()) {
result.SetIndefinite();
} else {
result = mSimpleDur;
}
return result;
}
示例3: SSL_GetPreliminaryChannelInfo
SECStatus
SSL_GetPreliminaryChannelInfo(PRFileDesc *fd,
SSLPreliminaryChannelInfo *info,
PRUintn len)
{
sslSocket *ss;
SSLPreliminaryChannelInfo inf;
/* Check if we can properly return the length of data written and that
* we're not asked to return more information than we know how to provide.
*/
if (!info || len < sizeof inf.length || len > sizeof inf) {
PORT_SetError(SEC_ERROR_INVALID_ARGS);
return SECFailure;
}
ss = ssl_FindSocket(fd);
if (!ss) {
SSL_DBG(("%d: SSL[%d]: bad socket in SSL_GetPreliminaryChannelInfo",
SSL_GETPID(), fd));
return SECFailure;
}
memset(&inf, 0, sizeof(inf));
inf.length = PR_MIN(sizeof(inf), len);
inf.valuesSet = ss->ssl3.hs.preliminaryInfo;
inf.protocolVersion = ss->version;
inf.cipherSuite = ss->ssl3.hs.cipher_suite;
memcpy(info, &inf, inf.length);
return SECSuccess;
}
示例4: PR_MIN
nsresult
nsMsgSearchValidityTable::GetAvailableOperators(nsMsgSearchAttribValue aAttribute,
PRUint32 *aLength,
nsMsgSearchOpValue **aResult)
{
nsMsgSearchAttribValue attr;
if (aAttribute == nsMsgSearchAttrib::Default)
attr = m_defaultAttrib;
else
attr = PR_MIN(aAttribute, nsMsgSearchAttrib::OtherHeader);
PRUint32 totalOperators=0;
PRInt32 i;
for (i=0; i<nsMsgSearchOp::kNumMsgSearchOperators; i++) {
if (m_table[attr][i].bitAvailable)
totalOperators++;
}
nsMsgSearchOpValue *array = (nsMsgSearchOpValue*)
nsMemory::Alloc(sizeof(nsMsgSearchOpValue) * totalOperators);
NS_ENSURE_TRUE(array, NS_ERROR_OUT_OF_MEMORY);
PRUint32 numStored = 0;
for (i=0; i<nsMsgSearchOp::kNumMsgSearchOperators;i++) {
if (m_table[attr][i].bitAvailable)
array[numStored++] = i;
}
NS_ASSERTION(totalOperators == numStored, "Search Operators not lining up");
*aLength = totalOperators;
*aResult = array;
return NS_OK;
}
示例5: PR_MIN
void nsBufferDecoderSupport::FillBuffer(const char ** aSrc, PRInt32 aSrcLength)
{
PRInt32 bcr = PR_MIN(mBufferCapacity - mBufferLength, aSrcLength);
memcpy(mBuffer + mBufferLength, *aSrc, bcr);
mBufferLength += bcr;
(*aSrc) += bcr;
}
示例6: FindSafeLength
static PRInt32 FindSafeLength(nsThebesRenderingContext* aContext,
const char *aString, PRUint32 aLength,
PRUint32 aMaxChunkLength)
{
// Since it's ASCII, we don't need to worry about clusters or RTL
return PR_MIN(aLength, aMaxChunkLength);
}
示例7: SSLInt_UpdateSSLv2ClientRandom
/* Use this function to update the ClientRandom of a client's handshake state
* after replacing its ClientHello message. We for example need to do this
* when replacing an SSLv3 ClientHello with its SSLv2 equivalent. */
SECStatus SSLInt_UpdateSSLv2ClientRandom(PRFileDesc *fd, uint8_t *rnd,
size_t rnd_len, uint8_t *msg,
size_t msg_len) {
sslSocket *ss = ssl_FindSocket(fd);
if (!ss) {
return SECFailure;
}
SECStatus rv = ssl3_InitState(ss);
if (rv != SECSuccess) {
return rv;
}
rv = ssl3_RestartHandshakeHashes(ss);
if (rv != SECSuccess) {
return rv;
}
// Ensure we don't overrun hs.client_random.
rnd_len = PR_MIN(SSL3_RANDOM_LENGTH, rnd_len);
// Zero the client_random struct.
PORT_Memset(&ss->ssl3.hs.client_random, 0, SSL3_RANDOM_LENGTH);
// Copy over the challenge bytes.
size_t offset = SSL3_RANDOM_LENGTH - rnd_len;
PORT_Memcpy(&ss->ssl3.hs.client_random.rand[offset], rnd, rnd_len);
// Rehash the SSLv2 client hello message.
return ssl3_UpdateHandshakeHashes(ss, msg, msg_len);
}
示例8: NS_ConsumeStream
NS_IMETHODIMP
nsJSONListener::OnDataAvailable(nsIRequest *aRequest, nsISupports *aContext,
nsIInputStream *aStream,
PRUint32 aOffset, PRUint32 aLength)
{
PRUint32 contentLength;
aStream->Available(&contentLength);
nsresult rv = NS_OK;
if (mNeedsConverter && mSniffBuffer.Length() < 4) {
PRUint32 readCount = (aLength < 4) ? aLength : 4;
rv = NS_ConsumeStream(aStream, readCount, mSniffBuffer);
NS_ENSURE_SUCCESS(rv, rv);
if (mSniffBuffer.Length() < 4)
return NS_OK;
}
char buffer[JSON_STREAM_BUFSIZE];
unsigned long bytesRemaining = aLength - mSniffBuffer.Length();
while (bytesRemaining) {
unsigned int bytesRead;
rv = aStream->Read(buffer,
PR_MIN(sizeof(buffer), bytesRemaining),
&bytesRead);
NS_ENSURE_SUCCESS(rv, rv);
rv = ProcessBytes(buffer, bytesRead);
NS_ENSURE_SUCCESS(rv, rv);
bytesRemaining -= bytesRead;
}
return rv;
}
示例9: SSL_GetCipherSuiteInfo
SECStatus
SSL_GetCipherSuiteInfo(PRUint16 cipherSuite,
SSLCipherSuiteInfo *info, PRUintn len)
{
unsigned int i;
/* Check if we can properly return the length of data written and that
* we're not asked to return more information than we know how to provide.
*/
if (!info || len < sizeof suiteInfo[0].length ||
len > sizeof suiteInfo[0]) {
PORT_SetError(SEC_ERROR_INVALID_ARGS);
return SECFailure;
}
len = PR_MIN(len, sizeof suiteInfo[0]);
for (i = 0; i < NUM_SUITEINFOS; i++) {
if (suiteInfo[i].cipherSuite == cipherSuite) {
memcpy(info, &suiteInfo[i], len);
info->length = len;
return SECSuccess;
}
}
PORT_SetError(SEC_ERROR_INVALID_ARGS);
return SECFailure;
}
示例10: PREF_GetCharPref
nsresult PREF_GetCharPref(const char *pref_name, char * return_buffer, int * length, PRBool get_default)
{
if (!gHashTable.ops)
return NS_ERROR_NOT_INITIALIZED;
nsresult rv = NS_ERROR_UNEXPECTED;
char* stringVal;
PrefHashEntry* pref = pref_HashTableLookup(pref_name);
if (pref)
{
if (get_default || PREF_IS_LOCKED(pref) || !PREF_HAS_USER_VALUE(pref))
stringVal = pref->defaultPref.stringVal;
else
stringVal = pref->userPref.stringVal;
if (stringVal)
{
if (*length <= 0)
*length = PL_strlen(stringVal) + 1;
else
{
PL_strncpy(return_buffer, stringVal, PR_MIN((size_t)*length - 1, PL_strlen(stringVal) + 1));
return_buffer[*length - 1] = '\0';
}
rv = NS_OK;
}
}
return rv;
}
示例11: MD2_Update
void
MD2_Update(MD2Context *cx, const unsigned char *input, unsigned int inputLen)
{
PRUint32 bytesToConsume;
/* Fill the remaining input buffer. */
if (cx->unusedBuffer != MD2_BUFSIZE) {
bytesToConsume = PR_MIN(inputLen, cx->unusedBuffer);
memcpy(&cx->X[MD2_INPUT + (MD2_BUFSIZE - cx->unusedBuffer)],
input, bytesToConsume);
if (cx->unusedBuffer + bytesToConsume >= MD2_BUFSIZE)
md2_compress(cx);
inputLen -= bytesToConsume;
input += bytesToConsume;
}
/* Iterate over 16-byte chunks of the input. */
while (inputLen >= MD2_BUFSIZE) {
memcpy(&cx->X[MD2_INPUT], input, MD2_BUFSIZE);
md2_compress(cx);
inputLen -= MD2_BUFSIZE;
input += MD2_BUFSIZE;
}
/* Copy any input that remains into the buffer. */
if (inputLen)
memcpy(&cx->X[MD2_INPUT], input, inputLen);
cx->unusedBuffer = MD2_BUFSIZE - inputLen;
}
示例12: SSL_GetPreliminaryChannelInfo
SECStatus
SSL_GetPreliminaryChannelInfo(PRFileDesc *fd,
SSLPreliminaryChannelInfo *info,
PRUintn len)
{
sslSocket *ss;
SSLPreliminaryChannelInfo inf;
if (!info || len < sizeof inf.length) {
PORT_SetError(SEC_ERROR_INVALID_ARGS);
return SECFailure;
}
ss = ssl_FindSocket(fd);
if (!ss) {
SSL_DBG(("%d: SSL[%d]: bad socket in SSL_GetPreliminaryChannelInfo",
SSL_GETPID(), fd));
return SECFailure;
}
if (ss->version < SSL_LIBRARY_VERSION_3_0) {
PORT_SetError(SSL_ERROR_FEATURE_NOT_SUPPORTED_FOR_VERSION);
return SECFailure;
}
memset(&inf, 0, sizeof(inf));
inf.length = PR_MIN(sizeof(inf), len);
inf.valuesSet = ss->ssl3.hs.preliminaryInfo;
inf.protocolVersion = ss->version;
inf.cipherSuite = ss->ssl3.hs.cipher_suite;
memcpy(info, &inf, inf.length);
return SECSuccess;
}
示例13: while
NS_IMETHODIMP
nsIncrementalDownload::OnDataAvailable(nsIRequest *request,
nsISupports *context,
nsIInputStream *input,
PRUint32 offset,
PRUint32 count)
{
while (count) {
PRUint32 space = mChunkSize - mChunkLen;
PRUint32 n, len = PR_MIN(space, count);
nsresult rv = input->Read(mChunk + mChunkLen, len, &n);
if (NS_FAILED(rv))
return rv;
if (n != len)
return NS_ERROR_UNEXPECTED;
count -= n;
mChunkLen += n;
if (mChunkLen == mChunkSize)
FlushChunk();
}
if (PR_Now() > mLastProgressUpdate + UPDATE_PROGRESS_INTERVAL)
UpdateProgress();
return NS_OK;
}
示例14: ResetIfSet
PRBool
nsAttrValue::ParseSpecialIntValue(const nsAString& aString,
PRBool aCanBePercent)
{
ResetIfSet();
PRInt32 ec;
nsAutoString tmp(aString);
PRInt32 val = tmp.ToInteger(&ec);
if (NS_FAILED(ec)) {
return PR_FALSE;
}
val = PR_MAX(val, 0);
val = PR_MIN(val, NS_ATTRVALUE_INTEGERTYPE_MAXVALUE);
// % (percent)
// XXX RFindChar means that 5%x will be parsed!
if (aCanBePercent && tmp.RFindChar('%') >= 0) {
if (val > 100) {
val = 100;
}
SetIntValueAndType(val, ePercent);
return PR_TRUE;
}
// Straight number is interpreted as integer
SetIntValueAndType(val, eInteger);
return PR_TRUE;
}
示例15: PaintCheckMark
static void
PaintCheckMark(nsIRenderingContext& aRenderingContext,
const nsRect& aRect)
{
// Points come from the coordinates on a 7X7 unit box centered at 0,0
const PRInt32 checkPolygonX[] = { -3, -1, 3, 3, -1, -3 };
const PRInt32 checkPolygonY[] = { -1, 1, -3, -1, 3, 1 };
const PRInt32 checkNumPoints = sizeof(checkPolygonX) / sizeof(PRInt32);
const PRInt32 checkSize = 9; // This is value is determined by adding 2
// units to pad the 7x7 unit checkmark
// Scale the checkmark based on the smallest dimension
nscoord paintScale = PR_MIN(aRect.width, aRect.height) / checkSize;
nsPoint paintCenter(aRect.x + aRect.width / 2,
aRect.y + aRect.height / 2);
nsPoint paintPolygon[checkNumPoints];
// Convert checkmark for screen rendering
for (PRInt32 polyIndex = 0; polyIndex < checkNumPoints; polyIndex++) {
paintPolygon[polyIndex] = paintCenter +
nsPoint(checkPolygonX[polyIndex] * paintScale,
checkPolygonY[polyIndex] * paintScale);
}
aRenderingContext.FillPolygon(paintPolygon, checkNumPoints);
}