diff options
author | jfrijters <jfrijters> | 2010-01-25 08:29:31 +0300 |
---|---|---|
committer | jfrijters <jfrijters> | 2010-01-25 08:29:31 +0300 |
commit | 198c9d70eac5d6d88718bfedee19314edf77661b (patch) | |
tree | cf6e13cb042f93d214c145fd405fefc19cb21b59 /reflect/ManifestResourceInfo.cs | |
parent | 2966abd1dcb1eaa8fe692094f657943a9f2d21be (diff) |
New IKVM.Reflection implementation.
Diffstat (limited to 'reflect/ManifestResourceInfo.cs')
-rw-r--r-- | reflect/ManifestResourceInfo.cs | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/reflect/ManifestResourceInfo.cs b/reflect/ManifestResourceInfo.cs new file mode 100644 index 00000000..1435eb8b --- /dev/null +++ b/reflect/ManifestResourceInfo.cs @@ -0,0 +1,83 @@ +/* + Copyright (C) 2009 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 IKVM.Reflection.Reader; +using IKVM.Reflection.Metadata; + +namespace IKVM.Reflection +{ + public class ManifestResourceInfo + { + private readonly ModuleReader module; + private readonly int index; + + internal ManifestResourceInfo(ModuleReader module, int index) + { + this.module = module; + this.index = index; + } + + public ResourceLocation ResourceLocation + { + get + { + int implementation = module.ManifestResource.records[index].Implementation; + if ((implementation >> 24) == AssemblyRefTable.Index) + { + //return ResourceLocation.ContainedInAnotherAssembly; + throw new NotImplementedException(); + } + else if ((implementation >> 24) == FileTable.Index) + { + if ((implementation & 0xFFFFFF) == 0) + { + return ResourceLocation.ContainedInManifestFile | ResourceLocation.Embedded; + } + throw new NotImplementedException(); + } + else + { + throw new BadImageFormatException(); + } + } + } + + public Assembly ReferencedAssembly + { + get { throw new NotImplementedException(); } + } + + public string FileName + { + get + { + if (this.ResourceLocation != (ResourceLocation.ContainedInManifestFile | ResourceLocation.Embedded)) + { + throw new NotImplementedException(); + } + return null; + } + } + } +} |