示例#1
0
/** \brief Funkce pro vzdani se uchazecstvi o token sdileneho zdroje
 *
 * Pokud dane vlakno ma token, preda se dal
 */
void SpinLock::UnNeedToken(LockType target, LockThread releaser)
{
    ApplicantMap[target][releaser] = false;
    // Pokud mame token, predame ho
    // (funkce PassToken overi, zdali ho mame, dvojity check zbytecny)
    PassToken(target, releaser);
}
示例#2
0
int MCSVReader::GetData(int col, int row, char* outptr, int outlen)
{
	int i, off;

	if (row >= m_nLine)
		return 0;

	for(i=0, off=m_pOffset[row]; i<col; off++, i++) 
	{
		off += PassToken(m_pBuffer + off);
		if (strchr("\n", m_pBuffer[off])) 
		{
			outptr[0] = '\0';
			return 0;
		}
	}

	if (m_pBuffer[off] == '\"') 
	{
		for(i=0, off+=1; ; i++) 
		{
			if (m_pBuffer[off] == '\"' && m_pBuffer[off+1] == '\"') 
			{
				if (i < outlen-1)
					outptr[i] = m_pBuffer[off];
				off += 2;
			}
			else
			{
				if (m_pBuffer[off] != '\"') 
				{
					outptr[i] = m_pBuffer[off];
					off += 1;
                }	
				else
				{
					break;
				}
			}
		}
	}	
	else 
	{
		for(i=0; !strchr(",\n", m_pBuffer[off]); i++, off++) 
		{
			if (i < outlen-1)
				outptr[i] = m_pBuffer[off];
		}
	}

	if (i >= outlen-1) outptr[outlen-1] = '\0';
	else outptr[i] = '\0';


	return i;
}