int main() { for (size_t n = 0; n <= 10; ++n) { std::vector< std::string > parentheses = generate_parentheses(n); for (const std::string& str : parentheses) { assert(is_valid_string(str) == true); } std::cout << "passed tests for parentheses strings of length " << n << std::endl; } return 0; }
void draw_text(SDL_Surface *surface, const char *text, int x, int y) { if (!is_valid_string(text)) { printf("The string contains invalid characters: %s\n", text); printf("aborting\n"); exit(1); } SDL_Rect location; location.x = x; location.y = y; char c; while ((c = *text++)) { SDL_Surface *charSurface = get_surface(c); SDL_BlitSurface(charSurface, NULL, surface, &location); location.x = location.x + charSurface->w; } }
static void xspf_add_node(xmlNodePtr node, TupleValueType type, gboolean isMeta, const gchar *xspfName, const gchar *strVal, const gint intVal) { gchar tmps[64]; xmlNodePtr tmp; if (isMeta) { tmp = xmlNewNode(NULL, (xmlChar *) "meta"); xmlSetProp(tmp, (xmlChar *) "rel", (xmlChar *) xspfName); } else tmp = xmlNewNode(NULL, (xmlChar *) xspfName); switch (type) { case TUPLE_STRING:; gchar * subst; if (is_valid_string (strVal, & subst)) xmlAddChild (tmp, xmlNewText ((xmlChar *) strVal)); else { xmlAddChild (tmp, xmlNewText ((xmlChar *) subst)); g_free (subst); } break; case TUPLE_INT: g_snprintf(tmps, sizeof(tmps), "%d", intVal); xmlAddChild(tmp, xmlNewText((xmlChar *) tmps)); break; default: break; } xmlAddChild(node, tmp); }
/********************************************//** * Name: * parse_line * * Params: * *comp - A pointer to a compiler. * * Description: * This function will parse the lines. * it will is the standard libraries strtok() function * to break the line in to tokens for further processing. * * Return: * 1 There was a problem parsing the line. * 0 The line was parsed successfully. * ***********************************************/ int parse_line(Compiler *comp) { //Create local copy of line so strtok() doesn't destroy the original. char *symbol = NULL; char *locLine = (char *) malloc(sizeof(char) * MAX_LINE_LEN); strcpy(locLine, comp->line); char *token = strtok(locLine, " \r\t\n"); //Check if the line is empty, if it is stop the processing. if (token == NULL) return 0; //Check if the line is a comment, if it is stop the processing. if (strstr(token, ";") != NULL) return 0; //Check if optional label exists, if it does set symbol parameter, and get next token. if ((strstr(token, ":")) != NULL) { symbol = token; CUT_LAST_CHAR(symbol); token = strtok(NULL, " \r\t\n"); } //Check if the line is .entry if (strstr(comp->line, ".entry") != NULL) { token = strtok(NULL, " \r\t\n"); add_entry(comp, token); if (symbol != NULL) add_symbol(comp, symbol, DATA); return 0; } //Check if the line is .extern if (strstr(comp->line, ".extern") != NULL) { token = strtok(NULL, " \r\t\n"); add_extern(comp, token); if (symbol != NULL) add_symbol(comp, symbol, DATA); return 0; } //Check if the line is .data if (strstr(comp->line, ".data") != NULL) { if (symbol != NULL) add_symbol(comp, symbol, DATA); token = strtok(NULL, " \r\t\n"); add_data(comp, atoi(token)); return 0; } //Check if the line is .string if (strstr(comp->line, ".string") != NULL) { if (symbol != NULL) add_symbol(comp, symbol, DATA); token = strtok(NULL, " \r\t\n"); if (is_valid_string(token)) add_string(comp, token); else add_error(comp, comp->fileName, comp->lineIdx, "Missing \"\n"); return 0; } //if we got here the the line is code, if it has an optional symbol add it to symbol table. if (symbol != NULL) add_symbol(comp, symbol, CODE); //Add code to the compiler and check if the addition was successful. if (!add_code(comp, token, strtok(NULL, " \r\t\n"), strtok(NULL, ","))) { //Update the codeLen and dataLen fields comp->codeLen = comp->IC; comp->dataLen = comp->DC; free(locLine); return 0; } add_error(comp, comp->fileName, comp->lineIdx, "Incorrect line definition."); return 1; }
void parse_http_request(uint8_t * request) { uint8_t ssid_error = FALSE; uint8_t pass_error = FALSE; uint8_t host_ip_error = FALSE; // First, have to parse it if(html_GET(temp_varchar, request, "SSID=")) { if(is_valid_string(temp_varchar)) { add_new_ssid(temp_varchar, strlen((char *)temp_varchar)); } else { ssid_error = TRUE; } } if(html_GET(temp_varchar, request, "PASS="******"HOST=")) { if(is_valid_string(temp_varchar)) { if(number_of_characters_in_string(temp_varchar, '.') == 3) { // If the number of '.' in the host is equal to 3 add_new_host_ip(temp_varchar, strlen((char *)temp_varchar)); } else { add_new_host_name(temp_varchar, strlen((char *)temp_varchar)); } } else { host_ip_error = TRUE; } } if(html_GET(temp_varchar, request, "reset=")) { reset_setup_info(); } html_reset(); // We use HTTP write instead of HTML write, because this is the HTTP header http_write((uint8_t *)http_header, STRLEN(http_header)); // Had to be broken into multiple parts html_write((uint8_t *)html_header_01, STRLEN(html_header_01)); html_write((uint8_t *)html_header_02, STRLEN(html_header_02)); html_write((uint8_t *)html_header_03, STRLEN(html_header_03)); if(have_new_ssid() && have_new_pass() && have_new_host_ip()) { html_write((uint8_t *)html_instructions_02, STRLEN(html_instructions_02)); } else { html_write((uint8_t *)html_instructions_01, STRLEN(html_instructions_01)); } if(get_number_of_slaves()) { html_write((uint8_t *)html_number_of_slaves_prefix, STRLEN(html_number_of_slaves_prefix)); write_int_to_string(html_number_of_slaves_field,get_number_of_slaves()+1); html_write((uint8_t *)html_number_of_slaves_field, strlen((char *)html_number_of_slaves_field)); html_write((uint8_t *)html_number_of_slaves_suffix, STRLEN(html_number_of_slaves_suffix)); } // SSID Row html_write((uint8_t *)html_ssid_prefix, STRLEN(html_ssid_prefix)); if(have_new_ssid()) { html_write((uint8_t *)get_new_ssid(), strlen((char *)get_new_ssid())); } else { html_write((uint8_t *)html_ssid_form, STRLEN(html_ssid_form)); if(ssid_error) html_write((uint8_t *)html_input_error, STRLEN(html_input_error)); } html_write((uint8_t *)html_ssid_suffix, STRLEN(html_ssid_suffix)); // PASS Row html_write((uint8_t *)html_pass_prefix, STRLEN(html_pass_prefix)); if(have_new_pass()) { html_write((uint8_t *)get_new_pass(), strlen((char *)get_new_pass())); } else { html_write((uint8_t *)html_pass_form, STRLEN(html_pass_form)); if(pass_error) html_write((uint8_t *)html_input_error, STRLEN(html_input_error)); } html_write((uint8_t *)html_pass_suffix, STRLEN(html_pass_suffix)); // PASS Row html_write((uint8_t *)html_host_ip_prefix, STRLEN(html_host_ip_prefix)); if(have_new_host_ip()) { html_write((uint8_t *)get_new_host_ip(), strlen((char *)get_new_host_ip())); } else if (have_new_host_name()) { html_write((uint8_t *)get_new_host_name(), strlen((char *)get_new_host_name())); } else { html_write((uint8_t *)html_host_ip_form, STRLEN(html_host_ip_form)); if(host_ip_error) html_write((uint8_t *)html_input_error, STRLEN(html_input_error)); } html_write((uint8_t *)html_host_ip_suffix, STRLEN(html_host_ip_suffix)); if(have_new_ssid() && have_new_pass() && (have_new_host_ip() || have_new_host_name())) { complete_setup(); } else { html_write((uint8_t *)html_submit_button, STRLEN(html_submit_button)); } html_write((uint8_t *)html_footer, STRLEN(html_footer)); html_send(); return; }