62 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using MonoFN.Cecil;
 | |
| using SR = System.Reflection;
 | |
| 
 | |
| 
 | |
| namespace FishNet.CodeGenerating
 | |
| {
 | |
|     internal abstract class CodegenBase
 | |
|     {
 | |
|         //Lazy debug checks.
 | |
|         public bool IsIsolatedAsm => (Module.Name.Contains("IsolatedAsm"));
 | |
|         public bool IsRuntimeAsm => (Module.Name.Contains("FishNet.Runtime"));
 | |
| 
 | |
|         public CodegenSession Session { get; private set; }
 | |
|         public ModuleDefinition Module { get; private set; }
 | |
| 
 | |
|         public virtual bool ImportReferences() { return true; }
 | |
| 
 | |
|         public void Initialize(CodegenSession session)
 | |
|         {
 | |
|             Session = session;
 | |
|             Module = session.Module;
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Returns class of type if found within Session.
 | |
|         /// </summary>
 | |
|         /// <typeparam name="T"></typeparam>
 | |
|         /// <returns></returns>
 | |
|         internal T GetClass<T>() where T : CodegenBase => Session.GetClass<T>();
 | |
| 
 | |
|         #region Logging.
 | |
|         /// <summary>
 | |
|         /// Logs a warning.
 | |
|         /// </summary>
 | |
|         /// <param name="msg"></param>
 | |
|         internal void LogWarning(string msg) => Session.LogWarning(msg);
 | |
|         /// <summary>
 | |
|         /// Logs an error.
 | |
|         /// </summary>
 | |
|         /// <param name="msg"></param>
 | |
|         internal void LogError(string msg) => Session.LogError(msg);
 | |
|         #endregion
 | |
| 
 | |
|         #region ImportReference.
 | |
|         public MethodReference ImportReference(SR.MethodBase method) => Session.ImportReference(method);
 | |
|         public MethodReference ImportReference(SR.MethodBase method, IGenericParameterProvider context) => Session.ImportReference(method, context);
 | |
|         public TypeReference ImportReference(TypeReference type) => Session.ImportReference(type);
 | |
|         public TypeReference ImportReference(TypeReference type, IGenericParameterProvider context) => Session.ImportReference(type, context);
 | |
|         public FieldReference ImportReference(FieldReference field) => Session.ImportReference(field);
 | |
|         public FieldReference ImportReference(FieldReference field, IGenericParameterProvider context) => Session.ImportReference(field, context);
 | |
|         public FieldReference ImportReference(SR.FieldInfo field) => Session.ImportReference(field);
 | |
|         public FieldReference ImportReference(SR.FieldInfo field, IGenericParameterProvider context) => Session.ImportReference(field, context);
 | |
|         public MethodReference ImportReference(MethodReference method) => Session.ImportReference(method);
 | |
|         public MethodReference ImportReference(MethodReference method, IGenericParameterProvider context) => Session.ImportReference(method, context);
 | |
|         public TypeReference ImportReference(System.Type type) => Session.ImportReference(type, null);
 | |
|         public TypeReference ImportReference(System.Type type, IGenericParameterProvider context) => Session.ImportReference(type, context);
 | |
|         #endregion
 | |
| 
 | |
|     }
 | |
| 
 | |
| }
 |