/// <summary> /// Adiciona un nuevo tipo a la clase codigo /// </summary> /// <param name="typeCodeName"></param> /// <param name="type"></param> public void AddTypeBuilder(string typeCodeName, Type type) { if (DefinedType.ContainsKey(typeCodeName)) { throw new ArgumentException("Un tipo con ese nombre ya fue declarado en el codigo"); } DefinedType.Add(typeCodeName, type); }
/// <summary> /// Devuelve un tipo dado su nombre. Si el tipo no esta definido se crea solamente con el nombre /// </summary> /// <param name="typeCodeName"></param> /// <returns></returns> public Type GetTypeBuilderMaybeNotCreated(string typeCodeName) { if (DefinedType.ContainsKey(typeCodeName)) { return(DefinedType[typeCodeName]); } DefinedType.Add(typeCodeName, Module.DefineType(typeCodeName)); return(DefinedType[typeCodeName]); }
/// <summary> /// Asocia una funcion con el wrapper que ella crea. /// </summary> /// <param name="functionCodeName"></param> /// <param name="typeWrapperCodeName"></param> public void AsociatteMethodToWrapper(string functionCodeName, string typeWrapperCodeName) { if (!DefinedMethod.ContainsKey(functionCodeName)) { throw new ArgumentException("La funcion debe ser annadida antes"); } if (!DefinedType.ContainsKey(typeWrapperCodeName)) { throw new ArgumentException("El tipo tiene que ser annadido antes"); } if (FuntionWrapper.ContainsKey(functionCodeName)) { throw new ArgumentException("Ya se ha asociado esa funcion a ese tipo"); } var typeBuilder = (TypeBuilder)DefinedType[typeWrapperCodeName]; var typeCodeInfo = new TypeCodeInfo { TypeCodeName = typeWrapperCodeName, Type = typeBuilder }; FuntionWrapper.Add(functionCodeName, typeCodeInfo); }