/// <summary> /// Rimuove tutti gli elementi presenti nella lista /// </summary> /// <param name="item">Linea di codice</param> public void RemoveAll(FunctionSection item) { while (Exist(item)) { Remove(item); } }
public void AnalyzeFunction(FunctionSection fs) { vc = new VariableCollection(); this.fs = fs; bool findReturn = false; res.AddLine(GenerateSign(fs.Function), lm); AnalyzeCodeLines(fs.FunctionCodes); for (int i = 0; i < fs.FunctionCodes.Count && findReturn == false; i++) { if (Regex.IsMatch(fs.FunctionCodes[i].Code, @"ritorna", RegexOptions.IgnoreCase)) { findReturn = true; } } if (!findReturn && fs.Function.Name.ToLower() != "programma") { res.AddLine("\treturn new Variable(\"NULL\",null);", lm); } res.AddLine("}", lm); }
/// <summary> /// Inserisce una linea di codice nella raccolta alla posizione indicata /// </summary> /// <param name="index">Posizione</param> /// <param name="item">Linea di codice</param> /// <returns>Retituisce false in caso di Linea di codice non valida</returns> public bool Insert(int index, FunctionSection item) { if (item == null) { return(false); } _scls.Insert(index, item); return(true); }
//Metodi /// <summary> /// Aggiunge una Linea di codice alla raccolta /// </summary> /// <param name="item">Linea di codice</param> /// <returns>Retituisce false in caso di Linea di codice non valida</returns> public bool Add(FunctionSection item) { if (item == null) { return(false); } _scls.Add(item); return(true); }
/// <summary> /// Infividua la prima ricorrenza dell'oggetto nella raccolta a partire dall'indice /// </summary> /// <param name="start">Indice si partenza</param> /// <param name="item">Linea di codice</param> /// <returns>Indice della prima ricorrenza</returns> public int FirstIndexOf(int start, FunctionSection item) { for (int i = start; i < _scls.Count; i++) { if (_scls[i].Equals(item)) { return(i); } } return(-1); }
//Metodi statici public static SectionCollection ExtractCollection(string RawCode, LogManager lm) { SectionCollection sc = new SectionCollection(); CodeIndex[] ci = CodeElaborator.FindFunctionPosition(RawCode, lm); for (int i = 0; i < ci.Length; i++) { sc.Add(FunctionSection.ExtractSection(RawCode.Substring(ci[i].Index, ci[i].Lenght), RawCode.Substring(0, ci[i].Index).Split('\n').Length, lm)); } return(sc); }
/// <summary> /// Indica il numero di elementi uguali che la raccolta contiene /// </summary> /// <param name="item">Linea di codice</param> /// <returns>Numero di ricorrenze nella collezione</returns> public int Contains(FunctionSection item) { int count = 0; int sup = 0; do { sup = FirstIndexOf(sup, item); if (sup != -1) { count++; } }while (sup != -1); return(count); }
/// <summary> /// Permette la comparazione di due istanze della classe /// </summary> /// <param name="obj">Oggetto da confrontare</param> /// <returns>Risultato della comparazione</returns> public bool Equals(FunctionSection obj) { return(this.funct == obj.funct && this.codes == obj.codes); }
/// <summary> /// Individua la prima ricorrenza dell'oggetto nella raccolta /// </summary> /// <param name="item">Linea di codice</param> /// <returns>Indice della prima ricorrenza</returns> public int FirstIndexOf(FunctionSection item) { return(FirstIndexOf(0, item)); }
/// <summary> /// Controlla l'esistenza dell'elemento nella raccolta /// </summary> /// <param name="item">Linea di codice</param> /// <returns>Esistenza dell'elemento</returns> public bool Exist(FunctionSection item) { return(FirstIndexOf(item) != -1); }
/// <summary> /// Rimuove il primo elemento presente nella raccolta /// </summary> /// <param name="item">Linea di codice</param> public void Remove(FunctionSection item) { RemoveAt(FirstIndexOf(item)); }