usb: getting string descriptors, minor improvements
[quarnos.git] / manes / cds / factory.cpp
blob744b967c611c1bc483d84d6bb51b0234ee95dcbc
1 /* Quarn OS / Manes / CDS
3 * Factory
5 * Copyright (C) 2009 Pawel Dziepak
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License along
18 * with this program; if not, write to the Free Software Foundation, Inc.,
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23 #include "factory.h"
25 using namespace manes::cds;
27 p<component> factory::new_component(const component_name &obj_type) {
28 throw new not_supported_exception;
32 p<component> factory::get_component(const component_name &obj) {
33 if (obj.get_type().get_name() == "type") {
34 /* Client looks for type with a certain name */
35 for (int i = 0; i < components.get_count(); i++)
36 if (components[i]->get_name() == obj)
37 return components[i];
39 } else if (obj.get_type().get_name() == "driver") {
40 /* Clients looks for appropiate driver and uses index to get type */
41 return components[obj.get_index()];
44 return p<component>::invalid;
48 p<component> factory::add_existing(p<component> tpe) {
49 if (tpe.is<type>())
50 components.add(tpe);
51 else
52 throw new argument_exception;
54 return tpe;