diff options
| author | Rich Hickey <richhickey@gmail.com> | 2006-04-21 20:21:59 +0000 |
|---|---|---|
| committer | Rich Hickey <richhickey@gmail.com> | 2006-04-21 20:21:59 +0000 |
| commit | a42245c3e9c1cf2c2e54dc31c7bffd91ae32dac8 (patch) | |
| tree | 16e579a97f4a87a860782cf56c7e937bf2b2c931 /src/cli/runtime/Namespace.cs | |
| parent | 165da010e2c81bab2128231384128b39b7c9a127 (diff) | |
revised symbol system
Diffstat (limited to 'src/cli/runtime/Namespace.cs')
| -rw-r--r-- | src/cli/runtime/Namespace.cs | 38 |
1 files changed, 8 insertions, 30 deletions
diff --git a/src/cli/runtime/Namespace.cs b/src/cli/runtime/Namespace.cs index 0a4acdf6..a78b0ed1 100644 --- a/src/cli/runtime/Namespace.cs +++ b/src/cli/runtime/Namespace.cs @@ -26,26 +26,11 @@ static public HybridDictionary table = new HybridDictionary(); /** * String->Symbol - */ -public HybridDictionary symbols = new HybridDictionary(); + */
+public HybridDictionary vars = new HybridDictionary();
+public HybridDictionary accessors = new HybridDictionary(); public String name; -static public Namespace globalNS = new Namespace(""); -static public Namespace keywordNS = new KeywordNamespace("keyword"); - -class KeywordNamespace : Namespace{ - public KeywordNamespace(String name) : base(name) - { - - } - override public Symbol intern(String name) - { - Symbol sym = (Symbol) symbols[name]; - if(sym == null) - symbols.Add(name, sym = new Keyword(name, this)); - return sym; - } -}; Namespace(String name) { @@ -67,17 +52,10 @@ static public Namespace findOrCreate(String name) ns = new Namespace(name); return ns; } - } - -virtual public Symbol intern(String name) - { - lock(symbols) - { - Symbol sym = (Symbol) symbols[name]; - if(sym == null) - symbols.Add(name, sym = new Symbol(name, this)); - return sym; - } - } + }
+
+public Var internVar(String name)
{
lock(vars)
{
Var var = (Var) vars[name];
if(var == null)
vars.Add(name,var = new Var(name, this));
return var;
}
}
+
+public Accessor internAccessor(String name)
{
lock(accessors)
{
Accessor acc = (Accessor) accessors[name];
if(acc == null)
accessors.Add(name, acc = new Accessor(name, this));
return acc;
}
} } } |
