diff --git a/src/driver.cpp b/src/driver.cpp --- a/src/driver.cpp +++ b/src/driver.cpp @@ -165,33 +165,6 @@ Driver *DriverFactoryBase::SelectDriver( } /** - * Register a driver internally, based on its name. - * @param name the name of the driver. - * @param type the type of driver to register - * @param priority the priority; how badly do we want this as default? - * @note an assert() will be trigger if 2 driver with the same name try to register. - */ -void DriverFactoryBase::RegisterDriver(const char *name, Driver::Type type, int priority) -{ - /* Don't register nameless Drivers */ - if (name == NULL) return; - - this->name = strdup(name); - this->type = type; - this->priority = priority; - - /* Prefix the name with driver type to make it unique */ - char buf[32]; - strecpy(buf, GetDriverTypeName(type), lastof(buf)); - strecpy(buf + 5, name, lastof(buf)); - - const char *longname = strdup(buf); - - std::pair P = GetDrivers().insert(Drivers::value_type(longname, this)); - assert(P.second); -} - -/** * Build a human readable list of available drivers, grouped by type. * @param p The buffer to write to. * @param last The last element in the buffer. @@ -219,12 +192,31 @@ char *DriverFactoryBase::GetDriversInfo( } /** + * Construct a new DriverFactory. + * @param type The type of driver. + * @param priority The priority within the driver class. + * @param name The name of the driver. + * @param description A long-ish description of the driver. + */ +DriverFactoryBase::DriverFactoryBase(Driver::Type type, int priority, const char *name, const char *description) : + type(type), priority(priority), name(name), description(description) +{ + /* Prefix the name with driver type to make it unique */ + char buf[32]; + strecpy(buf, GetDriverTypeName(type), lastof(buf)); + strecpy(buf + 5, name, lastof(buf)); + + const char *longname = strdup(buf); + + std::pair P = GetDrivers().insert(Drivers::value_type(longname, this)); + assert(P.second); +} + +/** * Frees memory used for this->name */ DriverFactoryBase::~DriverFactoryBase() { - if (this->name == NULL) return; - /* Prefix the name with driver type to make it unique */ char buf[32]; strecpy(buf, GetDriverTypeName(type), lastof(buf)); @@ -239,5 +231,4 @@ DriverFactoryBase::~DriverFactoryBase() free(longname); if (GetDrivers().empty()) delete &GetDrivers(); - free(this->name); }