void NetFEM_elems::pup(PUP::er &p) { int version=1; p(version); name.pup(p); super::pup(p); p(nodesPer); if (p.isUnpacking()) { //Unpack data into heap allocate(); bytesPer=nodesPer*sizeof(int); } else //Make canonical copy of data localCopy(); p(conn,getItems()*nodesPer); }
void ObjectTextContext::updateForward(int uchar, const String::AbstractIterator &it) { bool checkNextChar = false; if (flags & WITHIN_STRING) { if (uchar == '"') { String::AbstractIterator &it2 = localCopy(it); if (it2.getBackward() != '\\') { flags &= ~WITHIN_STRING; LOG(APP, DEBUG, "Exit string\n"); } } } else { if ((uchar == CHAR_OPENAQUOTE || uchar == '{') && (flags & (WITHIN_ALGEBRAIC | WITHIN_VECTMATRIX)) == 0) { flags &= ~(WITHIN_REAL | WITHIN_INTEGER | WITHIN_IDENTIFIER); checkNextChar = true; countProgList++; if (countProgList == 1) LOG(APP, DEBUG, "Enter list/prog\n"); } else if ((uchar == CHAR_CLOSEAQUOTE || uchar == '}') && (flags & (WITHIN_ALGEBRAIC | WITHIN_VECTMATRIX)) == 0) { flags &= ~(WITHIN_REAL | WITHIN_INTEGER | WITHIN_IDENTIFIER); checkNextChar = true; countProgList--; if (countProgList == 0) LOG(APP, DEBUG, "Exit list/prog\n"); } else if (uchar == '[') { flags &= ~(WITHIN_REAL | WITHIN_INTEGER | WITHIN_IDENTIFIER); checkNextChar = true; countDim++; if (countDim == 1) { flags |= WITHIN_VECTMATRIX; LOG(APP, DEBUG, "Enter vector/matrix\n"); } } else if (uchar == ']') { flags &= ~(WITHIN_REAL | WITHIN_INTEGER | WITHIN_IDENTIFIER); checkNextChar = true; countDim--; if (countDim == 0) { flags &= ~WITHIN_VECTMATRIX; LOG(APP, DEBUG, "Exit vector/matrix\n"); } } else if ((uchar == '\'') && (flags & WITHIN_VECTMATRIX) == 0) { flags &= ~(WITHIN_REAL | WITHIN_INTEGER | WITHIN_IDENTIFIER); checkNextChar = true; if (flags & WITHIN_ALGEBRAIC) { flags &= ~WITHIN_ALGEBRAIC; LOG(APP, DEBUG, "Exit algebraic\n"); } else { flags |= WITHIN_ALGEBRAIC; LOG(APP, DEBUG, "Enter algebraic\n"); } } else if (uchar == '"' && (flags & (WITHIN_ALGEBRAIC | WITHIN_VECTMATRIX)) == 0) { flags &= ~(WITHIN_REAL | WITHIN_INTEGER | WITHIN_IDENTIFIER); flags |= WITHIN_STRING; LOG(APP, DEBUG, "Enter string\n"); } else if (isSeparator(uchar) || isOperator(uchar)) { flags &= ~(WITHIN_REAL | WITHIN_INTEGER | WITHIN_IDENTIFIER); checkNextChar = true; LOG(APP, DEBUG, "Exit real/int/id\n"); } else if ((flags & (WITHIN_REAL | WITHIN_INTEGER | WITHIN_IDENTIFIER)) == 0) { if (uchar == '#') { flags |= WITHIN_INTEGER; itemStartPos = it.getPosition(); LOG(APP, DEBUG, "Enter integer\n"); } else if (uchar >= '0' && uchar <= '9') { flags |= WITHIN_REAL; itemStartPos = it.getPosition() - 1; LOG(APP, DEBUG, "Enter real\n"); } else if (!isSeparator(uchar)) { flags |= WITHIN_IDENTIFIER; itemStartPos = it.getPosition() - 1; LOG(APP, DEBUG, "Enter identifier\n"); } } } if (checkNextChar) { String::AbstractIterator &it2 = localCopy(it); int uc = it2.getForward(); if (uc >= '0' && uc <= '9') { flags |= WITHIN_REAL; itemStartPos = it.getPosition(); LOG(APP, DEBUG, "Enter real\n"); } else if (uc != -1 && !isSeparator(uc) && !isOperator(uc) && uc != '#') { flags |= WITHIN_IDENTIFIER; itemStartPos = it.getPosition(); LOG(APP, DEBUG, "Enter identifier\n"); } } }
void* wxOdbcResultSet::GetResultBlob(int nField, wxMemoryBuffer& Buffer) { if (m_BlobMap.find(nField) == m_BlobMap.end()) { if (m_pOdbcStatement == NULL) m_pOdbcStatement = m_pStatement->GetLastStatement(); if (m_NullValues.find(nField) != m_NullValues.end()) return NULL; SQLINTEGER iLength = 8192; SQLINTEGER iSize = 0; unsigned char buff[8193]; memset(buff, 0, 8193*sizeof(unsigned char)); long nReturn = m_pInterface->GetSQLBindParameter()(m_pOdbcStatement, nField, SQL_PARAM_OUTPUT, SQL_C_BINARY, SQL_BINARY, iLength, 0, &buff, iLength, &iSize); // Mark this field as retrieved m_RetrievedValues.insert(nField); // Record whether this field is NULL if (iSize == SQL_NULL_DATA) { m_NullValues.insert(nField); return NULL; } nReturn = m_pInterface->GetSQLGetData()( m_pOdbcStatement, nField, SQL_C_BINARY, &buff, iLength, &iSize ); if ( nReturn != SQL_SUCCESS && nReturn != SQL_SUCCESS_WITH_INFO ) { wxLogError(_T("Error with RunQueryWithResults - 1\n")); InterpretErrorCodes(nReturn, m_pOdbcStatement); ThrowDatabaseException(); } // NULL data if (iSize < 0) { wxMemoryBuffer tempBuffer(0); tempBuffer.SetDataLen(0); tempBuffer.SetBufSize(0); Buffer = tempBuffer; // Add null blobs to the map as well m_BlobMap[nField] = tempBuffer; return NULL; } size_t dataLength = (iLength < iSize) ? iLength : iSize; size_t bufferSize = dataLength; wxMemoryBuffer tempBuffer(dataLength); tempBuffer.AppendData( buff, dataLength ); while ( iSize > iLength ) { nReturn = m_pInterface->GetSQLGetData()( m_pOdbcStatement, nField, SQL_C_BINARY, &buff, iLength, &iSize ); if ( nReturn != SQL_SUCCESS && nReturn != SQL_SUCCESS_WITH_INFO ) { wxLogError(_T("Error with RunQueryWithResults - 2\n")); InterpretErrorCodes(nReturn, m_pOdbcStatement); ThrowDatabaseException(); } dataLength = (iLength < iSize) ? iLength : iSize; tempBuffer.AppendData( buff, dataLength ); bufferSize += dataLength; } wxMemoryBuffer tempBufferExactSize(bufferSize); void* pData = tempBufferExactSize.GetWriteBuf(bufferSize); memcpy(pData, tempBuffer.GetData(), bufferSize); tempBufferExactSize.UngetWriteBuf(bufferSize); tempBufferExactSize.SetDataLen(bufferSize); tempBufferExactSize.SetBufSize(bufferSize); Buffer = tempBufferExactSize; wxMemoryBuffer localCopy(Buffer); m_BlobMap[nField] = localCopy; return Buffer.GetData(); } else { BlobMap::iterator it = m_BlobMap.find(nField); if (it == m_BlobMap.end()) { wxMemoryBuffer tempBuffer(0); tempBuffer.SetDataLen(0); tempBuffer.SetBufSize(0); Buffer = tempBuffer; return NULL; } else { Buffer = it->second; return Buffer.GetData(); } } }
void NetFEM_elems::copy(void) { super::copy(); localCopy(); }
SquareMatrix SqMRO_Exponential::operator()(double time) const { SquareMatrix localCopy(getRows()), squaredCopy(getRows()); SquareMatrix I(getRows()), Q(getRows()), P(getRows()), result(getRows()); unsigned int nCoefs = 6; RowVector padeCoef(nCoefs + 1); unsigned int i, odd; double k, scaleFactor; // Multiply intime factor //localCopy = (*this) * time; localCopy.multiply(time); // Setup Pade coefficients padeCoef.element(0) = 1; for (i = 1; i <= nCoefs; i++) { k = i; padeCoef.element(i) = padeCoef.element(i-1) * ((nCoefs+1-k)/(k*(2*nCoefs+1-k))); } // Scale the matrix if necessary scaleFactor = m_thisMatrix->infinityNorm(); if (scaleFactor > 0.5) { scaleFactor = log(scaleFactor)/log((double)2); scaleFactor = (scaleFactor > 0) ? floor(scaleFactor) : ceil(scaleFactor); scaleFactor += 2; scaleFactor = (scaleFactor > 0) ? scaleFactor : 0; localCopy = pow((double)2,-scaleFactor) * localCopy; } // Horner evaluation of the irreducible fraction I.identity(); squaredCopy = localCopy * localCopy; Q = padeCoef.element(nCoefs) * I; P = padeCoef.element(nCoefs-1) * I; odd = 1; for (i = (nCoefs - 1); i > 0; i--) { if (odd == 1) { Q = Q*squaredCopy + padeCoef.element(i-1)*I; } else { P = P*squaredCopy + padeCoef.element(i-1)*I; } odd = 1 - odd; } if (odd == 1) { Q = Q*localCopy; Q = Q - P; result = -1*(I + 2 * (Q.inverse() * P)); } else { P = P*localCopy; Q = Q - P; result = I + 2 * (Q.inverse() * P); } // Squaring for (i = 0; i < (unsigned int)scaleFactor; i++) { result = result * result; } return result; }
std::string trim(const std::string& InputString) { std::string localCopy(InputString); return trim(localCopy); }