// Copyright (c) 2012 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. #ifndef CHROME_BROWSER_API_WEBDATA_WEB_DATA_RESULTS_H_ #define CHROME_BROWSER_API_WEBDATA_WEB_DATA_RESULTS_H_ #include "base/basictypes.h" // // Result types for WebDataService. // typedef enum { BOOL_RESULT = 1, // WDResult KEYWORDS_RESULT, // WDResult INT64_RESULT, // WDResult #if defined(OS_WIN) PASSWORD_IE7_RESULT, // WDResult #endif WEB_APP_IMAGES, // WDResult TOKEN_RESULT, // WDResult> AUTOFILL_VALUE_RESULT, // WDResult> AUTOFILL_CHANGES, // WDResult> AUTOFILL_PROFILE_RESULT, // WDResult AUTOFILL_PROFILES_RESULT, // WDResult> AUTOFILL_CREDITCARD_RESULT, // WDResult AUTOFILL_CREDITCARDS_RESULT, // WDResult> WEB_INTENTS_RESULT, // WDResult> WEB_INTENTS_DEFAULTS_RESULT, // WDResult> } WDResultType; // // The top level class for a result. // class WDTypedResult { public: virtual ~WDTypedResult() {} // Return the result type. WDResultType GetType() const { return type_; } protected: explicit WDTypedResult(WDResultType type) : type_(type) { } private: WDResultType type_; DISALLOW_COPY_AND_ASSIGN(WDTypedResult); }; // A result containing one specific pointer or literal value. template class WDResult : public WDTypedResult { public: WDResult(WDResultType type, const T& v) : WDTypedResult(type), value_(v) { } virtual ~WDResult() { } // Return a single value result. T GetValue() const { return value_; } private: T value_; DISALLOW_COPY_AND_ASSIGN(WDResult); }; template class WDObjectResult : public WDTypedResult { public: explicit WDObjectResult(WDResultType type) : WDTypedResult(type) { } T* GetValue() const { return &value_; } private: // mutable to keep GetValue() const. mutable T value_; DISALLOW_COPY_AND_ASSIGN(WDObjectResult); }; #endif // CHROME_BROWSER_API_WEBDATA_WEB_DATA_RESULTS_H_