int linphone_proxy_config_normalize_number(LinphoneProxyConfig *proxy, const char *username, char *result, size_t result_len){ char *flatten; int numlen; if (is_a_phone_number(username)){ flatten=flatten_number(username); ms_message("Flattened number is '%s'",flatten); numlen=strlen(flatten); if (numlen>10 || flatten[0]=='+' || proxy->dial_prefix==NULL || proxy->dial_prefix[0]=='\0'){ ms_message("No need to add a prefix"); /* prefix is already there */ copy_result(flatten,result,result_len,proxy->dial_escape_plus); ms_free(flatten); return 0; }else if (proxy->dial_prefix && proxy->dial_prefix[0]!='\0'){ char *prefixed; int skipped=0; ms_message("Need to prefix with %s",proxy->dial_prefix); if (numlen==10){ /*remove initial number before prepending prefix*/ skipped=1; } prefixed=append_prefix(flatten+skipped,proxy->dial_prefix); ms_free(flatten); copy_result(prefixed,result,result_len,proxy->dial_escape_plus); ms_free(prefixed); } }else strncpy(result,username,result_len); return 0; }
void add(std::string const & key, template_base const & T, statements_container const & statements) { if (kernels_.insert(container_type::value_type(key, T.clone())).second) { std::vector<std::string> sources = at(kernels_, key)->generate(append_prefix(key), statements, device_); assert(sources.size()<=2); for (unsigned int i = 0; i < sources.size(); ++i) lazy_programs_[i].add(sources[i]); } }
void execute(container_type::key_type const & key, statements_container const & statements) { tools::shared_ptr<template_base> & template_pointer = at(kernels_, key); template_pointer->enqueue(append_prefix(key), lazy_programs_, statements); }