Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef BASE_MAC_FOUNDATION_UTIL_H_ | 5 #ifndef BASE_MAC_FOUNDATION_UTIL_H_ |
| 6 #define BASE_MAC_FOUNDATION_UTIL_H_ | 6 #define BASE_MAC_FOUNDATION_UTIL_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <CoreFoundation/CoreFoundation.h> | 9 #include <CoreFoundation/CoreFoundation.h> |
| 10 | 10 |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 95 // |exec_name| - path to the binary | 95 // |exec_name| - path to the binary |
| 96 // returns - path to the application bundle, or empty on error | 96 // returns - path to the application bundle, or empty on error |
| 97 BASE_EXPORT FilePath GetAppBundlePath(const FilePath& exec_name); | 97 BASE_EXPORT FilePath GetAppBundlePath(const FilePath& exec_name); |
| 98 | 98 |
| 99 // Utility function to pull out a value from a dictionary, check its type, and | 99 // Utility function to pull out a value from a dictionary, check its type, and |
| 100 // return it. Returns NULL if the key is not present or of the wrong type. | 100 // return it. Returns NULL if the key is not present or of the wrong type. |
| 101 BASE_EXPORT CFTypeRef GetValueFromDictionary(CFDictionaryRef dict, | 101 BASE_EXPORT CFTypeRef GetValueFromDictionary(CFDictionaryRef dict, |
| 102 CFStringRef key, | 102 CFStringRef key, |
| 103 CFTypeID expected_type); | 103 CFTypeID expected_type); |
| 104 | 104 |
| 105 // Utility function to pull out a value from a dictionary, check its type, and | |
| 106 // return it. Returns NULL if the key is not present or of the wrong type. | |
| 107 BASE_EXPORT template<class T> | |
| 108 T GetValueFromDictionary(CFDictionaryRef dict, CFStringRef key); | |
|
Nico
2011/11/11 23:08:36
I don't understand why this is a template function
KushalP
2011/11/11 23:13:35
I would've thought the template function is a clea
| |
| 109 | |
| 105 // Retain/release calls for memory management in C++. | 110 // Retain/release calls for memory management in C++. |
| 106 BASE_EXPORT void NSObjectRetain(void* obj); | 111 BASE_EXPORT void NSObjectRetain(void* obj); |
| 107 BASE_EXPORT void NSObjectRelease(void* obj); | 112 BASE_EXPORT void NSObjectRelease(void* obj); |
| 108 | 113 |
| 109 // CFTypeRefToNSObjectAutorelease transfers ownership of a Core Foundation | 114 // CFTypeRefToNSObjectAutorelease transfers ownership of a Core Foundation |
| 110 // object (one derived from CFTypeRef) to the Foundation memory management | 115 // object (one derived from CFTypeRef) to the Foundation memory management |
| 111 // system. In a traditional managed-memory environment, cf_object is | 116 // system. In a traditional managed-memory environment, cf_object is |
| 112 // autoreleased and returned as an NSObject. In a garbage-collected | 117 // autoreleased and returned as an NSObject. In a garbage-collected |
| 113 // environment, cf_object is marked as eligible for garbage collection. | 118 // environment, cf_object is marked as eligible for garbage collection. |
| 114 // | 119 // |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 258 | 263 |
| 259 BASE_EXPORT template<class T> | 264 BASE_EXPORT template<class T> |
| 260 T* ObjCCastStrict(id objc_val) { | 265 T* ObjCCastStrict(id objc_val) { |
| 261 T* rv = ObjCCast<T>(objc_val); | 266 T* rv = ObjCCast<T>(objc_val); |
| 262 DCHECK(objc_val == nil || rv); | 267 DCHECK(objc_val == nil || rv); |
| 263 return rv; | 268 return rv; |
| 264 } | 269 } |
| 265 | 270 |
| 266 #endif // defined(__OBJC__) | 271 #endif // defined(__OBJC__) |
| 267 | 272 |
| 273 // Utility function to pull out a value from a dictionary, check its type, and | |
| 274 // return it. Returns NULL if the key is not present or of the wrong type. | |
| 275 // Is a cleaner implementation of base::mac::GetValueFromDictionary() above. | |
| 276 BASE_EXPORT template<class T> | |
| 277 T GetValueFromDictionary(CFDictionaryRef dict, CFStringRef key); | |
| 278 | |
| 268 } // namespace mac | 279 } // namespace mac |
| 269 } // namespace base | 280 } // namespace base |
| 270 | 281 |
| 271 // Stream operations for CFTypes. They can be used with NSTypes as well | 282 // Stream operations for CFTypes. They can be used with NSTypes as well |
| 272 // by using the NSToCFCast methods above. | 283 // by using the NSToCFCast methods above. |
| 273 // e.g. LOG(INFO) << base::mac::NSToCFCast(@"foo"); | 284 // e.g. LOG(INFO) << base::mac::NSToCFCast(@"foo"); |
| 274 // Operator << can not be overloaded for ObjectiveC types as the compiler | 285 // Operator << can not be overloaded for ObjectiveC types as the compiler |
| 275 // can not distinguish between overloads for id with overloads for void*. | 286 // can not distinguish between overloads for id with overloads for void*. |
| 276 BASE_EXPORT extern std::ostream& operator<<(std::ostream& o, | 287 BASE_EXPORT extern std::ostream& operator<<(std::ostream& o, |
| 277 const CFErrorRef err); | 288 const CFErrorRef err); |
| 278 BASE_EXPORT extern std::ostream& operator<<(std::ostream& o, | 289 BASE_EXPORT extern std::ostream& operator<<(std::ostream& o, |
| 279 const CFStringRef str); | 290 const CFStringRef str); |
| 280 | 291 |
| 281 #endif // BASE_MAC_FOUNDATION_UTIL_H_ | 292 #endif // BASE_MAC_FOUNDATION_UTIL_H_ |
| OLD | NEW |