/** \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); }
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; }