public override object VisitTypeDeclaration(TypeDeclaration typeDeclaration, object data)
        {
            Contract.Requires(typeDeclaration != null);

            // Is this a class?
            if (IsClass(typeDeclaration))
            {
                // Process for multiple partial of class in the same file
                if (!IsExist(DictClass, typeDeclaration.Name))
                {
                    var objClass = new ClassStructure
                    {
                        Name = typeDeclaration.Name,
                        Methods = new List<MethodStructure>()
                    };
                    DictClass.Add(objClass.Name, objClass);
                }
            }

            // Visit children (E.g. MethodDeclarion objects)
            typeDeclaration.AcceptChildren(this, data);

            return null;
        }
 public ClassStructure BuildClass(CLASS _class)
 {
     var invar = _class.INVARIANTS.FirstOrDefault(item => item.IDClass == _class.ID) != null ? _class.INVARIANTS.FirstOrDefault(item => item.IDClass == _class.ID).NoiDung : null;
     var classStr = new ClassStructure
     {
         Name = _class.TenClass,
         Invariant = invar,
         LstInvarintConditions = invar != null ? ClassStructure.InitInvariants(invar) : null,
         Methods = new List<MethodStructure>(),
         ClassPath = _class.ClassPath
     };
     foreach (var _method in _class.METHODS)
     {
         var methodStr = BuildMethod(_method);
         classStr.Methods.Add(methodStr);
     }
     return classStr;
 }
 public bool NeedCreateClassFile(ClassStructure _class)
 {
     if (_class.Invariant != null)
         return true;
     foreach (var _method in _class.Methods)
     {
         if (_method.Require != null || _method.Ensure != null)
             return true;
     }
     return false;
 }
 public string GenerateInvariant(ClassStructure _class, ref string callInvariant)
 {
     var result = "";
     result += _class.GenerateInvariant(ref callInvariant);
     return result;
 }
 public bool IsExistClass(List<ClassStructure> lstClasses, ClassStructure objClass, ref int index)
 {
     for (int i = 0; i < lstClasses.Count; i++)
     {
         if (lstClasses[i].Name.Trim().ToUpper() == objClass.Name.Trim().ToUpper())
         {
             index = i;
             return true;
         }
     }
     return false;
 }
 public void Insert_Class(int projID, ClassStructure classStr)
 {
     var _class = InsertCLASSES(projID, classStr.Name, classStr.ClassPath);
     if (_class != null)
     {
         // Insert Variant
         if (classStr.Invariant != null && classStr.Invariant != "")
         {
             InsertINVARIANTS(_class.ID, classStr.Invariant);
         }
         // Insert methods
         for (int i = 0; i < classStr.Methods.Count; i++)
         {
             Insert_Method(_class.ID, classStr.Methods[i]);
         }
     }
 }