Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitfe63b01

Browse files
Mohamed Koubaafilmor
Mohamed Koubaa
authored andcommitted
Implement binding manager to hold binding overrides
1 parent9a3c04e commitfe63b01

File tree

3 files changed

+72
-11
lines changed

3 files changed

+72
-11
lines changed

‎src/runtime/BindingOptions.cs‎

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
usingSystem;
2+
usingSystem.Collections.Generic;
3+
usingSystem.Reflection;
4+
5+
namespacePython.Runtime
6+
{
7+
publicclassBindingOptions
8+
{
9+
privatebool_SuppressDocs=false;
10+
privatebool_SuppressOverloads=false;
11+
12+
//[ModuleProperty]
13+
publicboolSuppressDocs
14+
{
15+
get{return_SuppressDocs;}
16+
set{_SuppressDocs=value;}
17+
}
18+
19+
//[ModuleProperty]
20+
publicboolSuppressOverloads
21+
{
22+
get{return_SuppressOverloads;}
23+
set{_SuppressOverloads=value;}
24+
}
25+
}
26+
27+
publicclassBindingManager
28+
{
29+
staticIDictionary<Type,BindingOptions>_typeOverrides=newDictionary<Type,BindingOptions>();
30+
staticIDictionary<Assembly,BindingOptions>_assemblyOverrides=newDictionary<Assembly,BindingOptions>();
31+
staticBindingOptions_defaultBindingOptions=newBindingOptions();
32+
33+
publicstaticBindingOptionsGetBindingOptions(Typetype)
34+
{
35+
if(_typeOverrides.ContainsKey(type))
36+
{
37+
return_typeOverrides[type];
38+
}
39+
40+
if(_assemblyOverrides.ContainsKey(type.Assembly))
41+
{
42+
return_assemblyOverrides[type.Assembly];
43+
}
44+
return_defaultBindingOptions;
45+
}
46+
47+
publicstaticBindingOptionsDefaultBindingOptions=>_defaultBindingOptions;
48+
49+
publicstaticvoidSetBindingOptions(Typetype,BindingOptionsoptions)
50+
{
51+
_typeOverrides[type]=options;
52+
}
53+
54+
publicstaticvoidSetBindingOptions(Assemblyassembly,BindingOptionsoptions)
55+
{
56+
_assemblyOverrides[assembly]=options;
57+
}
58+
59+
publicstaticvoidClear()
60+
{
61+
_typeOverrides.Clear();
62+
_assemblyOverrides.Clear();
63+
}
64+
}
65+
}

‎src/runtime/ClassManager.cs‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@ internal static void InitClassBase(Type type, ClassBase impl, ReflectedClrType p
210210
// information, including generating the member descriptors
211211
// that we'll be putting in the Python class __dict__.
212212

213+
varbindingOptions=BindingManager.GetBindingOptions(type);
213214
ClassInfoinfo=GetClassInfo(type,impl);
214215

215216
impl.indexer=info.indexer;
@@ -255,7 +256,7 @@ internal static void InitClassBase(Type type, ClassBase impl, ReflectedClrType p
255256
if(co.NumCtors>0&&!co.HasCustomNew())
256257
{
257258
// Implement Overloads on the class object
258-
if(!CLRModule._SuppressOverloads)
259+
if(!bindingOptions.SuppressOverloads)
259260
{
260261
// HACK: __init__ points to instance constructors.
261262
// When unbound they fully instantiate object, so we get overloads for free from MethodBinding.
@@ -266,7 +267,7 @@ internal static void InitClassBase(Type type, ClassBase impl, ReflectedClrType p
266267
}
267268

268269
// don't generate the docstring if one was already set from a DocStringAttribute.
269-
if(!CLRModule._SuppressDocs&&doc.IsNull())
270+
if(!bindingOptions.SuppressDocs&&doc.IsNull())
270271
{
271272
doc=co.GetDocString();
272273
Runtime.PyDict_SetItem(dict,PyIdentifier.__doc__,doc.Borrow());

‎src/runtime/Types/ClrModule.cs‎

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ internal class CLRModule : ModuleObject
1616
protectedstaticboolinteractive_preload=true;
1717
internalstaticboolpreload;
1818
// XXX Test performance of new features //
19-
internalstaticbool_SuppressDocs=false;
2019
internalstaticbool_SuppressOverloads=false;
2120

2221
staticCLRModule()
@@ -39,10 +38,6 @@ public static void Reset()
3938
{
4039
interactive_preload=true;
4140
preload=false;
42-
43-
// XXX Test performance of new features //
44-
_SuppressDocs=false;
45-
_SuppressOverloads=false;
4641
}
4742

4843
/// <summary>
@@ -82,15 +77,15 @@ public static void setPreload(bool preloadFlag)
8277
//[ModuleProperty]
8378
publicstaticboolSuppressDocs
8479
{
85-
get{return_SuppressDocs;}
86-
set{_SuppressDocs=value;}
80+
get{returnBindingManager.DefaultBindingOptions.SuppressDocs;}
81+
set{BindingManager.DefaultBindingOptions.SuppressDocs=value;}
8782
}
8883

8984
//[ModuleProperty]
9085
publicstaticboolSuppressOverloads
9186
{
92-
get{return_SuppressOverloads;}
93-
set{_SuppressOverloads=value;}
87+
get{returnBindingManager.DefaultBindingOptions.SuppressOverloads;}
88+
set{BindingManager.DefaultBindingOptions.SuppressOverloads=value;}
9489
}
9590

9691
[ModuleFunction]

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp