public virtual Statement EmitHeader() { CreateOperatorStatement statement = (CreateOperatorStatement)EmitStatement(EmitMode.ForCopy); statement.Block.ClassDefinition = null; statement.Block.Block = null; statement.MetaData = null; return(statement); }
public override Statement EmitStatement(EmitMode mode) { if (mode == EmitMode.ForStorage) { SaveObjectID(); SaveGeneratorID(); SaveLocator(); } else { RemoveObjectID(); RemoveGeneratorID(); RemoveLocator(); } try { IMetaData result; if ((mode != EmitMode.ForRemote) && (_declarationText != null)) { SourceStatement statement = new SourceStatement(); statement.Source = _declarationText + _bodyText; result = statement; } else { CreateOperatorStatement statement = new CreateOperatorStatement(); statement.OperatorName = Schema.Object.EnsureRooted(OperatorName); foreach (Operand operand in Operands) { FormalParameter formalParameter = new FormalParameter(); formalParameter.Identifier = operand.Name; formalParameter.TypeSpecifier = operand.DataType.EmitSpecifier(mode); formalParameter.Modifier = operand.Modifier; statement.FormalParameters.Add(formalParameter); } if (ReturnDataType != null) { statement.ReturnType = ReturnDataType.EmitSpecifier(mode); } #if USEVIRTUAL statement.IsVirtual = IsVirtual; statement.IsAbstract = IsAbstract; statement.IsOverride = IsOverride; statement.IsReintroduced = IsReintroduced; #endif if ((mode == EmitMode.ForRemote) && !IsRemotable) { statement.Block.Block = new Block(); } else { Block.EmitStatement(mode, statement.Block); } result = statement; } result.MetaData = MetaData == null ? null : MetaData.Copy(); if (SessionObjectName != null) { if (result.MetaData == null) { result.MetaData = new MetaData(); } result.MetaData.Tags.AddOrUpdate("DAE.GlobalObjectName", OperatorName, true); } return((Statement)result); } finally { if (mode == EmitMode.ForStorage) { RemoveObjectID(); RemoveGeneratorID(); RemoveLocator(); } } }