| // Copyright (c) 2009 The Chromium Embedded Framework Authors. All rights |
| // reserved. Use of this source code is governed by a BSD-style license that |
| // can be found in the LICENSE file. |
| |
| #include <vector> |
| |
| #include "include/internal/cef_string_list.h" |
| |
| #include "base/logging.h" |
| |
| typedef std::vector<CefString> StringList; |
| |
| CEF_EXPORT cef_string_list_t cef_string_list_alloc() { |
| return new StringList; |
| } |
| |
| CEF_EXPORT size_t cef_string_list_size(cef_string_list_t list) { |
| DCHECK(list); |
| StringList* impl = reinterpret_cast<StringList*>(list); |
| return impl->size(); |
| } |
| |
| CEF_EXPORT int cef_string_list_value(cef_string_list_t list, |
| size_t index, |
| cef_string_t* value) { |
| DCHECK(list); |
| DCHECK(value); |
| StringList* impl = reinterpret_cast<StringList*>(list); |
| DCHECK_LT(index, impl->size()); |
| if (index >= impl->size()) |
| return false; |
| const CefString& str = (*impl)[index]; |
| return cef_string_copy(str.c_str(), str.length(), value); |
| } |
| |
| CEF_EXPORT void cef_string_list_append(cef_string_list_t list, |
| const cef_string_t* value) { |
| DCHECK(list); |
| StringList* impl = reinterpret_cast<StringList*>(list); |
| impl->push_back(CefString(value)); |
| } |
| |
| CEF_EXPORT void cef_string_list_clear(cef_string_list_t list) { |
| DCHECK(list); |
| StringList* impl = reinterpret_cast<StringList*>(list); |
| impl->clear(); |
| } |
| |
| CEF_EXPORT void cef_string_list_free(cef_string_list_t list) { |
| DCHECK(list); |
| StringList* impl = reinterpret_cast<StringList*>(list); |
| delete impl; |
| } |
| |
| CEF_EXPORT cef_string_list_t cef_string_list_copy(cef_string_list_t list) { |
| DCHECK(list); |
| StringList* impl = reinterpret_cast<StringList*>(list); |
| return new StringList(*impl); |
| } |