mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-16 19:57:57 +01:00
try to use python.net as the bridge.
This commit is contained in:
62
Pythonnet.Runtime/codegenerator.cs
Normal file
62
Pythonnet.Runtime/codegenerator.cs
Normal file
@@ -0,0 +1,62 @@
|
||||
// ==========================================================================
|
||||
// This software is subject to the provisions of the Zope Public License,
|
||||
// Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
|
||||
// THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
|
||||
// WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
// WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
|
||||
// FOR A PARTICULAR PURPOSE.
|
||||
// ==========================================================================
|
||||
|
||||
using System;
|
||||
using System.Threading;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Collections;
|
||||
using System.Reflection;
|
||||
using System.Reflection.Emit;
|
||||
|
||||
namespace Python.Runtime {
|
||||
|
||||
/// <summary>
|
||||
/// Several places in the runtime generate code on the fly to support
|
||||
/// dynamic functionality. The CodeGenerator class manages the dynamic
|
||||
/// assembly used for code generation and provides utility methods for
|
||||
/// certain repetitive tasks.
|
||||
/// </summary>
|
||||
|
||||
internal class CodeGenerator {
|
||||
|
||||
AssemblyBuilder aBuilder;
|
||||
ModuleBuilder mBuilder;
|
||||
|
||||
internal CodeGenerator() {
|
||||
AssemblyName aname = new AssemblyName();
|
||||
aname.Name = "__CodeGenerator_Assembly";
|
||||
AssemblyBuilderAccess aa = AssemblyBuilderAccess.Run;
|
||||
|
||||
aBuilder = Thread.GetDomain().DefineDynamicAssembly(aname, aa);
|
||||
mBuilder = aBuilder.DefineDynamicModule("__CodeGenerator_Module");
|
||||
}
|
||||
|
||||
//====================================================================
|
||||
// DefineType is a shortcut utility to get a new TypeBuilder.
|
||||
//====================================================================
|
||||
|
||||
internal TypeBuilder DefineType(string name) {
|
||||
TypeAttributes attrs = TypeAttributes.Public;
|
||||
return mBuilder.DefineType(name, attrs);
|
||||
}
|
||||
|
||||
//====================================================================
|
||||
// DefineType is a shortcut utility to get a new TypeBuilder.
|
||||
//====================================================================
|
||||
|
||||
internal TypeBuilder DefineType(string name, Type basetype) {
|
||||
TypeAttributes attrs = TypeAttributes.Public;
|
||||
return mBuilder.DefineType(name, attrs, basetype);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user