Esempio n. 1
0
 void load_global()
 {
     IObjectConstructor constructor;
     string module = pu.readline();
     string name = pu.readline();
     string key=module+"."+name;
     if(objectConstructors.ContainsKey(key)) {
      constructor = objectConstructors[module + "." + name];
     } else {
     // check if it is an exception
     if(module=="exceptions") {
         constructor=new AnyClassConstructor(typeof(PythonException));
     } else {
         throw new PickleException("unsupported class: " + module + "." + name);
     }
     }
     stack.add(constructor);
 }
Esempio n. 2
0
	void load_global_sub(string module, string name) {
		IObjectConstructor constructor;
		string key=module+"."+name;
		if(objectConstructors.ContainsKey(key)) {
			 constructor = objectConstructors[module + "." + name];
		} else {
			// check if it is an exception
			if(module=="exceptions") {
				// python 2.x
				constructor=new AnyClassConstructor(typeof(PythonException));
			} else if(module=="builtins" || module=="__builtin__") {
				if(name.EndsWith("Error") || name.EndsWith("Warning") || name.EndsWith("Exception")
						|| name=="GeneratorExit" || name=="KeyboardInterrupt"
						|| name=="StopIteration" || name=="SystemExit")
				{
					// it's a python 3.x exception
					constructor=new AnyClassConstructor(typeof(PythonException));
				}
				else
				{
					// return a dictionary with the class's properties
					constructor=new ClassDictConstructor(module, name);
				}			
			} else {
				// return a dictionary with the class's properties
				constructor=new ClassDictConstructor(module, name);
			}
		}
		stack.add(constructor);		
	}