1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef UI_OZONE_PLATFORM_OBJECT_H_ 6 #define UI_OZONE_PLATFORM_OBJECT_H_ 7 8 #include "base/memory/scoped_ptr.h" 9 10 namespace ui { 11 12 // Create an instance of platform specific object. 13 // 14 // This calls a static constructor function based on the --ozone-platform flag. 15 // 16 // For the platform called "foo", PlatformObject<PlatformWidget> will ultimately 17 // call the function with signature 18 // 19 // PlatformWidget* CreatePlatformWidgetFoo(); 20 // 21 // A definition of this function for each compiled platform must be provided, or 22 // link errors will result. 23 // 24 // To find the right constructor function, this uses static data defined in the 25 // source file generated by the generate_constructor_list.py. 26 template <class T> 27 class PlatformObject { 28 public: 29 static scoped_ptr<T> Create(); 30 }; 31 32 } // namespace ui 33 34 #endif // UI_OZONE_PLATFORM_OBJECT_H_ 35