private List <Declaration> GetExcelRangeDeclarations()
        {
            var excelDeclaration = new ProjectDeclaration(new QualifiedMemberName(new QualifiedModuleName("Excel",
                                                                                                          "C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "Excel"), "Excel"), "Excel", true);

            var globalDeclaration = new ClassModuleDeclaration(new QualifiedMemberName(
                                                                   new QualifiedModuleName("Excel",
                                                                                           "C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "_Global"),
                                                                   "_Global"), excelDeclaration, "_Global", true, null, null);

            var globalCoClassDeclarationAttributes = new Attributes();

            globalCoClassDeclarationAttributes.AddPredeclaredIdTypeAttribute();
            globalCoClassDeclarationAttributes.AddGlobalClassAttribute();

            var globalCoClassDeclaration = new ClassModuleDeclaration(new QualifiedMemberName(
                                                                          new QualifiedModuleName("Excel",
                                                                                                  "C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "Global"),
                                                                          "Global"), excelDeclaration, "Global", true, null, globalCoClassDeclarationAttributes);

            globalDeclaration.AddSubtype(globalCoClassDeclaration);
            globalCoClassDeclaration.AddSupertype(globalDeclaration);
            globalCoClassDeclaration.AddSupertype("_Global");

            var rangeClassModuleDeclaration = new ClassModuleDeclaration(new QualifiedMemberName(
                                                                             new QualifiedModuleName("Excel",
                                                                                                     "C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "Range"),
                                                                             "Range"), excelDeclaration, "Range", true, new List <IAnnotation>(), new Attributes());

            var rangeDeclaration = new PropertyGetDeclaration(new QualifiedMemberName(
                                                                  new QualifiedModuleName("Excel",
                                                                                          "C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "_Global"), "Range"),
                                                              globalDeclaration, globalDeclaration, "Range", null, null, Accessibility.Global, null, Selection.Home,
                                                              false, true, new List <IAnnotation>(), new Attributes());

            var firstParamDeclaration = new ParameterDeclaration(new QualifiedMemberName(
                                                                     new QualifiedModuleName("Excel",
                                                                                             "C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "_Global"),
                                                                     "Cell1"), rangeDeclaration, "Variant", null, null, false, false);

            var secondParamDeclaration = new ParameterDeclaration(new QualifiedMemberName(
                                                                      new QualifiedModuleName("Excel",
                                                                                              "C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "_Global"),
                                                                      "Cell2"), rangeDeclaration, "Variant", null, null, true, false);

            rangeDeclaration.AddParameter(firstParamDeclaration);
            rangeDeclaration.AddParameter(secondParamDeclaration);

            return(new List <Declaration>
            {
                excelDeclaration,
                globalDeclaration,
                globalCoClassDeclaration,
                rangeClassModuleDeclaration,
                rangeDeclaration,
                firstParamDeclaration,
                secondParamDeclaration,
            });
        }
        private string GetSignature(PropertyGetDeclaration member)
        {
            var signature = member.Accessibility == Accessibility.Implicit ? string.Empty : member.Accessibility.ToString();

            signature += " Property Get " + member.IdentifierName + "(";

            var selectedParams = Parameters.Where(p => !p.IsRemoved).Select(s => s.Name);

            return(signature + string.Join(", ", selectedParams) + ") As " + member.AsTypeName);
        }
        private static (Declaration getter, Declaration writer) GetDeclarationsForProperty(QualifiedModuleName moduleName, Declaration moduleDeclaration, ComField item, Attributes attributes)
        {
            var getter = new PropertyGetDeclaration(item, moduleDeclaration, moduleName, attributes);

            if (item.Flags.HasFlag(VARFLAGS.VARFLAG_FREADONLY))
            {
                return(getter, null);
            }

            if (item.IsReferenceType)
            {
                var setter = new PropertySetDeclaration(item, moduleDeclaration, moduleName, attributes);
                return(getter, setter);
            }

            var letter = new PropertyLetDeclaration(item, moduleDeclaration, moduleName, attributes);

            return(getter, letter);
        }
Example #4
0
        private List <Declaration> GetBuiltInDeclarations()
        {
            var vbaDeclaration = new ProjectDeclaration(
                new QualifiedMemberName(new QualifiedModuleName("VBA", MockVbeBuilder.LibraryPathVBA, "VBA"), "VBA"),
                "VBA",
                false, null);

            var conversionModule = new ProceduralModuleDeclaration(
                new QualifiedMemberName(new QualifiedModuleName("VBA", MockVbeBuilder.LibraryPathVBA, "Conversion"), "Conversion"),
                vbaDeclaration,
                "Conversion",
                false,
                new List <IAnnotation>(),
                new Attributes());

            var fileSystemModule = new ProceduralModuleDeclaration(
                new QualifiedMemberName(new QualifiedModuleName("VBA", MockVbeBuilder.LibraryPathVBA, "FileSystem"), "FileSystem"),
                vbaDeclaration,
                "FileSystem",
                false,
                new List <IAnnotation>(),
                new Attributes());

            var interactionModule = new ProceduralModuleDeclaration(
                new QualifiedMemberName(new QualifiedModuleName("VBA", MockVbeBuilder.LibraryPathVBA, "Interaction"), "Interaction"),
                vbaDeclaration,
                "Interaction",
                false,
                new List <IAnnotation>(),
                new Attributes());

            var stringsModule = new ProceduralModuleDeclaration(
                new QualifiedMemberName(new QualifiedModuleName("VBA", MockVbeBuilder.LibraryPathVBA, "Strings"), "Strings"),
                vbaDeclaration,
                "Strings",
                false,
                new List <IAnnotation>(),
                new Attributes());

            var dateTimeModule = new ProceduralModuleDeclaration(
                new QualifiedMemberName(new QualifiedModuleName("VBA", MockVbeBuilder.LibraryPathVBA, "DateTime"), "DateTime"),
                vbaDeclaration,
                "Strings",
                false,
                new List <IAnnotation>(),
                new Attributes());

            var hiddenModule = new ProceduralModuleDeclaration(
                new QualifiedMemberName(new QualifiedModuleName("VBA", MockVbeBuilder.LibraryPathVBA, "_HiddenModule"), "_HiddenModule"),
                vbaDeclaration,
                "_HiddenModule",
                false,
                new List <IAnnotation>(),
                new Attributes());


            var commandFunction = new FunctionDeclaration(
                new QualifiedMemberName(interactionModule.QualifiedName.QualifiedModuleName, "_B_var_Command"),
                interactionModule,
                interactionModule,
                "Variant",
                null,
                null,
                Accessibility.Global,
                null,
                null,
                Selection.Home,
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());

            var environFunction = new FunctionDeclaration(
                new QualifiedMemberName(interactionModule.QualifiedName.QualifiedModuleName, "_B_var_Environ"),
                interactionModule,
                interactionModule,
                "Variant",
                null,
                null,
                Accessibility.Global,
                null,
                null,
                Selection.Home,
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());

            var rtrimFunction = new FunctionDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_RTrim"),
                stringsModule,
                stringsModule,
                "Variant",
                null,
                null,
                Accessibility.Global,
                null,
                null,
                Selection.Home,
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());

            var chrFunction = new FunctionDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_Chr"),
                stringsModule,
                stringsModule,
                "Variant",
                null,
                null,
                Accessibility.Global,
                null,
                null,
                Selection.Home,
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());

            var formatFunction = new FunctionDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_Format"),
                stringsModule,
                stringsModule,
                "Variant",
                null,
                null,
                Accessibility.Global,
                null,
                null,
                Selection.Home,
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());

            var firstFormatParam = new ParameterDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "Expression"),
                formatFunction,
                "Variant",
                null,
                null,
                false,
                true);

            var secondFormatParam = new ParameterDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "Format"),
                formatFunction,
                "Variant",
                null,
                null,
                true,
                true);

            var thirdFormatParam = new ParameterDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "FirstDayOfWeek"),
                formatFunction,
                "VbDayOfWeek",
                null,
                null,
                true,
                false);

            formatFunction.AddParameter(firstFormatParam);
            formatFunction.AddParameter(secondFormatParam);
            formatFunction.AddParameter(thirdFormatParam);

            var rightFunction = new FunctionDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_Right"),
                stringsModule,
                stringsModule,
                "Variant",
                null,
                null,
                Accessibility.Global,
                null,
                null,
                Selection.Home,
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());

            var firstRightParam = new ParameterDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "String"),
                rightFunction,
                "Variant",
                null,
                null,
                false,
                true);

            rightFunction.AddParameter(firstRightParam);

            var lcaseFunction = new FunctionDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_LCase"),
                stringsModule,
                stringsModule,
                "Variant",
                null,
                null,
                Accessibility.Global,
                null,
                null,
                Selection.Home,
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());

            var leftbFunction = new FunctionDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_LeftB"),
                stringsModule,
                stringsModule,
                "Variant",
                null,
                null,
                Accessibility.Global,
                null,
                null,
                Selection.Home,
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());

            var firstLeftBParam = new ParameterDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "String"),
                leftbFunction,
                "Variant",
                null,
                null,
                false,
                true);

            leftbFunction.AddParameter(firstLeftBParam);

            var chrwFunction = new FunctionDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_ChrW"),
                stringsModule,
                stringsModule,
                "Variant",
                null,
                null,
                Accessibility.Global,
                null,
                null,
                Selection.Home,
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());

            var leftFunction = new FunctionDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_Left"),
                stringsModule,
                stringsModule,
                "Variant",
                null,
                null,
                Accessibility.Global,
                null,
                null,
                Selection.Home,
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());

            var firstLeftParam = new ParameterDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "String"),
                leftFunction,
                "Variant",
                null,
                null,
                false,
                true);

            leftFunction.AddParameter(firstLeftParam);

            var rightbFunction = new FunctionDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_RightB"),
                stringsModule,
                stringsModule,
                "Variant",
                null,
                null,
                Accessibility.Global,
                null,
                null,
                Selection.Home,
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());

            var firstRightBParam = new ParameterDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "String"),
                rightbFunction,
                "Variant",
                null,
                null,
                false,
                true);

            rightbFunction.AddParameter(firstRightBParam);

            var midbFunction = new FunctionDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_MidB"),
                stringsModule,
                stringsModule,
                "Variant",
                null,
                null,
                Accessibility.Global,
                null,
                null,
                Selection.Home,
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());

            var firstMidBParam = new ParameterDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "String"),
                midbFunction,
                "Variant",
                null,
                null,
                false,
                true);

            var secondMidBParam = new ParameterDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "Start"),
                midbFunction,
                "Long",
                null,
                null,
                false,
                false);

            midbFunction.AddParameter(firstMidBParam);
            midbFunction.AddParameter(secondMidBParam);

            var ucaseFunction = new FunctionDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_UCase"),
                stringsModule,
                stringsModule,
                "Variant",
                null,
                null,
                Accessibility.Global,
                null,
                null,
                Selection.Home,
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());

            var trimFunction = new FunctionDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_Trim"),
                stringsModule,
                stringsModule,
                "Variant",
                null,
                null,
                Accessibility.Global,
                null,
                null,
                Selection.Home,
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());

            var ltrimFunction = new FunctionDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_LTrim"),
                stringsModule,
                stringsModule,
                "Variant",
                null,
                null,
                Accessibility.Global,
                null,
                null,
                Selection.Home,
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());

            var midFunction = new FunctionDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_Mid"),
                stringsModule,
                stringsModule,
                "Variant",
                null,
                null,
                Accessibility.Global,
                null,
                null,
                Selection.Home,
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());

            var firstMidParam = new ParameterDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "String"),
                midFunction,
                "Variant",
                null,
                null,
                false,
                true);

            var secondMidParam = new ParameterDeclaration(
                new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "Start"),
                midFunction,
                "Long",
                null,
                null,
                false,
                false);

            midFunction.AddParameter(firstMidParam);
            midFunction.AddParameter(secondMidParam);

            var hexFunction = new FunctionDeclaration(
                new QualifiedMemberName(conversionModule.QualifiedName.QualifiedModuleName, "_B_var_Hex"),
                conversionModule,
                conversionModule,
                "Variant",
                null,
                null,
                Accessibility.Global,
                null,
                null,
                Selection.Home,
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());

            var octFunction = new FunctionDeclaration(
                new QualifiedMemberName(conversionModule.QualifiedName.QualifiedModuleName, "_B_var_Oct"),
                conversionModule,
                conversionModule,
                "Variant",
                null,
                null,
                Accessibility.Global,
                null,
                null,
                Selection.Home,
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());

            var errorFunction = new FunctionDeclaration(
                new QualifiedMemberName(conversionModule.QualifiedName.QualifiedModuleName, "_B_var_Error"),
                conversionModule,
                conversionModule,
                "Variant",
                null,
                null,
                Accessibility.Global,
                null,
                null,
                Selection.Home,
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());

            var strFunction = new FunctionDeclaration(
                new QualifiedMemberName(conversionModule.QualifiedName.QualifiedModuleName, "_B_var_Str"),
                conversionModule,
                conversionModule,
                "Variant",
                null,
                null,
                Accessibility.Global,
                null,
                null,
                Selection.Home,
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());

            var curDirFunction = new FunctionDeclaration(
                new QualifiedMemberName(fileSystemModule.QualifiedName.QualifiedModuleName, "_B_var_CurDir"),
                fileSystemModule,
                fileSystemModule,
                "Variant",
                null,
                null,
                Accessibility.Global,
                null,
                null,
                Selection.Home,
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());

            var datePropertyGet = new PropertyGetDeclaration(
                new QualifiedMemberName(dateTimeModule.QualifiedName.QualifiedModuleName, "Date"),
                dateTimeModule,
                dateTimeModule,
                "Variant",
                null,
                string.Empty,
                Accessibility.Global,
                null,
                null,
                new Selection(),
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());


            var timePropertyGet = new PropertyGetDeclaration(
                new QualifiedMemberName(dateTimeModule.QualifiedName.QualifiedModuleName, "Time"),
                dateTimeModule,
                dateTimeModule,
                "Variant",
                null,
                string.Empty,
                Accessibility.Global,
                null,
                null,
                new Selection(),
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());

            var inputbFunction = new FunctionDeclaration(
                new QualifiedMemberName(hiddenModule.QualifiedName.QualifiedModuleName, "_B_var_InputB"),
                hiddenModule,
                hiddenModule,
                "Variant",
                null,
                null,
                Accessibility.Global,
                null,
                null,
                Selection.Home,
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());

            var firstInputBParam = new ParameterDeclaration(
                new QualifiedMemberName(hiddenModule.QualifiedName.QualifiedModuleName, "Number"),
                inputbFunction,
                "Long",
                null,
                null,
                false,
                true);

            var secondInputBParam = new ParameterDeclaration(
                new QualifiedMemberName(hiddenModule.QualifiedName.QualifiedModuleName, "FileNumber"),
                inputbFunction,
                "Integer",
                null,
                null,
                false,
                true);

            inputbFunction.AddParameter(firstInputBParam);
            inputbFunction.AddParameter(secondInputBParam);

            var inputFunction = new FunctionDeclaration(
                new QualifiedMemberName(hiddenModule.QualifiedName.QualifiedModuleName, "_B_var_Input"),
                hiddenModule,
                hiddenModule,
                "Variant",
                null,
                null,
                Accessibility.Global,
                null,
                null,
                Selection.Home,
                false,
                false,
                new List <IAnnotation>(),
                new Attributes());

            var firstInputParam = new ParameterDeclaration(
                new QualifiedMemberName(hiddenModule.QualifiedName.QualifiedModuleName, "Number"),
                inputFunction,
                "Long",
                null,
                null,
                false,
                true);

            var secondInputParam = new ParameterDeclaration(
                new QualifiedMemberName(hiddenModule.QualifiedName.QualifiedModuleName, "FileNumber"),
                inputFunction,
                "Integer",
                null,
                null,
                false,
                true);

            inputFunction.AddParameter(firstInputParam);
            inputFunction.AddParameter(secondInputParam);

            return(new List <Declaration>
            {
                vbaDeclaration,
                conversionModule,
                fileSystemModule,
                interactionModule,
                stringsModule,
                dateTimeModule,
                hiddenModule,
                commandFunction,
                environFunction,
                rtrimFunction,
                chrFunction,
                formatFunction,
                firstFormatParam,
                secondFormatParam,
                thirdFormatParam,
                rightFunction,
                firstRightParam,
                lcaseFunction,
                leftbFunction,
                firstLeftBParam,
                chrwFunction,
                leftFunction,
                firstLeftParam,
                rightbFunction,
                firstRightBParam,
                midbFunction,
                firstMidBParam,
                secondMidBParam,
                ucaseFunction,
                trimFunction,
                ltrimFunction,
                midFunction,
                firstMidParam,
                secondMidParam,
                hexFunction,
                octFunction,
                errorFunction,
                strFunction,
                curDirFunction,
                datePropertyGet,
                timePropertyGet,
                inputbFunction,
                firstInputBParam,
                secondInputBParam,
                inputFunction,
                firstInputParam,
                secondInputParam
            });
        }
Example #5
0
 public virtual T Visit(PropertyGetDeclaration stmt) => Visit(stmt as PropertyDeclaration);