Skip to content

Commit 2a77214

Browse files
committed
Updated Conari 1.5.0 and PeViewer project;
Cecil 0.11.6; ILMerge 3.0.41
1 parent 700dc64 commit 2a77214

File tree

6 files changed

+98
-158
lines changed

6 files changed

+98
-158
lines changed

src/DllExport/PeViewer/ArgsHelper.cs

Lines changed: 24 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -11,41 +11,27 @@
1111

1212
namespace net.r_eg.DllExport.PeViewer
1313
{
14-
internal sealed class ArgsHelper: IEnumerable<ArgsHelper>
14+
/// <remarks>NOT thread safe</remarks>
15+
internal sealed class ArgsHelper(string[] args): IEnumerable<ArgsHelper>
1516
{
16-
private HashSet<int> accepted = new HashSet<int>();
17+
private readonly HashSet<int> accepted = [];
1718

18-
private string[] args;
19-
private volatile int idx;
20-
private object sync = new object();
19+
private readonly string[] args = args ?? throw new ArgumentNullException(nameof(args));
20+
private int idx;
2121

22-
public IEnumerator<ArgsHelper> GetEnumerator()
23-
{
24-
return Iterate.GetEnumerator();
25-
}
22+
public IEnumerator<ArgsHelper> GetEnumerator() => Iterate.GetEnumerator();
2623

27-
IEnumerator IEnumerable.GetEnumerator()
28-
{
29-
return Iterate.GetEnumerator();
30-
}
24+
IEnumerator IEnumerable.GetEnumerator() => Iterate.GetEnumerator();
3125

3226
public IEnumerable<ArgsHelper> Iterate
3327
{
3428
get
3529
{
36-
lock(sync)
37-
{
38-
for(idx = 0; idx < args.Length; ++idx) {
39-
yield return this;
40-
}
41-
}
30+
for(idx = 0; idx < args.Length; ++idx) yield return this;
4231
}
4332
}
4433

45-
public bool IsEmpty
46-
{
47-
get => args.Length < 1;
48-
}
34+
public bool IsEmpty => args.Length < 1;
4935

5036
/// <summary>
5137
/// Expected keys that was accepted for using.
@@ -54,9 +40,7 @@ public IEnumerable<string> Used
5440
{
5541
get
5642
{
57-
foreach(var pos in accepted) {
58-
yield return args[pos];
59-
}
43+
foreach(int pos in accepted) yield return args[pos];
6044
}
6145
}
6246

@@ -67,47 +51,34 @@ public IEnumerable<string> NonUsed
6751
{
6852
get
6953
{
70-
for(int i = 0; i < args.Length; ++i) {
71-
if(!accepted.Contains(i)) {
72-
yield return args[i];
73-
}
54+
for(int i = 0; i < args.Length; ++i)
55+
{
56+
if(!accepted.Contains(i)) yield return args[i];
7457
}
7558
}
7659
}
7760

78-
public bool Is(string key)
79-
{
80-
return Is(key, false, out string nul);
81-
}
61+
public bool Is(string key) => Is(key, false, out _);
8262

83-
public bool Is(string key, out string value)
84-
{
85-
return Is(key, true, out value);
86-
}
63+
public bool Is(string key, out string value) => Is(key, true, out value);
8764

8865
public bool Is(string key, bool hasVal, out string value)
8966
{
9067
value = null;
9168

92-
lock(sync)
69+
if(string.IsNullOrWhiteSpace(key) || !Eq(args[idx], key))
9370
{
94-
if(String.IsNullOrWhiteSpace(key) || !Eq(args[idx], key)) {
95-
return false;
96-
}
71+
return false;
72+
}
9773

98-
accepted.Add(idx);
74+
accepted.Add(idx);
9975

100-
if(hasVal && ++idx < args.Length) {
101-
value = args[idx];
102-
accepted.Add(idx);
103-
}
104-
return true;
76+
if(hasVal && ++idx < args.Length)
77+
{
78+
value = args[idx];
79+
accepted.Add(idx);
10580
}
106-
}
107-
108-
public ArgsHelper(string[] args)
109-
{
110-
this.args = args ?? throw new ArgumentNullException(nameof(args));
81+
return true;
11182
}
11283

11384
private bool Eq(string a, string b, StringComparison cmp = StringComparison.InvariantCultureIgnoreCase)

src/DllExport/PeViewer/ArgsMapper.cs

Lines changed: 19 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -13,29 +13,20 @@ namespace net.r_eg.DllExport.PeViewer
1313
{
1414
internal sealed class ArgsMapper
1515
{
16-
private IDictionary<string, bool> commands;
16+
private readonly IDictionary<string, bool> commands;
1717

18-
public ArgsHelper AHelper
19-
{
20-
get;
21-
private set;
22-
}
18+
public ArgsHelper AHelper { get; private set; }
2319

24-
public bool IsEmptyArgs
25-
{
26-
get => AHelper.IsEmpty;
27-
}
20+
public bool IsEmptyArgs => AHelper.IsEmpty;
2821

2922
public IEnumerable<string> CommandsPrintVersion
3023
{
3124
get
3225
{
3326
foreach(var cmd in commands)
3427
{
35-
var ret = $"{cmd.Key}";
36-
if(cmd.Value) {
37-
ret += " {data}";
38-
}
28+
string ret = $"{cmd.Key}";
29+
if(cmd.Value) ret += " {...}";
3930
yield return ret;
4031
}
4132
}
@@ -45,15 +36,9 @@ public IEnumerable<string> CommandsPrintVersion
4536
/// Keys that was defined in map but was not found in arguments.
4637
/// </summary>
4738
public IEnumerable<string> NotFound
48-
{
49-
get => Map.Where(m => !m.Value.defined).Select(m => m.Key);
50-
}
39+
=> Map.Where(m => !m.Value.defined).Select(m => m.Key);
5140

52-
public Dictionary<string, ArgImp> Map
53-
{
54-
get;
55-
private set;
56-
} = new Dictionary<string, ArgImp>();
41+
public Dictionary<string, ArgImp> Map { get; private set; } = [];
5742

5843
internal struct ArgImp
5944
{
@@ -75,10 +60,7 @@ public ArgImp GetArg(string name)
7560
/// </summary>
7661
/// <param name="argname"></param>
7762
/// <returns></returns>
78-
public bool Is(string argname)
79-
{
80-
return GetArg(argname).defined;
81-
}
63+
public bool Is(string argname) => GetArg(argname).defined;
8264

8365
/// <summary>
8466
/// Is defined in args collection ?
@@ -88,16 +70,13 @@ public bool Is(string argname)
8870
/// <returns></returns>
8971
public bool Is(string argname, out string value)
9072
{
91-
var ret = GetArg(argname);
73+
ArgImp ret = GetArg(argname);
9274

9375
value = ret.value;
9476
return ret.defined;
9577
}
9678

97-
public string GetValue(string argname)
98-
{
99-
return GetArg(argname).value;
100-
}
79+
public string GetValue(string argname) => GetArg(argname).value;
10180

10281
public ArgsMapper(string[] args, IDictionary<string, bool> cmds)
10382
{
@@ -106,25 +85,24 @@ public ArgsMapper(string[] args, IDictionary<string, bool> cmds)
10685

10786
foreach(var cmd in commands)
10887
{
109-
var imp = new ArgImp {
110-
name = cmd.Key
111-
};
88+
ArgImp imp = new() { name = cmd.Key };
11289

113-
foreach(var arg in AHelper)
90+
foreach(ArgsHelper arg in AHelper)
11491
{
115-
if(!cmd.Value) {
92+
if(!cmd.Value)
93+
{
11694
imp.defined = arg.Is(imp.name);
11795
}
118-
else {
96+
else
97+
{
11998
imp.defined = arg.Is(imp.name, out imp.value);
12099
}
121100

122-
if(imp.defined) {
123-
break;
124-
}
101+
if(imp.defined) break;
125102
}
126103

127-
if(Map.ContainsKey(imp.name)) {
104+
if(Map.ContainsKey(imp.name))
105+
{
128106
throw new ArgumentException($"Duplicate arguments are not allowed: '{imp.name}'");
129107
}
130108
Map[imp.name] = imp;

src/DllExport/PeViewer/PeFile.cs

Lines changed: 0 additions & 29 deletions
This file was deleted.

0 commit comments

Comments
 (0)