+++ /dev/null
-/*
- Copyright (C) 2011 Jeroen Frijters
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-
- Jeroen Frijters
- jeroen@frijters.net
-
-*/
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace IKVM.Reflection.Emit
-{
- public sealed class CustomModifiersBuilder
- {
- private readonly List<Item> list = new List<Item>();
-
- internal struct Item
- {
- internal Type type;
- internal bool required;
- }
-
- public void AddRequired(Type type)
- {
- Item item;
- item.type = type;
- item.required = true;
- list.Add(item);
- }
-
- public void AddOptional(Type type)
- {
- Item item;
- item.type = type;
- item.required = false;
- list.Add(item);
- }
-
- // this adds the custom modifiers in the same order as the normal SRE APIs
- // (the advantage over using the SRE APIs is that a CustomModifiers object is slightly more efficient,
- // because unlike the Type arrays it doesn't need to be copied)
- public void Add(Type[] requiredCustomModifiers, Type[] optionalCustomModifiers)
- {
- foreach (CustomModifiers.Entry entry in CustomModifiers.FromReqOpt(requiredCustomModifiers, optionalCustomModifiers))
- {
- Item item;
- item.type = entry.Type;
- item.required = entry.IsRequired;
- list.Add(item);
- }
- }
-
- public CustomModifiers Create()
- {
- return new CustomModifiers(list);
- }
- }
-}