| 70 | } |
| 71 | |
| 72 | void url_coder::encode(string& buf, bool clean /* = true */) const |
| 73 | { |
| 74 | if (clean) { |
| 75 | buf.clear(); |
| 76 | } |
| 77 | |
| 78 | ACL_DBUF_POOL *dbuf = dbuf_->get_dbuf().get_dbuf(); |
| 79 | std::vector<URL_NV*>::const_iterator cit = params_.begin(); |
| 80 | char* name, *value; |
| 81 | |
| 82 | for (; cit != params_.end(); ++cit) { |
| 83 | if (cit != params_.begin()) { |
| 84 | buf << '&'; |
| 85 | } |
| 86 | name = acl_url_encode((*cit)->name, dbuf); |
| 87 | if ((*cit)->value && *(*cit)->value) { |
| 88 | value = acl_url_encode((*cit)->value, dbuf); |
| 89 | buf << name << '=' << value; |
| 90 | dbuf_->dbuf_free(value); |
| 91 | } else { |
| 92 | buf << name; |
| 93 | } |
| 94 | dbuf_->dbuf_free(name); |
| 95 | } |
| 96 | } |
| 97 | |
| 98 | const string& url_coder::to_string() const |
| 99 | { |