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

Commit0295dd2

Browse files
author
Mohamed Koubaa
committed
Implement binding manager to hold binding overrides
1 parentdfd746b commit0295dd2

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;
@@ -254,7 +255,7 @@ internal static void InitClassBase(Type type, ClassBase impl, ReflectedClrType p
254255
if(co.NumCtors>0&&!co.HasCustomNew())
255256
{
256257
// Implement Overloads on the class object
257-
if(!CLRModule._SuppressOverloads)
258+
if(!bindingOptions.SuppressOverloads)
258259
{
259260
// HACK: __init__ points to instance constructors.
260261
// When unbound they fully instantiate object, so we get overloads for free from MethodBinding.
@@ -265,7 +266,7 @@ internal static void InitClassBase(Type type, ClassBase impl, ReflectedClrType p
265266
}
266267

267268
// don't generate the docstring if one was already set from a DocStringAttribute.
268-
if(!CLRModule._SuppressDocs&&doc.IsNull())
269+
if(!bindingOptions.SuppressDocs&&doc.IsNull())
269270
{
270271
doc=co.GetDocString();
271272
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