Esempio n. 1
0
void ArrayImpl::swap(size_t i1, size_t i2) {
  DEFINEMETHODNAME;
  if(i1 >= m_size) {
    indexError(method, i1);
  }
  if(i2 >= m_size) {
    indexError(method, i2);
  }
  if(i1 != i2) {
    std::swap(m_elem[i1], m_elem[i2]);
  }
  m_updateCount++;
}
void Parser::Paren() {
   
  switch(lookahead) {
        case T_NUMBER:
        	match(T_NUMBER);
        	if( evaluate == true) {
        		value = scanner.getNumber();
        		}
        	break;
   		
   		case T_OPENPAREN:
   			match(T_OPENPAREN);
    		SubAdd();
    		match(T_CLOSEPAREN);
    		break;
    	
    	case T_M:
    		match(T_M);
    		match(T_OPENBRACKET);
    		SubAdd();
    		if( evaluate == true) {
    			if( (value<0) || (value>99) ) indexError(scanner.lineNumber(), value);
    			value = m[value];
    			}
    		match(T_CLOSEBRACKET);
    		break;
    	
    	default:
    		parseError(scanner.lineNumber(), lookahead);
    		break;
    		
   }
}
void Parser:: Statement() {
 
 switch(lookahead) {
 int tempVal;
        case T_M:
        	match(T_M);
        	match(T_OPENBRACKET);
        	Expression();
        	if( evaluate == true) {
        		tempVal= value;
        		}
        	match(T_CLOSEBRACKET);
        	match(T_EQUALS);
        	Expression();
        	if( evaluate == true) {
        		if( (tempVal<0) || (tempVal>99) ) indexError(scanner.lineNumber(), tempVal);
        		m[tempVal] = value;
        		}
        	break;
   		
   		case T_PRINT:
   			match(T_PRINT);
    		Expression();
    		if( evaluate == true ) {
    			std::cout << value << std::endl;
    			}
    		break;
    	
    	default:
    		parseError(scanner.lineNumber(), lookahead);
    		break;  
    	}

}
Esempio n. 4
0
ByteArray &ByteArray::insertConstant(size_t index, BYTE b, size_t count) {
  if(count == 0) {
    return *this;
  }
  if(index > m_size) {
    indexError(__TFUNCTION__, index);
  }
  const size_t newSize = m_size + count;
  if(newSize > m_capacity) {
    const size_t newCapacity = getCapacityCeil(2 * newSize);
    BYTE *newData = allocateBytes(newCapacity);
    if(index > 0) {
      memcpy(newData, m_data, index);
    }
    if(index < m_size) {
      memcpy(newData+index+count, m_data+index, m_size-index);
    }
    if(m_data != NULL) {
      deallocateBytes(m_data);
    }
    m_data = newData;
    m_capacity = newCapacity;
  } else if(index < m_size) {
    memmove(m_data+index+count, m_data+index, m_size-index);
  }
  memset(m_data+index, b, count);
  m_size = newSize;
  return *this;
}
Esempio n. 5
0
/*!
    Construct a new SIM icon reader and attach it to \a parent.
    The icon files will be read from \a service.
*/
QSimIconReader::QSimIconReader( const QString& service, QObject *parent )
    : QObject( parent )
{
    d = new QSimIconReaderPrivate();
    d->service = service;
    d->numIcons = -1;
    d->invalidIndex = false;
    d->indexRead = false;

    // Request the number of icons from the SIM index file.
    d->indexFile = new QRecordBasedSimFile( "7F105F504F20", service, this );
    connect( d->indexFile, SIGNAL(error(QTelephony::SimFileError)),
             this, SLOT(indexError()) );
    connect( d->indexFile, SIGNAL(fileInfo(int,int)),
             this, SLOT(indexFileInfo(int,int)) );
    connect( d->indexFile, SIGNAL(readDone(QByteArray,int)),
             this, SLOT(indexRead(QByteArray,int)) );
    d->indexFile->requestFileInfo();
}
Esempio n. 6
0
bool ArrayImpl::add(size_t i, const void *e, size_t count) {
  DEFINEMETHODNAME;
  if(i > m_size) {
    indexError(method, i);
  }
  if(count == 0) {
    return false;
  }
  if(m_size + count > m_capacity) {
    setCapacity(2*(m_size + count) + 5);
  }
  if(i < m_size) {
    memmove(m_elem+i+count, m_elem+i, (m_size-i)*sizeof(m_elem[0]));
  }
  m_size += count;
  while(count--) {
    m_elem[i++] = m_objectManager->cloneObject(e);
  }
  m_updateCount++;
  return true;
}
Esempio n. 7
0
void ArrayImpl::removeIndex(size_t i, size_t count) {
  DEFINEMETHODNAME;
  if(count == 0) {
    return;
  }
  const size_t j = i + count;
  if(j > m_size) {
    indexError(method,j);
  }
  for(size_t k = i; k < j; k++) {
    m_objectManager->deleteObject(m_elem[k]);
  }
  if(j < m_size) {
    memmove(m_elem+i, m_elem+j, (m_size-j)*sizeof(m_elem[0]));
//    m_elem[m_size] = NULL;
  }
  m_size -= count;
  if(m_size < m_capacity/2 && m_capacity > 10) {
    setCapacity(_max(10, m_size));
  }
  m_updateCount++;
}
Esempio n. 8
0
INLINELINKAGE void MSVectorImpl::vectorIndexError(unsigned int index_) const
{
  indexError(index_);
}