Example #1
0
TRegexp::TRegexp(const tchar * str)
{
  gen_pattern( str );
}
Example #2
0
TRegexp  & TRegexp::operator = ( const tchar  *cp )
{
    delete the_pattern;
    gen_pattern( cp );
    return *this;
}
Example #3
0
/****************************************************
 * mmcsd_write executa a escrita bufferizada do cartao
 * sd
 *
 * @param address - endereco qual se quer escrever
 * @param *data	- vetor de dados a ser escrito
 * @param size - tamanho do vetor
 * @return TRUE se sucesso, FALSE se erro
 */
short mmcsd_write(long long address, int *data, long size) {
	int read_out[MMCSD_MAX_BLOCK_SIZE] = { 0 }, r;
	long block, offset, cont, acum, qtd;

	block = (long) (address / MMCSD_MAX_BLOCK_SIZE);
	offset = (long) (address - (block * MMCSD_MAX_BLOCK_SIZE));

	if ((offset + size) <= MMCSD_MAX_BLOCK_SIZE) {
		r = mmcsd_read_card(block, read_out, MMCSD_MAX_BLOCK_SIZE);

		if (!r)
			return FALSE;

		for (cont = 0; cont < size; ++cont) {
			read_out[cont + offset] = data[cont];
		}

		r = mmcsd_write_card(block, read_out, MMCSD_MAX_BLOCK_SIZE);

		if (!r)
			return FALSE;

	} else {
		acum = 0;
		qtd = MMCSD_MAX_BLOCK_SIZE - offset;

		do {
#ifdef USE_SPI
			r = mmcsd_read_card(block, read_out, MMCSD_MAX_BLOCK_SIZE);
#else
			r = gen_pattern(read_out, MMCSD_MAX_BLOCK_SIZE, 0);
#endif

			if (!r)
				return FALSE;

			for (cont = 0; cont < qtd; ++cont) {
				read_out[cont + offset] = data[acum];
				acum++;
			}

#ifdef USE_SPI
			r = mmcsd_write_card(block, read_out, MMCSD_MAX_BLOCK_SIZE);

			if (!r)
			return FALSE;
#else
			print_arr(address, read_out, MMCSD_MAX_BLOCK_SIZE);
#endif

			block++;
			offset = 0;

			if (acum + MMCSD_MAX_BLOCK_SIZE > size) {
				qtd = size - acum;
			} else {
				qtd = MMCSD_MAX_BLOCK_SIZE;
			}
		} while (acum < size);
	}

	return TRUE;
}