Inheritance: STRuntimeObject
コード例 #1
0
ファイル: STSymbol.cs プロジェクト: rezonant/irontalk
        public static STSymbol Get(string name)
        {
            STSymbol value;
            if (!symbols.TryGetValue(name, out value)) {
                value = new STSymbol(name);
                symbols[name] = value;
            }

            return value;
        }
コード例 #2
0
ファイル: STClass.cs プロジェクト: rezonant/irontalk
 public STClass SubclassNamespaceWith(STSymbol name, STObject nsObj, STBlock blockObj)
 {
     var @class = SubclassNamespace(name, nsObj);
     @class.With(blockObj as STBlock);
     return @class;
 }
コード例 #3
0
ファイル: STClass.cs プロジェクト: rezonant/irontalk
        public STClass SubclassNamespace(STSymbol name, STObject nsObj)
        {
            var ns = nsObj as STNamespace;

            if (ns == null)
                throw new Exception ("namespace parameter must hold a valid Namespace object, not " + nsObj.GetType().FullName);

            var @class = Subclass(name);
            ns.Install(name, @class);

            return @class;
        }
コード例 #4
0
ファイル: STClass.cs プロジェクト: rezonant/irontalk
        public STClass Subclass(STSymbol name)
        {
            Console.WriteLine ("Creating subclass of {0} named '{1}'", Type.FullName, name.Name);

            var @class = new STClass(this, name.Name);
            @class.Initialize();
            return @class;
        }
コード例 #5
0
ファイル: STObject.cs プロジェクト: rezonant/irontalk
 public virtual STObject Send(STSymbol message, params STObject[] args)
 {
     STMessage msg = new STMessage (this, message, args);
     try {
         return Class.RouteMessage(msg);
     } catch (MessageNotUnderstood e) {
         if (message.Name == "doesNotUnderstand:")
             throw e;	// avoid infinite recursion
         return Send (STSymbol.Get("doesNotUnderstand:"), msg);
     }
 }
コード例 #6
0
ファイル: STNamespace.cs プロジェクト: rezonant/irontalk
 public void Install(STSymbol key, STObject value)
 {
     Map[key] = value;
 }
コード例 #7
0
ファイル: STMessage.cs プロジェクト: rezonant/irontalk
 public STMessage(STObject receiver, STSymbol message, params STObject[] args)
 {
     Receiver = receiver;
     Selector = message;
     Parameters = args;
 }
コード例 #8
0
 public STMethodPrototype(STClass @class, STSymbol selector, STSymbol[] parameterNames)
 {
     BuildingClass = @class;
     Selector = selector;
     ParameterNames = parameterNames;
 }