| Index: chrome/browser/sync/notifier/base/utils.h
|
| ===================================================================
|
| --- chrome/browser/sync/notifier/base/utils.h (revision 46353)
|
| +++ chrome/browser/sync/notifier/base/utils.h (working copy)
|
| @@ -1,90 +0,0 @@
|
| -// Copyright (c) 2009 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -//
|
| -// Utility functions.
|
| -
|
| -#ifndef CHROME_BROWSER_SYNC_NOTIFIER_BASE_UTILS_H_
|
| -#define CHROME_BROWSER_SYNC_NOTIFIER_BASE_UTILS_H_
|
| -
|
| -#include <map>
|
| -#include <string>
|
| -
|
| -#include "chrome/browser/sync/notifier/base/static_assert.h"
|
| -
|
| -// Return error if the first argument evaluates to false.
|
| -#define RET_IF_FALSE(x) do { if (!(x)) return false; } while (false)
|
| -
|
| -// Protocol constants.
|
| -const char kHttpProto[] = "http://";
|
| -const char kHttpsProto[] = "https://";
|
| -
|
| -// Initialize a POD to zero. Using this function requires discipline. Don't
|
| -// use for types that have a v-table or virtual bases.
|
| -template <typename T>
|
| -inline void SetZero(T& p) {
|
| - // Guard against the easy mistake of
|
| - // foo(int *p) { SetZero(p); } instead of
|
| - // SetZero(*p);
|
| - // which it should be.
|
| - STATIC_ASSERT(sizeof(T) != sizeof(void*));
|
| -
|
| - // A POD (plain old data) object has one of these data types:
|
| - // a fundamental type, union, struct, array,
|
| - // or class--with no constructor. PODs don't have virtual functions or
|
| - // virtual bases.
|
| -
|
| - // Test to see if the type has constructors.
|
| - union CtorTest {
|
| - T t;
|
| - int i;
|
| - };
|
| -
|
| - // TODO(sync) There might be a way to test if the type has virtuals.
|
| - // For now, if we zero a type with virtuals by mistake, it is going to crash
|
| - // predictable at run-time when the virtuals are called.
|
| - memset(&p, 0, sizeof(T));
|
| -}
|
| -
|
| -// Used to delete each element in a vector<T*>/deque<T*> (and then empty the
|
| -// sequence).
|
| -template <class T>
|
| -void CleanupSequence(T* items) {
|
| - for (typename T::iterator it(items->begin()); it != items->end(); ++it) {
|
| - delete (*it);
|
| - }
|
| - items->clear();
|
| -}
|
| -
|
| -// Typically used to clean up values used in a hash_map that had Type* as
|
| -// values.
|
| -//
|
| -// WARNING: This function assumes that T::clear will not access the values
|
| -// (or the keys if they are the same as the values). This is true for
|
| -// hash_map.
|
| -template <class T>
|
| -void CleanupMap(T* items) {
|
| - // This is likely slower than a for loop, but we have to do it this way. In
|
| - // some of the maps we use, deleting it->second causes it->first to be
|
| - // deleted as well, and that seems to send the iterator in a tizzy.
|
| - typename T::iterator it = items->begin();
|
| - while (it != items->end()) {
|
| - items->erase(it->first);
|
| - delete it->second;
|
| - it = items->begin();
|
| - }
|
| -}
|
| -
|
| -// Get the value of an element in the map with the specified name.
|
| -template <class T>
|
| -void GetMapElement(const std::map<const std::string, const T>& m,
|
| - const char* name,
|
| - T* value) {
|
| - typename std::map<const std::string, const T>::const_iterator iter(
|
| - m.find(name));
|
| - if (iter != m.end()) {
|
| - *value = iter->second;
|
| - }
|
| -}
|
| -
|
| -#endif // CHROME_BROWSER_SYNC_NOTIFIER_BASE_UTILS_H_
|
|
|