void MemRequest::redoDisp() { upce(); currMemObj->doDisp(this); }
void MemRequest::redoReqAck() { upce(); currMemObj->doReqAck(this); }
void MemRequest::redoSetStateAck() { upce(); currMemObj->doSetStateAck(this); }
int eanx(struct zint_symbol *symbol, unsigned char source[], int src_len) { /* splits string to parts before and after '+' parts */ unsigned char first_part[20] = { 0 }, second_part[20] = { 0 }, dest[1000] = { 0 }; unsigned char local_source[20] = { 0 }; unsigned int latch, reader, writer, with_addon; int error_number, i; with_addon = FALSE; latch = FALSE; writer = 0; if(src_len > 19) { strcpy(symbol->errtxt, "Input too long"); return ERROR_TOO_LONG; } if(symbol->symbology != BARCODE_ISBNX) { /* ISBN has it's own checking routine */ error_number = is_sane("0123456789+", source, src_len); if(error_number == ERROR_INVALID_DATA) { strcpy(symbol->errtxt, "Invalid characters in data"); return error_number; } } else { error_number = is_sane("0123456789Xx", source, src_len); if(error_number == ERROR_INVALID_DATA) { strcpy(symbol->errtxt, "Invalid characters in input"); return error_number; } } /* Add leading zeroes */ ustrcpy(local_source, (unsigned char *)""); if(symbol->symbology == BARCODE_ISBNX) { to_upper(local_source); } ean_leading_zeroes(symbol, source, local_source); for(reader = 0; reader <= ustrlen(local_source); reader++) { if(source[reader] == '+') { with_addon = TRUE; } } reader = 0; if(with_addon) { do { if(local_source[reader] == '+') { first_part[writer] = '\0'; latch = TRUE; reader++; writer = 0; } if(latch) { second_part[writer] = local_source[reader]; reader++; writer++; } else { first_part[writer] = local_source[reader]; reader++; writer++; } } while (reader <= ustrlen(local_source)); } else { strcpy((char*)first_part, (char*)local_source); } switch(symbol->symbology) { case BARCODE_EANX: switch(ustrlen(first_part)) { case 2: add_on(first_part, (char*)dest, 0); ustrcpy(symbol->text, first_part); break; case 5: add_on(first_part, (char*)dest, 0); ustrcpy(symbol->text, first_part); break; case 7: ean8(symbol, first_part, (char*)dest); break; case 12: ean13(symbol, first_part, (char*)dest); break; default: strcpy(symbol->errtxt, "Invalid length input"); return ERROR_TOO_LONG; break; } break; case BARCODE_EANX_CC: switch(ustrlen(first_part)) { /* Adds vertical separator bars according to ISO/IEC 24723 section 11.4 */ case 7: set_module(symbol, symbol->rows, 1); set_module(symbol, symbol->rows, 67); set_module(symbol, symbol->rows + 1, 0); set_module(symbol, symbol->rows + 1, 68); set_module(symbol, symbol->rows + 2, 1); set_module(symbol, symbol->rows + 1, 67); symbol->row_height[symbol->rows] = 2; symbol->row_height[symbol->rows + 1] = 2; symbol->row_height[symbol->rows + 2] = 2; symbol->rows += 3; ean8(symbol, first_part, (char*)dest); break; case 12:set_module(symbol, symbol->rows, 1); set_module(symbol, symbol->rows, 95); set_module(symbol, symbol->rows + 1, 0); set_module(symbol, symbol->rows + 1, 96); set_module(symbol, symbol->rows + 2, 1); set_module(symbol, symbol->rows + 2, 95); symbol->row_height[symbol->rows] = 2; symbol->row_height[symbol->rows + 1] = 2; symbol->row_height[symbol->rows + 2] = 2; symbol->rows += 3; ean13(symbol, first_part, (char*)dest); break; default: strcpy(symbol->errtxt, "Invalid length EAN input"); return ERROR_TOO_LONG; break; } break; case BARCODE_UPCA: if(ustrlen(first_part) == 11) { upca(symbol, first_part, (char*)dest); } else { strcpy(symbol->errtxt, "Input wrong length"); return ERROR_TOO_LONG; } break; case BARCODE_UPCA_CC: if(ustrlen(first_part) == 11) { set_module(symbol, symbol->rows, 1); set_module(symbol, symbol->rows, 95); set_module(symbol, symbol->rows + 1, 0); set_module(symbol, symbol->rows + 1, 96); set_module(symbol, symbol->rows + 2, 1); set_module(symbol, symbol->rows + 2, 95); symbol->row_height[symbol->rows] = 2; symbol->row_height[symbol->rows + 1] = 2; symbol->row_height[symbol->rows + 2] = 2; symbol->rows += 3; upca(symbol, first_part, (char*)dest); } else { strcpy(symbol->errtxt, "UPCA input wrong length"); return ERROR_TOO_LONG; } break; case BARCODE_UPCE: if((ustrlen(first_part) >= 6) && (ustrlen(first_part) <= 7)) { upce(symbol, first_part, (char*)dest); } else { strcpy(symbol->errtxt, "Input wrong length"); return ERROR_TOO_LONG; } break; case BARCODE_UPCE_CC: if((ustrlen(first_part) >= 6) && (ustrlen(first_part) <= 7)) { set_module(symbol, symbol->rows, 1); set_module(symbol, symbol->rows, 51); set_module(symbol, symbol->rows + 1, 0); set_module(symbol, symbol->rows + 1, 52); set_module(symbol, symbol->rows + 2, 1); set_module(symbol, symbol->rows + 2, 51); symbol->row_height[symbol->rows] = 2; symbol->row_height[symbol->rows + 1] = 2; symbol->row_height[symbol->rows + 2] = 2; symbol->rows += 3; upce(symbol, first_part, (char*)dest); } else { strcpy(symbol->errtxt, "UPCE input wrong length"); return ERROR_TOO_LONG; } break; case BARCODE_ISBNX: error_number = isbn(symbol, first_part, ustrlen(first_part), (char*)dest); if(error_number > 4) { return error_number; } break; } switch(ustrlen(second_part)) { case 0: break; case 2: add_on(second_part, (char*)dest, 1); uconcat(symbol->text, (unsigned char*)"+"); uconcat(symbol->text, second_part); break; case 5: add_on(second_part, (char*)dest, 1); uconcat(symbol->text, (unsigned char*)"+"); uconcat(symbol->text, second_part); break; default: strcpy(symbol->errtxt, "Invalid length input"); return ERROR_TOO_LONG; break; } expand(symbol, (char*)dest); switch(symbol->symbology) { case BARCODE_EANX_CC: case BARCODE_UPCA_CC: case BARCODE_UPCE_CC: /* shift the symbol to the right one space to allow for separator bars */ for(i = (symbol->width + 1); i >= 1; i--) { if(module_is_set(symbol, symbol->rows - 1, i - 1)) { set_module(symbol, symbol->rows - 1, i); } else { unset_module(symbol, symbol->rows - 1, i); } } unset_module(symbol, symbol->rows - 1, 0); symbol->width += 2; break; } if((symbol->errtxt[0] == 'w') && (error_number == 0)) { error_number = 1; /* flag UPC-E warnings */ } return error_number; }