00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
#ifndef OMF_PACKAGE_HPP
00026
#define OMF_PACKAGE_HPP
00027
00028
00029
#include <string>
00030
#include <map>
00031
00032
namespace OMF
00033 {
00034
00035
class Model;
00036
class Class;
00037
class Association;
00038
00071 class Package
00072 {
00073
protected:
00074
Package(
const std::string &
name,
const std::string &
uri);
00075
public:
00076
virtual ~Package();
00077
00079 const std::string &
name()
const
00080
{
return _name; }
00081
00083 const std::string &
uri()
const
00084
{
return _uri; }
00085
00093
virtual Model *
model() = 0;
00094
00096
Class *
proxy(
const std::string &name)
const;
00097
00099
Association *
association(
const std::string &name)
const;
00100
00101
protected:
00106
void defProxy(
Class *proxy);
00107
00112
void defAssoc(
Association *assoc);
00113
00114
private:
00115
typedef std::map<std::string, Class *> ProxyMap;
00116
typedef std::map<std::string, Association *> AssocMap;
00117
00118 std::string _name;
00119 std::string _uri;
00120 ProxyMap _proxies;
00121 AssocMap _assocs;
00122 };
00123 };
00124
00125
#endif