Esempio n. 1
0
        /// <summary>
        /// Create a new parsed define item according to its type
        /// </summary>
        private ParsedDefine NewParsedDefined(string name, ParseFlag flags, Token token, ParsedAsLike asLike, string left, ParseDefineType type, string tempPrimitiveType, string viewAs, string bufferFor)
        {
            // set flags
            flags |= _context.Scope is ParsedFile ? ParseFlag.FileScope : ParseFlag.LocalScope;

            switch (type)
            {
            case ParseDefineType.Parameter:
                flags |= ParseFlag.Parameter;
                break;

            case ParseDefineType.Buffer:
                flags |= ParseFlag.Buffer;

                var newBuffer = new ParsedBuffer(name, token, asLike, left, type, tempPrimitiveType, viewAs, bufferFor, ConvertStringToParsedPrimitiveType(tempPrimitiveType, asLike == ParsedAsLike.Like))
                {
                    TargetTable = FindAnyTableByName(bufferFor)
                };

                flags          |= !bufferFor.Contains(".") && newBuffer.TargetTable != null && !newBuffer.TargetTable.IsTempTable ? ParseFlag.MissingDbName : 0;
                newBuffer.Flags = flags;

                return(newBuffer);
            }
            var newDefine = new ParsedDefine(name, token, asLike, left, type, tempPrimitiveType, viewAs, ConvertStringToParsedPrimitiveType(tempPrimitiveType, asLike == ParsedAsLike.Like))
            {
                Flags = flags
            };

            return(newDefine);
        }
Esempio n. 2
0
        /// <summary>
        /// Buffers
        /// </summary>
        public void Visit(ParsedBuffer pars)
        {
            var subString = "?";
            var type      = CompletionType.TempTable;

            if (pars.TargetTable != null)
            {
                subString = pars.TargetTable.Name;
                type      = pars.TargetTable.IsTempTable ? CompletionType.TempTable : CompletionType.Table;

                // To code explorer, list buffers and associated tables
                var parentNode = pars.TargetTable.IsTempTable ? GetExplorerListNode("Temp-tables used", CodeExplorerIconType.TempTableUsed) : GetExplorerListNode("Tables used", CodeExplorerIconType.TableUsed);
                var newNode    = CodeItem.Factory.New(pars.TargetTable.IsTempTable ? CodeExplorerIconType.TempTable : CodeExplorerIconType.Table);
                newNode.DisplayText   = pars.Name;
                newNode.Flags         = pars.Flags;
                newNode.SubText       = null;
                newNode.DocumentOwner = pars.FilePath;
                newNode.GoToLine      = pars.Line;
                newNode.GoToColumn    = pars.Column;
                PushToCodeExplorer(parentNode, newNode);
            }

            // to completion data
            var curItem = CompletionItem.Factory.New(type) as TableCompletionItem;

            if (curItem != null)
            {
                if (pars.TargetTable != null)
                {
                    curItem.ChildSeparator = '.';
                    curItem.Children       = GetTableCompletionItemChildren(curItem, pars.TargetTable.Fields);
                }
                curItem.DisplayText = pars.Name;
                curItem.Flags       = pars.Flags;
                curItem.SubText     = subString;
                PushToAutoCompletion(curItem, pars);
            }
        }