private void ConvertPasProcedureDecl(PasProcedureDecl pasProcedure, List<CsStat> csCodes) { var csDelegate = new CsDelegateDomain(); csDelegate.Name = pasProcedure.Name + "Delegate"; ConvertPasParams(pasProcedure.Params, csDelegate.Params); AddDecls(csDelegate.Codes, pasProcedure.Decls); AddCodes(csDelegate.Codes, pasProcedure.Codes); csDelegate.ReturnType = ConvertPasTypeRef(pasProcedure.ReturnType); var csVar = new CsLocalVarDecl(); csVar.Name = pasProcedure.Name; csVar.TypeRef = new CsRef { Decl = csDelegate }; csCodes.Add(csVar); ///_mappings[pasProcedure]= csVar; }
void ConvertPasProcedureDecl(PasProcedureDecl pasProcedure, CsClassTypeDecl csClass, bool isStatic) { /// TODO procurar com mesma lista de parametros var csMethod = csClass.Decls.Find(e => e.Name == pasProcedure.Name) as CsMethodDecl; if (csMethod != null) { var saved = convertingMethod; convertingMethod = csMethod; try { AddDecls(csMethod.Codes, pasProcedure.Decls); AddCodes(csMethod.Codes, pasProcedure.Codes); } finally { convertingMethod = saved; } } else { csMethod = new CsMethodDecl(); var saved = convertingMethod; convertingMethod = csMethod; try { csMethod.Name = pasProcedure.Name; csMethod.ReturnType = ConvertPasTypeRef(pasProcedure.ReturnType); csMethod.IsConstructor = pasProcedure.Approach == PasProcedureApproach.Constructor; csMethod.IsDestructor = pasProcedure.Approach == PasProcedureApproach.Destructor; csMethod.IsOverride = pasProcedure.IsOverride; csMethod.IsVirtual = pasProcedure.IsVirtual; csMethod.IsStatic = pasProcedure.IsStatic || isStatic; csMethod.IsAbstract = pasProcedure.IsAbstract; csMethod.Visibility = CsVisibilityOf(pasProcedure.Visibility); ConvertPasParams(pasProcedure.Params, csMethod.Params); if (pasProcedure.ReturnType != null) csMethod.Codes.Add(new CsLocalVarDecl { Name = "Result", TypeRef = csMethod.ReturnType }); AddDecls(csMethod.Codes, pasProcedure.Decls); AddCodes(csMethod.Codes, pasProcedure.Codes); csClass.Decls.Add(csMethod); _associations.Assign(pasProcedure, csMethod); } finally { convertingMethod = saved; } } }
void ConvertPasProcedureDecl(PasProcedureDecl pasProcedure, CsNamespace csNamespace) { if (!string.IsNullOrEmpty(pasProcedure.InClassName)) { var csClass = csNamespace.Decls.Find(e => e.Name == pasProcedure.InClassName) as CsClassTypeDecl; if (csClass == null) throw new Exception(string.Format("Classe não encontrada: {0}", pasProcedure.InClassName)); ConvertPasProcedureDecl(pasProcedure, csClass, false); } else ConvertPasProcedureDecl(pasProcedure, NamespaceClass(csNamespace), true); }