00001 #ifndef CATALOGABLE_CLASS
00002 #define CATALOGABLE_CLASS
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "node_dll.h"
00019
00020 #include <basis/mutex.h>
00021
00022
00023 class unique_int;
00024
00025 namespace nodes {
00026
00028
00029 class NODES_CLASS_STYLE catalogable : public mutex
00030 {
00031 public:
00032 catalogable();
00033 catalogable(const unique_int &id);
00034 catalogable(const catalogable &to_copy);
00035
00036 virtual ~catalogable();
00037
00038 catalogable &operator =(const catalogable &to_copy);
00039
00040 unique_int id() const;
00042
00043 void assign_unique_id(const unique_int &new_id);
00045
00050 virtual istring catalogable_name() const = 0;
00052
00053 private:
00054 unique_int *_uid;
00055 };
00056
00057 }
00058
00059 #endif
00060