From 39716138161a47a60366f94dcb9563150d74f9e7 Mon Sep 17 00:00:00 2001 From: Pawel Dziepak Date: Mon, 14 Jul 2008 22:18:09 +0200 Subject: [PATCH] first stage of unifying resources and services systems * base class for service/resource managers * base class for service/resource class * base class for service/resource_name class Only interfaces. Implementation will be introduced in next commit. --- manes/manager.h | 15 +++++++++++++++ manes/object.h | 8 ++++++++ manes/type.h | 22 ++++++++++++++++++++++ resources/resource.h | 2 +- resources/resource_manager.h | 2 +- resources/resource_name.h | 16 ++++++++-------- services/service.h | 2 +- services/service_manager.h | 2 +- services/service_name.h | 2 +- 9 files changed, 58 insertions(+), 13 deletions(-) create mode 100644 manes/manager.h create mode 100644 manes/object.h create mode 100644 manes/type.h diff --git a/manes/manager.h b/manes/manager.h new file mode 100644 index 0000000..994fa84 --- /dev/null +++ b/manes/manager.h @@ -0,0 +1,15 @@ +namespace manes { + class manager { + protected: + list object_types; + + object *get_object(list*,type*); + void new_object_list(list*,type*); + + public: + virtual void new_object(type*) = 0; + + void register_type(type*); + type *get_type(const char*); + }; +} diff --git a/manes/object.h b/manes/object.h new file mode 100644 index 0000000..6364c19 --- /dev/null +++ b/manes/object.h @@ -0,0 +1,8 @@ +namespace manes { + class object { + type *_type; + public: + object(type *); + type *get_type(); + }; +} diff --git a/manes/type.h b/manes/type.h new file mode 100644 index 0000000..f600e0f --- /dev/null +++ b/manes/type.h @@ -0,0 +1,22 @@ +namespace manes { + class type { + protected: + int atomic; + type *base; + const char *name; + int id; + + delegate create_object; + public: + type(type*, const char *, int, int, delegate); + + int get_id() const; + const char *get_name() const; + type *get_atomic_type() const; + + bool operator==(type &); + bool operator!=(type &); + + object *create(); + }; +} diff --git a/resources/resource.h b/resources/resource.h index 142e670..85d5dd2 100644 --- a/resources/resource.h +++ b/resources/resource.h @@ -15,7 +15,7 @@ #include "access_control.h" namespace resources { - class resource { + class resource : public manes::object { private: resource_name *_type; diff --git a/resources/resource_manager.h b/resources/resource_manager.h index 008edbf..18cb9ed 100644 --- a/resources/resource_manager.h +++ b/resources/resource_manager.h @@ -22,7 +22,7 @@ namespace resources { class res_fs; class res_stream; - class resource_manager { + class resource_manager : public manes::manager { private: list char_devs; list block_devs; diff --git a/resources/resource_name.h b/resources/resource_name.h index 0d964fc..6413e7e 100644 --- a/resources/resource_name.h +++ b/resources/resource_name.h @@ -1,6 +1,6 @@ /* Quarn OS * - * Resource name class + * Resource type class * * Copyright (C) 2008 Pawel Dziepak * @@ -8,14 +8,14 @@ */ -#ifndef _RESOURCE_NAME_H_ -#define _RESOURCE_NAME_H_ +#ifndef _RESOURCE_TYPE_H_ +#define _RESOURCE_TYPE_H_ #include "../libs/delegate.h" namespace resources { class resource; - class resource_name { + class resource_type : public manes::type { public: typedef enum { char_dev, @@ -34,14 +34,14 @@ namespace resources { delegate create_resource; public: - resource_name(resource_base_type, const char *, int,delegate ); + resource_type(resource_base_type, const char *, int,delegate ); int get_id() const; - const char *get_name() const; + const char *get_type() const; resource_base_type get_type() const; - bool operator==(resource_name &); - bool operator!=(resource_name &); + bool operator==(resource_type &); + bool operator!=(resource_type &); resource *create(); diff --git a/services/service.h b/services/service.h index 04099d2..bfe0de5 100644 --- a/services/service.h +++ b/services/service.h @@ -25,7 +25,7 @@ namespace services { * services system management (part of managed execution system) that * is implemented using static methods and fields (variables). */ - class service { + class service : public manes::object { private: /** diff --git a/services/service_manager.h b/services/service_manager.h index b8356dc..530c2fd 100644 --- a/services/service_manager.h +++ b/services/service_manager.h @@ -17,7 +17,7 @@ #include "../libs/list.h" namespace services { - class service_manager { + class service_manager : public manes::manager { private: /** * List of services diff --git a/services/service_name.h b/services/service_name.h index 74006d6..7cb1045 100644 --- a/services/service_name.h +++ b/services/service_name.h @@ -19,7 +19,7 @@ namespace services { class service; class service_manager; - class service_name { + class service_name : public manes::type { private: service_name *base; const char *name; -- 2.11.4.GIT