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_INTERNAL_H_ 6 #define UI_OZONE_PLATFORM_OBJECT_INTERNAL_H_ 7 8 #include "ui/ozone/ozone_export.h" 9 #include "ui/ozone/platform_constructor_list.h" 10 #include "ui/ozone/platform_object.h" 11 #include "ui/ozone/platform_selection.h" 12 13 namespace ui { 14 15 template <class T> 16 scoped_ptr<T> PlatformObject<T>::Create() { 17 typedef typename PlatformConstructorList<T>::Constructor Constructor; 18 19 // Determine selected platform (from --ozone-platform flag, or default). 20 int platform = GetOzonePlatformId(); 21 22 // Look up the constructor in the constructor list. 23 Constructor constructor = PlatformConstructorList<T>::kConstructors[platform]; 24 25 // Call the constructor. 26 return make_scoped_ptr(constructor()); 27 } 28 29 } // namespace ui 30 31 #endif // UI_OZONE_PLATFORM_OBJECT_INTERNAL_H_ 32