/// <summary>
 /// Constructs a join lobby failed message
 /// </summary>
 /// <param name="message">Message</param>
 /// <param name="reason">Reason</param>
 public JoinLobbyFailedMessageData(JoinLobbyMessageData message, EJoinLobbyFailedReason reason) : base(Naming.GetMessageTypeNameFromMessageDataType <JoinLobbyFailedMessageData>(), message, reason)
 {
     if (reason == EJoinLobbyFailedReason.Invalid)
     {
         throw new ArgumentException("Join lobby failed reason can't be invalid.", nameof(reason));
     }
 }
Esempio n. 2
0
        public bool TryAppend(byte[] buffer, TapeAppendCondition appendCondition = new TapeAppendCondition())
        {
            if (buffer == null)
            {
                throw new ArgumentNullException("buffer");
            }

            if (buffer.Length == 0)
            {
                throw new ArgumentException("Buffer must contain at least one byte.");
            }

            long          version;
            int           lastBlockSize;
            long          offset;
            long          firstVersion;
            long          count;
            List <string> blockNames;

            var blob = _container.GetBlockBlobReference(_blobName);

            if (blob.Exists())
            {
                var blockList = blob.DownloadBlockList().ToArray();
                blockNames = blockList.Select(bl => bl.Name).ToList();
                var lastBlock = blockList.LastOrDefault();

                if (default(ListBlockItem) == lastBlock)
                {
                    version       = 0;
                    lastBlockSize = int.MaxValue;
                    offset        = 0;
                    firstVersion  = 1;
                    count         = 0;
                }
                else
                {
                    var nameInfo = Naming.GetInfo(DecodeName(lastBlock.Name));
                    firstVersion = nameInfo.FirstVersion;
                    version      = nameInfo.FirstVersion - 1 + nameInfo.Count;
                    count        = nameInfo.Count;

                    if (lastBlock.Size > int.MaxValue)
                    {
                        throw new InvalidOperationException("last block size must be in 'int' range");
                    }

                    lastBlockSize = (int)lastBlock.Size;
                    offset        = blockList.Reverse().Skip(1).Sum(l => l.Size);
                }
            }
            else
            {
                version       = 0;
                lastBlockSize = int.MaxValue;
                offset        = 0;
                firstVersion  = 1;
                count         = 0;
                blockNames    = new List <string>();
            }

            if (!appendCondition.Satisfy(version))
            {
                return(false);
            }

            if (version > long.MaxValue - 1)
            {
                throw new IndexOutOfRangeException("Version is more than long.MaxValue.");
            }

            if (buffer.Length > FourMb)
            {
                throw new ArgumentException("buffer size must be less than or equal to 4 Mb", "buffer");
            }

            using (var outStream = new MemoryStream())
            {
                if (buffer.Length < MaxBlockSize && lastBlockSize <= MaxBlockSize - buffer.Length)
                {
                    // read old block
                    using (var s = blob.OpenRead())
                    {
                        s.Seek(offset, SeekOrigin.Begin);
                        s.CopyTo(outStream);
                        TapeStreamSerializer.WriteRecord(outStream, buffer, version + 1);

                        count++;
                        blockNames.RemoveAt(blockNames.Count - 1);
                    }
                }
                else
                {
                    TapeStreamSerializer.WriteRecord(outStream, buffer, version + 1);

                    firstVersion = version + 1;
                    count        = 1;
                }

                var blockId = EncodeName(Naming.GetName(firstVersion, count));

                string md5Hash;
                outStream.Seek(0, SeekOrigin.Begin);
                using (var md5 = MD5.Create()) {
                    md5Hash = Convert.ToBase64String(md5.ComputeHash(outStream));
                }

                outStream.Seek(0, SeekOrigin.Begin);
                blob.PutBlock(blockId, outStream, md5Hash);
                blockNames.Add(blockId);
                blob.PutBlockList(blockNames);

                return(true);
            }
        }
 /// <summary>
 /// Constructs a sendable "choose-word" game message
 /// </summary>
 /// <param name="index">Choose word index</param>
 public ChooseWordSendGameMessageData(uint index) : base(Naming.GetSendGameMessageDataNameInKebabCase <ChooseWordSendGameMessageData>(), index)
 {
     // ...
 }
Esempio n. 4
0
        /// <inheritdoc />
        public void WriteFunctions(Profile profile, IEnumerable <Function> functions, BindTask task)
        {
            foreach (var function in functions)
            {
                if (function.ProfileName != profile.Name || function.ProfileVersion?.ToString(2) != profile.Version)
                {
                    continue;
                }

                foreach (var rawCategory in function.Categories)
                {
                    var category = FormatCategory(rawCategory);
                    // check that the root project exists
                    if (!profile.Projects.ContainsKey("Core"))
                    {
                        profile.Projects.Add
                        (
                            "Core",
                            new Project
                        {
                            IsRoot    = true,
                            Namespace = string.Empty,
                            Classes   = new List <Class> {
                                new Class {
                                    ClassName = task.ConverterOpts.ClassName
                                }
                            }
                        }
                        );
                    }

                    // check that the extension project exists, if applicable
                    if (function.ExtensionName != "Core" && !profile.Projects.ContainsKey(category))
                    {
                        profile.Projects.Add
                        (
                            category,
                            new Project
                        {
                            IsRoot    = false,
                            Namespace = $".{category.CheckMemberName(task.FunctionPrefix)}",
                            Classes   = new List <Class> {
                                new Class {
                                    ClassName = task.ConverterOpts.ClassName
                                }
                            }
                        }
                        );
                    }

                    // check that the interface exists
                    if
                    (
                        !profile.Projects[function.ExtensionName == "Core" ? "Core" : category]
                        .Classes[0].NativeApis.ContainsKey(rawCategory)
                    )
                    {
                        profile.Projects[function.ExtensionName == "Core" ? "Core" : category]
                        .Classes[0].NativeApis.Add
                        (
                            rawCategory,
                            new NativeApiSet
                        {
                            Name =
                                $"I{Naming.Translate(TrimName(rawCategory, task), task.FunctionPrefix).CheckMemberName(task.FunctionPrefix)}"
                        }
                        );
                    }

                    // add the function to the interface
                    profile.Projects[function.ExtensionName == "Core" ? "Core" : category]
                    .Classes[0].NativeApis[rawCategory]
                    .Functions.Add(function);
                }
            }
        }
        public AbstractWatcher Configure(Naming convention)
        {
            namingConvention = convention;

            return(this);
        }
Esempio n. 6
0
        public virtual string TransformText()
        {
            this.GenerationEnvironment = null;

            #line 1 ""
            this.Write("");

            #line default
            #line hidden

            #line 6 ""
            this.Write("#ifndef SME_BUSDEFINITIONS_HPP\n#define SME_BUSDEFINITIONS_HPP\n\n#include \"SystemTy" +
                       "pes.hpp\"\n#include \"");

            #line default
            #line hidden

            #line 10 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.SharedDefinitionsFileName(Network)));

            #line default
            #line hidden

            #line 10 ""
            this.Write("\"\n\n// Insert additional includes here\n// #### USER-DATA-INCLUDE-START\n// #### USE" +
                       "R-DATA-INCLUDE-END\n\n");

            #line default
            #line hidden

            #line 16 ""

            var known = new HashSet <Type>();
            foreach (var bus in Network.Busses)
            {
                if (known.Contains(bus.SourceType))
                {
                    continue;
                }
                known.Add(bus.SourceType);


            #line default
            #line hidden

            #line 23 ""
                this.Write("\nclass ");

            #line default
            #line hidden

            #line 24 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 24 ""
                this.Write(" {\nprivate:\n");

            #line default
            #line hidden

            #line 26 ""
                foreach (var signal in bus.Signals)
                {
                    var cpptype = RS.TypeScope.GetType(signal);
                    if (cpptype.IsArray)
                    {
            #line default
            #line hidden

            #line 29 ""
                        this.Write("    ");

            #line default
            #line hidden

            #line 29 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(Type(signal)));

            #line default
            #line hidden

            #line 29 ""
                        this.Write(" write_");

            #line default
            #line hidden

            #line 29 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 29 ""
                        this.Write(";\n    ");

            #line default
            #line hidden

            #line 30 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(Type(signal)));

            #line default
            #line hidden

            #line 30 ""
                        this.Write(" read_");

            #line default
            #line hidden

            #line 30 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 30 ""
                        this.Write(";\n    bool* valid_");

            #line default
            #line hidden

            #line 31 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 31 ""
                        this.Write(";\n    bool* written_");

            #line default
            #line hidden

            #line 32 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 32 ""
                        this.Write(";\n    bool* staged_");

            #line default
            #line hidden

            #line 33 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 33 ""
                        this.Write(";\n    size_t size_");

            #line default
            #line hidden

            #line 34 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 34 ""
                        this.Write(";\n");

            #line default
            #line hidden

            #line 35 ""
                    }
                    else
                    {
            #line default
            #line hidden

            #line 36 ""
                        this.Write("    ");

            #line default
            #line hidden

            #line 36 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(Type(signal)));

            #line default
            #line hidden

            #line 36 ""
                        this.Write(" write_");

            #line default
            #line hidden

            #line 36 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 36 ""
                        this.Write(";\n    ");

            #line default
            #line hidden

            #line 37 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(Type(signal)));

            #line default
            #line hidden

            #line 37 ""
                        this.Write(" read_");

            #line default
            #line hidden

            #line 37 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 37 ""
                        this.Write(";\n    bool valid_");

            #line default
            #line hidden

            #line 38 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 38 ""
                        this.Write(";\n    bool written_");

            #line default
            #line hidden

            #line 39 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 39 ""
                        this.Write(";\n    bool staged_");

            #line default
            #line hidden

            #line 40 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 40 ""
                        this.Write(";\n");

            #line default
            #line hidden

            #line 41 ""
                    }

            #line default
            #line hidden

            #line 42 ""
                }

            #line default
            #line hidden

            #line 43 ""
                this.Write("\npublic:\n\n    ");

            #line default
            #line hidden

            #line 46 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 46 ""
                this.Write(" ();\n\n");

            #line default
            #line hidden

            #line 48 ""
                foreach (var signal in bus.Signals)
                {
                    var cpptype = RS.TypeScope.GetType(signal);
                    if (cpptype.IsArray)
                    {
                        var eltype = cpptype.ElementName;

            #line default
            #line hidden

            #line 52 ""
                        this.Write("    ");

            #line default
            #line hidden

            #line 52 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 52 ""
                        this.Write(" ");

            #line default
            #line hidden

            #line 52 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 52 ""
                        this.Write("(size_t index) const;\n    ");

            #line default
            #line hidden

            #line 53 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 53 ""
                        this.Write(" ");

            #line default
            #line hidden

            #line 53 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 53 ""
                        this.Write("(size_t index, ");

            #line default
            #line hidden

            #line 53 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 53 ""
                        this.Write(" value);\n");

            #line default
            #line hidden

            #line 54 ""
                    }
                    else
                    {
            #line default
            #line hidden

            #line 55 ""
                        this.Write("    ");

            #line default
            #line hidden

            #line 55 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(Type(signal)));

            #line default
            #line hidden

            #line 55 ""
                        this.Write(" ");

            #line default
            #line hidden

            #line 55 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 55 ""
                        this.Write("() const;\n    ");

            #line default
            #line hidden

            #line 56 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(Type(signal)));

            #line default
            #line hidden

            #line 56 ""
                        this.Write(" ");

            #line default
            #line hidden

            #line 56 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 56 ""
                        this.Write("(");

            #line default
            #line hidden

            #line 56 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(Type(signal)));

            #line default
            #line hidden

            #line 56 ""
                        this.Write(" value);\n");

            #line default
            #line hidden

            #line 57 ""
                    }

            #line default
            #line hidden

            #line 58 ""
                }

            #line default
            #line hidden

            #line 59 ""
                this.Write("    void forward_signals();\n    void propagate_signals();\n};\n\n");

            #line default
            #line hidden

            #line 63 ""
            }

            #line default
            #line hidden

            #line 64 ""
            this.Write("\n// Insert additional code and classes here\n// #### USER-DATA-EXTRA-START\n// ####" +
                       " USER-DATA-EXTRA-END\n\n#endif /* SME_BUSDEFINITIONS_HPP */\n");

            #line default
            #line hidden
            return(this.GenerationEnvironment.ToString());
        }
Esempio n. 7
0
        public static MappingRelationshipMN Parse(ManyToManyRelationshipMetadata rel,
                                                  MappingRelationshipMN relationshipManyToMany,
                                                  string thisEntityLogicalName)
        {
            relationshipManyToMany = relationshipManyToMany ?? new MappingRelationshipMN();

            if (rel.Entity1LogicalName != null)
            {
                if (rel.Entity1LogicalName == thisEntityLogicalName)
                {
                    relationshipManyToMany.Attribute = relationshipManyToMany.Attribute ?? new CrmRelationshipAttribute();

                    relationshipManyToMany.Attribute.FromEntity = rel.Entity1LogicalName ?? relationshipManyToMany.Attribute.FromEntity;
                    relationshipManyToMany.Attribute.FromKey    = rel.Entity1IntersectAttribute
                                                                  ?? relationshipManyToMany.Attribute.FromKey;
                    relationshipManyToMany.Attribute.ToEntity = rel.Entity2LogicalName ?? relationshipManyToMany.Attribute.ToEntity;
                    relationshipManyToMany.Attribute.ToKey    = rel.Entity2IntersectAttribute ?? relationshipManyToMany.Attribute.ToKey;
                }
                else
                {
                    relationshipManyToMany.Attribute = relationshipManyToMany.Attribute ?? new CrmRelationshipAttribute();

                    relationshipManyToMany.Attribute.ToEntity   = rel.Entity1LogicalName ?? relationshipManyToMany.Attribute.ToEntity;
                    relationshipManyToMany.Attribute.ToKey      = rel.Entity1IntersectAttribute ?? relationshipManyToMany.Attribute.ToKey;
                    relationshipManyToMany.Attribute.FromEntity = rel.Entity2LogicalName ?? relationshipManyToMany.Attribute.FromEntity;
                    relationshipManyToMany.Attribute.FromKey    = rel.Entity2IntersectAttribute
                                                                  ?? relationshipManyToMany.Attribute.FromKey;
                }

                relationshipManyToMany.Attribute.IntersectingEntity = rel.IntersectEntityName
                                                                      ?? relationshipManyToMany.Attribute.IntersectingEntity;
            }

            relationshipManyToMany.EntityRole = "null";

            if (rel.SchemaName != null)
            {
                relationshipManyToMany.SchemaName  = rel.SchemaName;
                relationshipManyToMany.DisplayName = rel.SchemaName;
                relationshipManyToMany.HybridName  = Naming.GetProperVariableName(rel.SchemaName, false) + "_NN";
                relationshipManyToMany.PrivateName = "_nn" + Naming.GetEntityPropertyPrivateName(rel.SchemaName);
            }

            if (rel.Entity1LogicalName != null && rel.Entity2LogicalName != null &&
                rel.Entity1LogicalName == rel.Entity2LogicalName && rel.Entity1LogicalName == thisEntityLogicalName)
            {
                relationshipManyToMany.DisplayName      = "Referenced_" + relationshipManyToMany.DisplayName;
                relationshipManyToMany.EntityRole       = "Microsoft.Xrm.Sdk.EntityRole.Referenced";
                relationshipManyToMany.IsSelfReferenced = true;
            }

            if (relationshipManyToMany.DisplayName == thisEntityLogicalName)
            {
                relationshipManyToMany.DisplayName += "1";                 // this is what CrmSvcUtil does
            }

            relationshipManyToMany.ForeignKey = Naming.GetProperVariableName(relationshipManyToMany.Attribute.ToKey, false);
            relationshipManyToMany.Type       = relationshipManyToMany.Attribute.ToEntity;

            relationshipManyToMany.MetadataId = rel.MetadataId;

            return(relationshipManyToMany);
        }
Esempio n. 8
0
 /// <summary>
 /// Constructs a user lobby color change message
 /// </summary>
 /// <param name="newUserLobbyColor">New user lobby color</param>
 public ChangeUserLobbyColorMessageData(Color newUserLobbyColor) : base(Naming.GetMessageTypeNameFromMessageDataType <ChangeUserLobbyColorMessageData>()) => NewUserLobbyColor = newUserLobbyColor;
Esempio n. 9
0
 public IDictionary <string, string> For(string resourceFile, Naming strategy)
 {
     return(keys(load(mapPath(normalizePath(resourceFile))))
            .ToDictionary(key => naming(key, strategy), key => localize(key, resourceFile)));
 }
 /// <summary>
 /// Constructs a stop game failed message
 /// </summary>
 /// <param name="message">Received message</param>
 /// <param name="reason">Reason</param>
 public StopGameFailedMessageData(StopGameMessageData message, EStopGameFailedReason reason) : base(Naming.GetMessageTypeNameFromMessageDataType <StopGameFailedMessageData>(), message, reason)
 {
     if (reason == EStopGameFailedReason.Invalid)
     {
         throw new ArgumentException("Stop game failed reason can't be invalid.", nameof(reason));
     }
 }
Esempio n. 11
0
 /// <summary>
 /// Constructs an error message
 /// </summary>
 /// <param name="errorType">Error type</param>
 /// <param name="errorMessageType">Error message</param>
 /// <param name="message">Error message</param>
 public ErrorMessageData(EErrorType errorType, string errorMessageType, string message) : base(Naming.GetMessageTypeNameFromMessageDataType<ErrorMessageData>())
 {
     if (errorType == EErrorType.Invalid)
     {
         throw new ArgumentException("Error type can't be invalid.", nameof(errorType));
     }
     if (string.IsNullOrWhiteSpace(errorMessageType))
     {
         throw new ArgumentNullException(nameof(errorMessageType));
     }
     ErrorType = errorType;
     ErrorMessageType = errorMessageType;
     Message = message ?? throw new ArgumentNullException(nameof(message));
 }
Esempio n. 12
0
        public virtual string TransformText()
        {
            this.GenerationEnvironment = null;

            #line 9 ""
            this.Write("library IEEE;\nuse IEEE.STD_LOGIC_1164.ALL;\nuse IEEE.NUMERIC_STD.ALL;\n\n-- library " +
                       "SYSTEM_TYPES;\nuse work.SYSTEM_TYPES.ALL;\n\n-- library CUSTOM_TYPES;\nuse work.CUST" +
                       "OM_TYPES.ALL;\n\n");

            #line default
            #line hidden

            #line 19 ""
            if (RSP.HasCustomRenderer)
            {
            #line default
            #line hidden

            #line 20 ""
                this.Write("  -- Component declaration and signals\n");

            #line default
            #line hidden

            #line 21 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(RSP.CustomRendererInclude));

            #line default
            #line hidden

            #line 21 ""
                this.Write("\n");

            #line default
            #line hidden

            #line 22 ""
            }

            #line default
            #line hidden

            #line 23 ""
            this.Write("\n-- User defined packages here\n-- #### USER-DATA-IMPORTS-START\n-- #### USER-DATA-" +
                       "IMPORTS-END\n\n\nentity ");

            #line default
            #line hidden

            #line 29 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Process.Name));

            #line default
            #line hidden

            #line 29 ""
            this.Write(" is\n");

            #line default
            #line hidden

            #line 30 ""
            var lastel = Process.SharedVariables.Cast <object>().Concat(Process.SharedSignals).LastOrDefault();
            if (lastel != null)
            {
            #line default
            #line hidden

            #line 33 ""
                this.Write("    generic(\n");

            #line default
            #line hidden

            #line 34 ""
                foreach (var variable in Process.SharedVariables)
                {
            #line default
            #line hidden

            #line 35 ""
                    this.Write("        ");

            #line default
            #line hidden

            #line 35 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("reset_" + variable.Name)));

            #line default
            #line hidden

            #line 35 ""
                    this.Write(": in ");

            #line default
            #line hidden

            #line 35 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(variable)));

            #line default
            #line hidden

            #line 35 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(variable == lastel ? "" : ";"));

            #line default
            #line hidden

            #line 35 ""
                    this.Write("\n");

            #line default
            #line hidden

            #line 36 ""
                }

            #line default
            #line hidden

            #line 37 ""
                foreach (var variable in Process.SharedSignals)
                {
            #line default
            #line hidden

            #line 38 ""
                    this.Write("        ");

            #line default
            #line hidden

            #line 38 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("reset_" + variable.Name)));

            #line default
            #line hidden

            #line 38 ""
                    this.Write(": in ");

            #line default
            #line hidden

            #line 38 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(variable)));

            #line default
            #line hidden

            #line 38 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(variable == lastel ? "" : ";"));

            #line default
            #line hidden

            #line 38 ""
                    this.Write("\n");

            #line default
            #line hidden

            #line 39 ""
                }

            #line default
            #line hidden

            #line 40 ""
                this.Write("    );\n");

            #line default
            #line hidden

            #line 41 ""
            }

            #line default
            #line hidden

            #line 42 ""
            this.Write("    port(\n");

            #line default
            #line hidden

            #line 43 ""
            foreach (var bus in Process.InputBusses.Where(x => !Process.OutputBusses.Contains(x)))
            {
                var busname = RS.GetLocalBusName(bus, Process);


            #line default
            #line hidden

            #line 46 ""
                this.Write("        -- Input bus ");

            #line default
            #line hidden

            #line 46 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(busname));

            #line default
            #line hidden

            #line 46 ""
                this.Write(" signals\n");

            #line default
            #line hidden

            #line 47 ""
                foreach (var signal in bus.Signals)
                {
            #line default
            #line hidden

            #line 48 ""
                    this.Write("        ");

            #line default
            #line hidden

            #line 48 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(busname + "_" + signal.Name)));

            #line default
            #line hidden

            #line 48 ""
                    this.Write(": in ");

            #line default
            #line hidden

            #line 48 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(signal)));

            #line default
            #line hidden

            #line 48 ""
                    this.Write(";\n");

            #line default
            #line hidden

            #line 49 ""
                }

            #line default
            #line hidden

            #line 50 ""
            }

            #line default
            #line hidden

            #line 51 ""
            this.Write("\n");

            #line default
            #line hidden

            #line 52 ""
            foreach (var bus in Process.OutputBusses.Where(x => !Process.InputBusses.Contains(x)))
            {
                var busname = RS.GetLocalBusName(bus, Process);


            #line default
            #line hidden

            #line 55 ""
                this.Write("        -- Output bus ");

            #line default
            #line hidden

            #line 55 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(busname));

            #line default
            #line hidden

            #line 55 ""
                this.Write(" signals\n");

            #line default
            #line hidden

            #line 56 ""
                foreach (var signal in RSP.WrittenSignals(bus))
                {
            #line default
            #line hidden

            #line 57 ""
                    this.Write("        ");

            #line default
            #line hidden

            #line 57 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(busname + "_" + signal.Name)));

            #line default
            #line hidden

            #line 57 ""
                    this.Write(": out ");

            #line default
            #line hidden

            #line 57 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(signal)));

            #line default
            #line hidden

            #line 57 ""
                    this.Write(";\n");

            #line default
            #line hidden

            #line 58 ""
                }

            #line default
            #line hidden

            #line 59 ""
            }

            #line default
            #line hidden

            #line 60 ""
            this.Write("\n");

            #line default
            #line hidden

            #line 61 ""
            foreach (var bus in Process.InputBusses.Where(x => Process.OutputBusses.Contains(x)))
            {
                var busname = RS.GetLocalBusName(bus, Process);


            #line default
            #line hidden

            #line 64 ""
                this.Write("        -- Input/output bus ");

            #line default
            #line hidden

            #line 64 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(busname));

            #line default
            #line hidden

            #line 64 ""
                this.Write(" signals\n");

            #line default
            #line hidden

            #line 65 ""
                foreach (var signal in bus.Signals)
                {
            #line default
            #line hidden

            #line 66 ""
                    this.Write("        ");

            #line default
            #line hidden

            #line 66 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(busname + "_" + signal.Name)));

            #line default
            #line hidden

            #line 66 ""
                    this.Write(": in ");

            #line default
            #line hidden

            #line 66 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(signal)));

            #line default
            #line hidden

            #line 66 ""
                    this.Write(";\n");

            #line default
            #line hidden

            #line 67 ""
                }

            #line default
            #line hidden

            #line 68 ""
                this.Write("\n");

            #line default
            #line hidden

            #line 69 ""
                foreach (var signal in bus.Signals)
                {
            #line default
            #line hidden

            #line 70 ""
                    this.Write("        ");

            #line default
            #line hidden

            #line 70 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("out_" + busname + "_" + signal.Name)));

            #line default
            #line hidden

            #line 70 ""
                    this.Write(": out ");

            #line default
            #line hidden

            #line 70 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(signal)));

            #line default
            #line hidden

            #line 70 ""
                    this.Write(";\n");

            #line default
            #line hidden

            #line 71 ""
                }

            #line default
            #line hidden

            #line 72 ""
            }

            #line default
            #line hidden

            #line 73 ""
            this.Write(@"
        -- Clock signal
        CLK : in Std_logic;

        -- Ready signal
        RDY : in Std_logic;

        -- Finished signal
        FIN : out Std_logic;

        -- Enable signal
        ENB : in Std_logic;

        -- Reset signal
        RST : in Std_logic
    );
end ");

            #line default
            #line hidden

            #line 89 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Process.Name));

            #line default
            #line hidden

            #line 89 ""
            this.Write(";\n\narchitecture RTL of ");

            #line default
            #line hidden

            #line 91 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Process.Name));

            #line default
            #line hidden

            #line 91 ""
            this.Write(" is\n");

            #line default
            #line hidden

            #line 92 ""
            if (RSP.HasCustomRenderer)
            {
            #line default
            #line hidden

            #line 93 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(RSP.CustomRendererBody));

            #line default
            #line hidden

            #line 93 ""
                this.Write("\n");

            #line default
            #line hidden

            #line 94 ""
            }
            else
            {
            #line default
            #line hidden

            #line 95 ""
                foreach (var bus in Process.InternalBusses)
                {
                    var busname = RS.GetLocalBusName(bus, Process);


            #line default
            #line hidden

            #line 98 ""
                    this.Write("    -- Internal bus ");

            #line default
            #line hidden

            #line 98 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(busname));

            #line default
            #line hidden

            #line 98 ""
                    this.Write(" signals\n");

            #line default
            #line hidden

            #line 99 ""
                    foreach (var signal in bus.Signals)
                    {
            #line default
            #line hidden

            #line 100 ""
                        this.Write("    signal ");

            #line default
            #line hidden

            #line 100 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(busname + "_" + signal.Name)));

            #line default
            #line hidden

            #line 100 ""
                        this.Write(": ");

            #line default
            #line hidden

            #line 100 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(signal)));

            #line default
            #line hidden

            #line 100 ""
                        this.Write(";\n");

            #line default
            #line hidden

            #line 101 ""
                    }

            #line default
            #line hidden

            #line 102 ""
                    this.Write("\n");

            #line default
            #line hidden

            #line 103 ""
                }

            #line default
            #line hidden

            #line 104 ""
                this.Write("\n");

            #line default
            #line hidden

            #line 105 ""
                if (Process.SharedSignals.Any() || Process.InternalDataElements.Any())
                {
            #line default
            #line hidden

            #line 106 ""
                    this.Write("    -- Internal signals\n");

            #line default
            #line hidden

            #line 107 ""
                    foreach (var s in Process.SharedSignals)
                    {
            #line default
            #line hidden

            #line 108 ""
                        this.Write("    signal ");

            #line default
            #line hidden

            #line 108 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(s.Name));

            #line default
            #line hidden

            #line 108 ""
                        this.Write(" : ");

            #line default
            #line hidden

            #line 108 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(s)));

            #line default
            #line hidden

            #line 108 ""
                        this.Write(";\n");

            #line default
            #line hidden

            #line 109 ""
                    }

            #line default
            #line hidden

            #line 110 ""
                    if (RSP.FiniteStateMethod != null)
                    {
            #line default
            #line hidden

            #line 111 ""
                        this.Write("    signal FSM_Trigger : Std_logic := \'0\';\n");

            #line default
            #line hidden

            #line 112 ""
                    }

            #line default
            #line hidden

            #line 113 ""
                    this.Write("\n");

            #line default
            #line hidden

            #line 114 ""
                    foreach (var s in Process.InternalDataElements)
                    {
            #line default
            #line hidden

            #line 115 ""
                        this.Write("    ");

            #line default
            #line hidden

            #line 115 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(s is AST.Signal ? "signal" : "shared variable"));

            #line default
            #line hidden

            #line 115 ""
                        this.Write(" ");

            #line default
            #line hidden

            #line 115 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(s.Name));

            #line default
            #line hidden

            #line 115 ""
                        this.Write(" : ");

            #line default
            #line hidden

            #line 115 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(s)));

            #line default
            #line hidden

            #line 115 ""
                        this.Write(" := ");

            #line default
            #line hidden

            #line 115 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(RS.GetResetExpression(s)));

            #line default
            #line hidden

            #line 115 ""
                        this.Write(";\n");

            #line default
            #line hidden

            #line 116 ""
                    }

            #line default
            #line hidden

            #line 117 ""
                }

            #line default
            #line hidden

            #line 118 ""
                this.Write("\n");

            #line default
            #line hidden

            #line 119 ""
                if (Process.Methods != null && Process.Methods.Any(x => !(x.Ignore || x.IsStateMachine)))
                {
            #line default
            #line hidden

            #line 120 ""
                    this.Write("    -- Internal methods\n");

            #line default
            #line hidden

            #line 121 ""
                    foreach (var s in Process.Methods.Where(x => !(x.Ignore || x.IsStateMachine)))
                    {
            #line default
            #line hidden

            #line 122 ""
                        foreach (var line in RSP.Helper.RenderMethod(s))
                        {
            #line default
            #line hidden

            #line 123 ""
                            this.Write("    ");

            #line default
            #line hidden

            #line 123 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(line));

            #line default
            #line hidden

            #line 123 ""
                            this.Write("\n");

            #line default
            #line hidden

            #line 124 ""
                        }

            #line default
            #line hidden

            #line 125 ""
                        this.Write("\n");

            #line default
            #line hidden

            #line 126 ""
                    }

            #line default
            #line hidden

            #line 127 ""
                }

            #line default
            #line hidden

            #line 128 ""
                this.Write("\n");

            #line default
            #line hidden

            #line 129 ""
                if (Process.IsClocked && RSP.FiniteStateMethod != null)
                {
            #line default
            #line hidden

            #line 130 ""
                    this.Write("    -- Clock-edge capture signals\n");

            #line default
            #line hidden

            #line 131 ""
                    foreach (var bus in Process.InputBusses)
                    {
                        var busname = RS.GetLocalBusName(bus, Process);


            #line default
            #line hidden

            #line 134 ""
                        this.Write("    -- Input bus ");

            #line default
            #line hidden

            #line 134 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(busname));

            #line default
            #line hidden

            #line 134 ""
                        this.Write(" signals\n");

            #line default
            #line hidden

            #line 135 ""
                        foreach (var signal in bus.Signals)
                        {
            #line default
            #line hidden

            #line 136 ""
                            this.Write("    signal ");

            #line default
            #line hidden

            #line 136 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("capture_" + busname + "_" + signal.Name)));

            #line default
            #line hidden

            #line 136 ""
                            this.Write(": ");

            #line default
            #line hidden

            #line 136 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(signal)));

            #line default
            #line hidden

            #line 136 ""
                            this.Write(" := ");

            #line default
            #line hidden

            #line 136 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(RS.GetResetExpression(signal)));

            #line default
            #line hidden

            #line 136 ""
                            this.Write(";\n");

            #line default
            #line hidden

            #line 137 ""
                        }

            #line default
            #line hidden

            #line 138 ""
                    }

            #line default
            #line hidden

            #line 139 ""
                }

            #line default
            #line hidden

            #line 140 ""
                this.Write("\n      -- User defined signals, procedures and components here\n      -- #### USER" +
                           "-DATA-SIGNALS-START\n      -- #### USER-DATA-SIGNALS-END\n\nbegin\n\n    -- Custom pr" +
                           "ocesses go here\n    -- #### USER-DATA-PROCESSES-START\n    -- #### USER-DATA-PROC" +
                           "ESSES-END\n\n");

            #line default
            #line hidden

            #line 151 ""
                if (Process.Methods != null && Process.Methods.Any(x => !x.Ignore && x.IsStateMachine))
                {
            #line default
            #line hidden

            #line 152 ""
                    this.Write("    -- State machine process\n");

            #line default
            #line hidden

            #line 153 ""
                    foreach (var s in Process.Methods.Where(x => !x.Ignore && x.IsStateMachine))
                    {
            #line default
            #line hidden

            #line 154 ""
                        foreach (var line in RSP.Helper.RenderStateMachine(s, RSP))
                        {
            #line default
            #line hidden

            #line 155 ""
                            this.Write("    ");

            #line default
            #line hidden

            #line 155 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(line));

            #line default
            #line hidden

            #line 155 ""
                            this.Write("\n");

            #line default
            #line hidden

            #line 156 ""
                        }

            #line default
            #line hidden

            #line 157 ""
                    }

            #line default
            #line hidden

            #line 158 ""
                }

            #line default
            #line hidden

            #line 159 ""
                this.Write("\n\n");

            #line default
            #line hidden

            #line 161 ""

                var sensitivity_signal = RSP.Process.IsClocked ? "CLK" : "RDY";
                var variables          = RSP.Variables.Concat(RSP.FiniteStateMethod == null ? RSP.SharedVariables : new Variable[0]);


            #line default
            #line hidden

            #line 165 ""
                this.Write("\n    process(\n        -- Custom sensitivity signals here\n        -- #### USER-DAT" +
                           "A-SENSITIVITY-START\n        -- #### USER-DATA-SENSITIVITY-END\n        ");

            #line default
            #line hidden

            #line 170 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(sensitivity_signal));

            #line default
            #line hidden

            #line 170 ""
                this.Write(",\n        RST\n    )\n");

            #line default
            #line hidden

            #line 173 ""
                if (variables.Count() > 0)
                {
            #line default
            #line hidden

            #line 174 ""
                    this.Write("    -- Internal variables\n");

            #line default
            #line hidden

            #line 175 ""
                    foreach (var s in variables)
                    {
            #line default
            #line hidden

            #line 176 ""
                        this.Write("    variable ");

            #line default
            #line hidden

            #line 176 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(s.Name));

            #line default
            #line hidden

            #line 176 ""
                        this.Write(" : ");

            #line default
            #line hidden

            #line 176 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(s)));

            #line default
            #line hidden

            #line 176 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(Process.SharedVariables.Contains(s) ? " := " + Naming.ToValidName("reset_" + s.Name) : ""));

            #line default
            #line hidden

            #line 176 ""
                        this.Write(";\n");

            #line default
            #line hidden

            #line 177 ""
                    }

            #line default
            #line hidden

            #line 178 ""
                }

            #line default
            #line hidden

            #line 179 ""
                this.Write("\n");

            #line default
            #line hidden

            #line 180 ""
                if (!RSP.Process.IsClocked)
                {
            #line default
            #line hidden

            #line 181 ""
                    this.Write("    variable reentry_guard: std_logic;\n");

            #line default
            #line hidden

            #line 182 ""
                }

            #line default
            #line hidden

            #line 183 ""
                this.Write(@"
    -- #### USER-DATA-NONCLOCKEDVARIABLES-START
    -- #### USER-DATA-NONCLOCKEDVARIABLES-END
	begin
        -- Initialize code here
        -- #### USER-DATA-NONCLOCKEDSHAREDINITIALIZECODE-START
        -- #### USER-DATA-NONCLOCKEDSHAREDINITIALIZECODE-END

        if RST = '1' then
");

            #line default
            #line hidden

            #line 192 ""
                foreach (var s in RSP.ProcessResetStaments)
                {
            #line default
            #line hidden

            #line 193 ""
                    this.Write("            ");

            #line default
            #line hidden

            #line 193 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(s));

            #line default
            #line hidden

            #line 193 ""
                    this.Write("\n");

            #line default
            #line hidden

            #line 194 ""
                }

            #line default
            #line hidden

            #line 195 ""
                foreach (var variable in RSP.FiniteStateMethod == null ? RSP.SharedVariables : RSP.Variables)
                {
            #line default
            #line hidden

            #line 196 ""
                    this.Write("            ");

            #line default
            #line hidden

            #line 196 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(variable.Name));

            #line default
            #line hidden

            #line 196 ""
                    this.Write(" := ");

            #line default
            #line hidden

            #line 196 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("reset_" + variable.Name)));

            #line default
            #line hidden

            #line 196 ""
                    this.Write(";\n");

            #line default
            #line hidden

            #line 197 ""
                }

            #line default
            #line hidden

            #line 198 ""
                foreach (var variable in Process.SharedSignals)
                {
            #line default
            #line hidden

            #line 199 ""
                    this.Write("            ");

            #line default
            #line hidden

            #line 199 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(variable.Name));

            #line default
            #line hidden

            #line 199 ""
                    this.Write(" <= ");

            #line default
            #line hidden

            #line 199 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("reset_" + variable.Name)));

            #line default
            #line hidden

            #line 199 ""
                    this.Write(";\n");

            #line default
            #line hidden

            #line 200 ""
                }

            #line default
            #line hidden

            #line 201 ""
                this.Write("\n");

            #line default
            #line hidden

            #line 202 ""
                if (Process.IsClocked && RSP.FiniteStateMethod != null)
                {
            #line default
            #line hidden

            #line 203 ""
                    this.Write("            -- Clock-edge capture signals\n");

            #line default
            #line hidden

            #line 204 ""
                    foreach (var bus in Process.InputBusses)
                    {
                        var busname = RS.GetLocalBusName(bus, Process);


            #line default
            #line hidden

            #line 207 ""
                        this.Write("            -- Input bus ");

            #line default
            #line hidden

            #line 207 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(busname));

            #line default
            #line hidden

            #line 207 ""
                        this.Write(" signals\n");

            #line default
            #line hidden

            #line 208 ""
                        foreach (var signal in bus.Signals)
                        {
            #line default
            #line hidden

            #line 209 ""
                            this.Write("            ");

            #line default
            #line hidden

            #line 209 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("capture_" + busname + "_" + signal.Name)));

            #line default
            #line hidden

            #line 209 ""
                            this.Write(" <= ");

            #line default
            #line hidden

            #line 209 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(RS.GetResetExpression(signal)));

            #line default
            #line hidden

            #line 209 ""
                            this.Write(";\n");

            #line default
            #line hidden

            #line 210 ""
                        }

            #line default
            #line hidden

            #line 211 ""
                    }

            #line default
            #line hidden

            #line 212 ""
                }

            #line default
            #line hidden

            #line 213 ""
                this.Write("                                    \n");

            #line default
            #line hidden

            #line 214 ""
                if (!RSP.Process.IsClocked)
                {
            #line default
            #line hidden

            #line 215 ""
                    this.Write("            reentry_guard := \'0\';\n");

            #line default
            #line hidden

            #line 216 ""
                }

            #line default
            #line hidden

            #line 217 ""
                if (RSP.FiniteStateMethod == null)
                {
            #line default
            #line hidden

            #line 218 ""
                    this.Write("            FIN <= \'0\';\n");

            #line default
            #line hidden

            #line 219 ""
                }
                else
                {
            #line default
            #line hidden

            #line 220 ""
                    this.Write("            FSM_Trigger <= \'0\';\n");

            #line default
            #line hidden

            #line 221 ""
                }

            #line default
            #line hidden

            #line 222 ""
                this.Write("\n            -- Initialize code here\n            -- #### USER-DATA-NONCLOCKEDRESE" +
                           "TCODE-START\n            -- #### USER-DATA-NONCLOCKEDRESETCODE-END\n\n");

            #line default
            #line hidden

            #line 227 ""
                if (RSP.Process.IsClocked)
                {
            #line default
            #line hidden

            #line 228 ""
                    this.Write("        elsif rising_edge(");

            #line default
            #line hidden

            #line 228 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(sensitivity_signal));

            #line default
            #line hidden

            #line 228 ""
                    this.Write(") then\n");

            #line default
            #line hidden

            #line 229 ""
                }
                else
                {
            #line default
            #line hidden

            #line 230 ""
                    this.Write("        elsif reentry_guard /= RDY then\n            reentry_guard := RDY;\n");

            #line default
            #line hidden

            #line 232 ""
                }

            #line default
            #line hidden

            #line 233 ""
                this.Write("\n            -- Initialize code here\n            -- #### USER-DATA-NONCLOCKEDINIT" +
                           "IALIZECODE-START\n            -- #### USER-DATA-NONCLOCKEDINITIALIZECODE-END\n\n\n");

            #line default
            #line hidden

            #line 239 ""
                foreach (var line in RSP.Helper.RenderMethod(Process.MainMethod))
                {
            #line default
            #line hidden

            #line 240 ""
                    this.Write("            ");

            #line default
            #line hidden

            #line 240 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(line));

            #line default
            #line hidden

            #line 240 ""
                    this.Write("\n");

            #line default
            #line hidden

            #line 241 ""
                }

            #line default
            #line hidden

            #line 242 ""
                this.Write("\n");

            #line default
            #line hidden

            #line 243 ""
                if (Process.IsClocked && RSP.FiniteStateMethod != null)
                {
            #line default
            #line hidden

            #line 244 ""
                    this.Write("            -- Clock-edge capture signals\n");

            #line default
            #line hidden

            #line 245 ""
                    foreach (var bus in Process.InputBusses)
                    {
                        var busname = RS.GetLocalBusName(bus, Process);


            #line default
            #line hidden

            #line 248 ""
                        this.Write("            -- Input bus ");

            #line default
            #line hidden

            #line 248 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(busname));

            #line default
            #line hidden

            #line 248 ""
                        this.Write(" signals\n");

            #line default
            #line hidden

            #line 249 ""
                        foreach (var signal in bus.Signals)
                        {
            #line default
            #line hidden

            #line 250 ""
                            this.Write("            ");

            #line default
            #line hidden

            #line 250 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("capture_" + busname + "_" + signal.Name)));

            #line default
            #line hidden

            #line 250 ""
                            this.Write(" <= ");

            #line default
            #line hidden

            #line 250 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(busname + "_" + signal.Name)));

            #line default
            #line hidden

            #line 250 ""
                            this.Write(";\n");

            #line default
            #line hidden

            #line 251 ""
                        }

            #line default
            #line hidden

            #line 252 ""
                    }

            #line default
            #line hidden

            #line 253 ""
                }

            #line default
            #line hidden

            #line 254 ""
                this.Write("\n\n");

            #line default
            #line hidden

            #line 256 ""
                if (RSP.FiniteStateMethod == null)
                {
            #line default
            #line hidden

            #line 257 ""
                    this.Write("            FIN <= ");

            #line default
            #line hidden

            #line 257 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(sensitivity_signal));

            #line default
            #line hidden

            #line 257 ""
                    this.Write(";\n");

            #line default
            #line hidden

            #line 258 ""
                }
                else if (RSP.Process.IsClocked)
                {
            #line default
            #line hidden

            #line 259 ""
                    this.Write("            FSM_Trigger <= not FSM_Trigger;\n");

            #line default
            #line hidden

            #line 260 ""
                }
                else
                {
            #line default
            #line hidden

            #line 261 ""
                    this.Write("            FSM_Trigger <= reentry_guard;\n");

            #line default
            #line hidden

            #line 262 ""
                }

            #line default
            #line hidden

            #line 263 ""
                this.Write("\n        end if;\n\n        -- Non-clocked process actions here\n\n        -- #### US" +
                           "ER-DATA-CODE-START\n        -- #### USER-DATA-CODE-END\n\n    end process;\n\n");

            #line default
            #line hidden

            #line 273 ""
            }

            #line default
            #line hidden

            #line 274 ""
            this.Write("\nend RTL;\n\n-- User defined architectures here\n-- #### USER-DATA-ARCH-START\n-- ###" +
                       "# USER-DATA-ARCH-END\n");

            #line default
            #line hidden
            return(this.GenerationEnvironment.ToString());
        }
        public (bool success, string failReason) PlaceBet(Hero hero, string team, int bet)
        {
            var tournamentBehavior = Mission.Current?.GetMissionBehaviour <TournamentBehavior>();

            if (tournamentBehavior == null)
            {
                return(false, "Tournament is not active");
            }

            if (!BLTAdoptAHeroModule.TournamentConfig.EnableBetting)
            {
                return(false, "Betting is disabled");
            }

            if (CurrentBettingState == BettingState.closed)
            {
                return(false, "Betting is closed");
            }

            if (tournamentBehavior.CurrentRoundIndex != 3 && BLTAdoptAHeroModule.TournamentConfig.BettingOnFinalOnly)
            {
                return(false, "Betting is only allowed on the final");
            }

            if (CurrentBettingState != BettingState.open)
            {
                return(false, "Betting is not open");
            }

            int teamsCount = tournamentBehavior.CurrentMatch.Teams.Count();

            string[] activeTeams = TournamentHelpers.TeamNames.Take(teamsCount).ToArray();
            int      teamIdx     = activeTeams.IndexOf(team.ToLower());

            if (teamIdx == -1)
            {
                return(false, $"Team name must be one of {string.Join(", ", activeTeams)}");
            }

            if (activeBets.TryGetValue(hero, out var existingBet))
            {
                if (existingBet.team != teamIdx)
                {
                    return(false, "You can only bet on one team");
                }
            }

            int heroGold = BLTAdoptAHeroCampaignBehavior.Current.GetHeroGold(hero);

            if (heroGold < bet)
            {
                return(false, Naming.NotEnoughGold(bet, heroGold));
            }

            if (existingBet != null)
            {
                existingBet.bet += bet;
            }
            else
            {
                activeBets.Add(hero, new() { team = teamIdx, bet = bet });
            }

            // Take the actual money
            BLTAdoptAHeroCampaignBehavior.Current.ChangeHeroGold(hero, -bet);

            TournamentHub.UpdateBets();

            return(true, null);
        }
        public static MappingEntity Parse(EntityMetadata entityMetadata)
        {
            var entity = new MappingEntity();

            entity.Attribute             = new CrmEntityAttribute();
            entity.TypeCode              = entityMetadata.ObjectTypeCode;
            entity.Attribute.LogicalName = entityMetadata.LogicalName;
            entity.IsIntersect           = (bool)entityMetadata.IsIntersect;
            entity.Attribute.PrimaryKey  = entityMetadata.PrimaryIdAttribute;

            // entity.DisplayName = Helper.GetProperVariableName(entityMetadata.SchemaName);
            entity.DisplayName = Naming.GetProperEntityName(entityMetadata.SchemaName);
            entity.HybridName  = Naming.GetProperHybridName(entityMetadata.SchemaName, entityMetadata.LogicalName);
            entity.StateName   = entity.HybridName + "State";

            if (entityMetadata.Description != null)
            {
                if (entityMetadata.Description.UserLocalizedLabel != null)
                {
                    entity.Description = entityMetadata.Description.UserLocalizedLabel.Label;
                }
            }

            var fields = entityMetadata.Attributes
                         .Where(a => a.AttributeOf == null)
                         .Select(a => MappingField.Parse(a, entity)).ToList();

            fields.ForEach(f =>
            {
                if (f.DisplayName == entity.DisplayName)
                {
                    f.DisplayName += "1";
                }
                //f.HybridName = Naming.GetProperHybridFieldName(f.DisplayName, f.Attribute);
            }
                           );

            AddEnityImageCRM2013(fields);
            AddLookupFields(fields);

            entity.Fields = fields.ToArray();
            entity.States = entityMetadata.Attributes.Where(a => a is StateAttributeMetadata).Select(a => MappingEnum.Parse(a as EnumAttributeMetadata)).FirstOrDefault();

            entity.Enums = entityMetadata.Attributes
                           .Where(a => a is PicklistAttributeMetadata || a is StateAttributeMetadata || a is StatusAttributeMetadata || a is BooleanAttributeMetadata)
                           .Select(a => MappingEnum.Parse(a)).ToArray();

            entity.PrimaryKey           = entity.Fields.First(f => f.Attribute.LogicalName == entity.Attribute.PrimaryKey);
            entity.PrimaryKeyProperty   = entity.PrimaryKey.DisplayName;
            entity.PrimaryNameAttribute = entityMetadata.PrimaryNameAttribute;

            entity.RelationshipsOneToMany = entityMetadata.OneToManyRelationships.Select(r =>
                                                                                         MappingRelationship1N.Parse(r, entity.Fields)).ToArray();

            entity.RelationshipsOneToMany.ToList().ForEach(r =>
            {
                var newName = r.DisplayName;

                if (newName == entity.DisplayName)
                {
                    newName = r.DisplayName += "1";
                }

                if (entity.Fields.Any(e => e.DisplayName == newName))
                {
                    newName = r.DisplayName += "2";
                }
            });

            entity.RelationshipsManyToOne = entityMetadata.ManyToOneRelationships.Select(r =>
                                                                                         MappingRelationshipN1.Parse(r, entity.Fields)).ToArray();

            entity.RelationshipsManyToOne.ToList().ForEach(r =>
            {
                var newName = r.DisplayName;

                if (newName == entity.DisplayName)
                {
                    newName = r.DisplayName += "1";
                }

                if (entity.Fields.Any(e => e.DisplayName == newName))
                {
                    newName = r.DisplayName += "2";
                }
            });

            var RelationshipsManyToMany = entityMetadata.ManyToManyRelationships.Select(r => MappingRelationshipMN.Parse(r, entity.LogicalName)).ToList();
            var selfReferenced          = RelationshipsManyToMany.Where(r => r.IsSelfReferenced).ToList();

            foreach (var referecned in selfReferenced)
            {
                var referencing = (MappingRelationshipMN)referecned.Clone();
                referencing.DisplayName = "Referencing" + Naming.GetProperVariableName(referecned.SchemaName);
                referencing.EntityRole  = "Microsoft.Xrm.Sdk.EntityRole.Referencing";
                RelationshipsManyToMany.Add(referencing);
            }
            RelationshipsManyToMany.ForEach(r =>
            {
                var newName = r.DisplayName;

                if (newName == entity.DisplayName)
                {
                    newName = r.DisplayName += "1";
                }

                if (entity.Fields.Any(e => e.DisplayName == newName))
                {
                    newName = r.DisplayName += "2";
                }
            });
            entity.RelationshipsManyToMany = RelationshipsManyToMany.OrderBy(r => r.DisplayName).ToArray();

            return(entity);
        }
Esempio n. 15
0
        /// <inheritdoc />
        public void WriteFunctions(Profile profile, IEnumerable <Function> functions, ProfileConverterOptions opts)
        {
            foreach (var function in functions)
            {
                if (function.ProfileName != profile.Name || function.ProfileVersion?.ToString(2) != profile.Version)
                {
                    continue;
                }

                foreach (var rawCategory in function.Categories)
                {
                    var category = FormatCategory(rawCategory);
                    // check that the root project exists
                    if (!profile.Projects.ContainsKey("Core"))
                    {
                        profile.Projects.Add
                        (
                            "Core",
                            new Project
                        {
                            CategoryName = "Core", ExtensionName = "Core", IsRoot = true,
                            Namespace    = string.Empty
                        }
                        );
                    }

                    // check that the extension project exists, if applicable
                    if (function.ExtensionName != "Core" && !profile.Projects.ContainsKey(category))
                    {
                        profile.Projects.Add
                        (
                            category,
                            new Project
                        {
                            CategoryName = category, ExtensionName = category, IsRoot = false,
                            Namespace    = $".{category.CheckMemberName(opts.Prefix)}"
                        }
                        );
                    }

                    // check that the interface exists
                    if
                    (
                        !profile.Projects[function.ExtensionName == "Core" ? "Core" : category]
                        .Interfaces.ContainsKey(rawCategory)
                    )
                    {
                        profile.Projects[function.ExtensionName == "Core" ? "Core" : category]
                        .Interfaces.Add
                        (
                            rawCategory,
                            new Interface
                        {
                            Name =
                                $"I{Naming.Translate(TrimName(rawCategory, opts), opts.Prefix).CheckMemberName(opts.Prefix)}"
                        }
                        );
                    }

                    // add the function to the interface
                    profile.Projects[function.ExtensionName == "Core" ? "Core" : category]
                    .Interfaces[rawCategory]
                    .Functions.Add(function);
                }
            }
        }
Esempio n. 16
0
 private static I ForService <I>(Uri serviceAddress, ServicePartitionKey partitionKey = null) where I : class, IService
 {
     Debug.Assert(typeof(I).IsInterface);
     return(ServiceProxy.Create <I>(serviceAddress, partitionKey: partitionKey, listenerName: Naming.Listener <I>()));
 }
Esempio n. 17
0
        public virtual string TransformText()
        {
            this.GenerationEnvironment = null;

            #line 1 ""
            this.Write("");

            #line default
            #line hidden

            #line 6 ""
            this.Write("#include \"");

            #line default
            #line hidden

            #line 6 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.SimulatorFileName(Network)));

            #line default
            #line hidden

            #line 6 ""
            this.Write(".hpp\"\n\n// The names of all signals\nstd::string ");

            #line default
            #line hidden

            #line 9 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 9 ""
            this.Write("_SIGNAL_NAMES[] = {\n");

            #line default
            #line hidden

            #line 10 ""
            foreach (var signal in RS.DriverSignals.Concat(RS.VerifySignals))
            {
                var cpptype = RS.TypeScope.GetType(signal);
                if (cpptype.IsArray)
                {
                    var eltype = cpptype.ElementName;
                    var length = (int)RS.GetArrayLength(signal).DefaultValue;
                    for (var i = 0; i < length; i++)
                    {
            #line default
            #line hidden

            #line 17 ""
                        this.Write("    \"");

            #line default
            #line hidden

            #line 17 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(RS.TestBenchSignalName(signal)));

            #line default
            #line hidden

            #line 17 ""
                        this.Write("(");

            #line default
            #line hidden

            #line 17 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(i));

            #line default
            #line hidden

            #line 17 ""
                        this.Write(")\",\n");

            #line default
            #line hidden

            #line 18 ""
                    }

            #line default
            #line hidden

            #line 19 ""
                }
                else
                {
            #line default
            #line hidden

            #line 20 ""
                    this.Write("    \"");

            #line default
            #line hidden

            #line 20 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(RS.TestBenchSignalName(signal)));

            #line default
            #line hidden

            #line 20 ""
                    this.Write("\",\n");

            #line default
            #line hidden

            #line 21 ""
                }

            #line default
            #line hidden

            #line 22 ""
            }

            #line default
            #line hidden

            #line 23 ""
            this.Write("};\n\n");

            #line default
            #line hidden

            #line 25 ""
            foreach (var process in Network.Processes)
            {
                var members = process
                              .SharedVariables.Cast <AST.DataElement>()
                              .Union(process.SharedSignals)
                              //.Where(x => RS.TypeScope.GetType(x).IsArray)
                              .Where(x => (x.DefaultValue is SME.AST.ArrayCreateExpression) || (x.DefaultValue is Array));
                foreach (var v in members)
                {
                    var rt       = RS.TypeScope.GetType(v);
                    var eltype   = rt.ElementName;
                    var arraylen = RS.GetArrayLength(v).DefaultValue;


            #line default
            #line hidden

            #line 36 ""
                    this.Write("const ");

            #line default
            #line hidden

            #line 36 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 36 ""
                    this.Write(" init_");

            #line default
            #line hidden

            #line 36 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ProcessNameToValidName(process)));

            #line default
            #line hidden

            #line 36 ""
                    this.Write("_");

            #line default
            #line hidden

            #line 36 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(v.Name)));

            #line default
            #line hidden

            #line 36 ""
                    this.Write("[");

            #line default
            #line hidden

            #line 36 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(arraylen));

            #line default
            #line hidden

            #line 36 ""
                    this.Write("] = ");

            #line default
            #line hidden

            #line 36 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(RS.Renderer.GetInitializer(v)));

            #line default
            #line hidden

            #line 36 ""
                    this.Write(";\n");

            #line default
            #line hidden

            #line 37 ""
                }

            #line default
            #line hidden

            #line 38 ""
            }

            #line default
            #line hidden

            #line 39 ""
            this.Write("\n\n");

            #line default
            #line hidden

            #line 41 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 41 ""
            this.Write("::");

            #line default
            #line hidden

            #line 41 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 41 ""
            this.Write("() \n    :\n");

            #line default
            #line hidden

            #line 43 ""
            foreach (var bus in Network.Busses)
            {
            #line default
            #line hidden

            #line 44 ""
                this.Write("        bus_");

            #line default
            #line hidden

            #line 44 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(bus)));

            #line default
            #line hidden

            #line 44 ""
                this.Write("(),\n");

            #line default
            #line hidden

            #line 45 ""
            }

            #line default
            #line hidden

            #line 46 ""
            foreach (var process in Network.Processes)
            {
                var busses  = process.InputBusses.Concat(process.OutputBusses).Concat(process.InternalBusses).Distinct().OrderBy(x => x.Name).ToArray();
                var members = process.SharedVariables.Cast <AST.DataElement>().Union(process.SharedSignals).ToArray();


            #line default
            #line hidden

            #line 51 ""
                this.Write("        proc_");

            #line default
            #line hidden

            #line 51 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ProcessNameToValidName(process)));

            #line default
            #line hidden

            #line 51 ""
                this.Write("(\n");

            #line default
            #line hidden

            #line 52 ""
                foreach (var bus in busses)
                {
            #line default
            #line hidden

            #line 53 ""
                    this.Write("            &bus_");

            #line default
            #line hidden

            #line 53 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(bus)));

            #line default
            #line hidden

            #line 53 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture((bus == busses.Last() & members.Length == 0) ? "" : ", "));

            #line default
            #line hidden

            #line 53 ""
                    this.Write("\n");

            #line default
            #line hidden

            #line 54 ""
                }

            #line default
            #line hidden

            #line 55 ""
                foreach (var v in members)
                {
                    var initializer = RS.Renderer.GetInitializer(v);
                    if (!string.IsNullOrWhiteSpace(initializer))
                    {
                        var rt = RS.TypeScope.GetType(v);
                        if (rt.IsArray)
                        {
                            var eltype   = rt.ElementName;
                            var arraylen = RS.GetArrayLength(v).DefaultValue;



            #line default
            #line hidden

            #line 64 ""
                            this.Write("            ");

            #line default
            #line hidden

            #line 64 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(arraylen));

            #line default
            #line hidden

            #line 64 ""
                            this.Write(",\n");

            #line default
            #line hidden

            #line 65 ""


                            if ((v.DefaultValue is SME.AST.ArrayCreateExpression) || v.DefaultValue is Array)
                            {
            #line default
            #line hidden

            #line 68 ""
                                this.Write("            init_");

            #line default
            #line hidden

            #line 68 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ProcessNameToValidName(process)));

            #line default
            #line hidden

            #line 68 ""
                                this.Write("_");

            #line default
            #line hidden

            #line 68 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(v.Name)));

            #line default
            #line hidden

            #line 68 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(v == members.Last() ? "" : ","));

            #line default
            #line hidden

            #line 68 ""
                                this.Write("\n");

            #line default
            #line hidden

            #line 69 ""
                            }
                            else
                            {
            #line default
            #line hidden

            #line 70 ""
                                this.Write("            new ");

            #line default
            #line hidden

            #line 70 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 70 ""
                                this.Write("[");

            #line default
            #line hidden

            #line 70 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(arraylen));

            #line default
            #line hidden

            #line 70 ""
                                this.Write("]()");

            #line default
            #line hidden

            #line 70 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(v == members.Last() ? "" : ","));

            #line default
            #line hidden

            #line 70 ""
                                this.Write("\n");

            #line default
            #line hidden

            #line 71 ""
                            }

            #line default
            #line hidden

            #line 72 ""
                        }
                        else
                        {
            #line default
            #line hidden

            #line 73 ""
                            this.Write("            ");

            #line default
            #line hidden

            #line 73 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(initializer));

            #line default
            #line hidden

            #line 73 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(v == members.Last() ? "" : ","));

            #line default
            #line hidden

            #line 73 ""
                            this.Write("\n");

            #line default
            #line hidden

            #line 74 ""
                        }

            #line default
            #line hidden

            #line 75 ""
                    }

            #line default
            #line hidden

            #line 76 ""
                }

            #line default
            #line hidden

            #line 77 ""
                this.Write("        ),\n");

            #line default
            #line hidden

            #line 78 ""
            }

            #line default
            #line hidden

            #line 79 ""
            this.Write("        trace_input(NULL),\n        input_line(),\n        cycle(0)\n{\n\n}\n\nsize_t ");

            #line default
            #line hidden

            #line 86 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 86 ""
            this.Write(@"::RunSimulation(const char* inputfile)
{
    LoadTraceInput(inputfile);

    // Ignore the reset cycle
    DriveFromTraceInput();

    while(true) {
        if (!DriveFromTraceInput()) {
            size_t res = cycle;
            Stop();
            return res;
        }
        OnTick();
        VerifyTrace();
        FinishCycle();
    }
}

void ");

            #line default
            #line hidden

            #line 105 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 105 ""
            this.Write(@"::LoadTraceInput(const char* inputfile)
{
    if (trace_input != NULL)
       throw MessageException(""Already have an input trace file open"");

    // Open the trace file and validate the headers
    trace_input = new std::ifstream(inputfile);
    if (trace_input->bad()) {
        trace_input->close();
        throw MessageException(""Trace input file not found, or not able to open"");
    }

    if (!std::getline(*trace_input, input_line)) {
        throw MessageException(""Trace input file was empty"");
    }

    if (cycle != 0) {
        throw MessageException(""Cannot load input file after the simulation has started"");
    }

    std::string token;
    std::istringstream headerlinestream(input_line);
    size_t field = 0;
    while(std::getline(headerlinestream, token, ',')) {
        if (token.compare(");

            #line default
            #line hidden

            #line 129 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 129 ""
            this.Write("_SIGNAL_NAMES[field]) != 0) {\n\n            std::stringstream sstm;\n            ss" +
                       "tm << \"Field #\" << field << \" should be named \" << ");

            #line default
            #line hidden

            #line 132 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 132 ""
            this.Write("_SIGNAL_NAMES[field] << \" but is named \" << token << \", the trace file cannot be " +
                       "used\";\n            throw MessageException(sstm.str());\n        }\n        field++" +
                       ";\n    }\n\n    cycle = 0;\n}\n\n");

            #line default
            #line hidden

            #line 141 ""
            var driver_signal_count = 0;

            #line default
            #line hidden

            #line 142 ""
            this.Write("\nbool ");

            #line default
            #line hidden

            #line 143 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 143 ""
            this.Write(@"::DriveFromTraceInput()
{
    if (trace_input == NULL) {
        throw MessageException(""Trace input file is not loaded"");
    }

    if (!std::getline(*trace_input, input_line)) {
        return false;
    }

    size_t i;
    std::string token;
    std::istringstream valuestream(input_line);
    size_t field = 0;

");

            #line default
            #line hidden

            #line 158 ""
            foreach (var signal in RS.DriverSignals)
            {
                var cpptype = RS.TypeScope.GetType(signal);
                if (cpptype.IsArray)
                {
                    var eltype = cpptype.ElementName;
                    var length = (int)RS.GetArrayLength(signal).DefaultValue;
                    driver_signal_count += length;


            #line default
            #line hidden

            #line 165 ""
                    this.Write("    for (i = 0; i < ");

            #line default
            #line hidden

            #line 165 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(length));

            #line default
            #line hidden

            #line 165 ""
                    this.Write("; i++) {\n        if (!std::getline(valuestream, token, \',\')) {\n            std::s" +
                               "tringstream sstm;\n            sstm << \"Unexpected end-of-line in cycle \" << cycl" +
                               "e << \", field \" << field << \", ");

            #line default
            #line hidden

            #line 168 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 168 ""
                    this.Write("[\" << i << \"]\" << std::endl;\n            throw MessageException(sstm.str());\n    " +
                               "    }\n        if (token.compare(\"U\") != 0)\n            bus_");

            #line default
            #line hidden

            #line 172 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(signal.Parent as AST.Bus)));

            #line default
            #line hidden

            #line 172 ""
                    this.Write(".");

            #line default
            #line hidden

            #line 172 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 172 ""
                    this.Write("(i, parse_");

            #line default
            #line hidden

            #line 172 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 172 ""
                    this.Write("(token));            \n        field++;\n    }\n");

            #line default
            #line hidden

            #line 175 ""
                }
                else
                {
                    driver_signal_count++;


            #line default
            #line hidden

            #line 179 ""
                    this.Write("    if (!std::getline(valuestream, token, \',\')) {\n        std::stringstream sstm;" +
                               "\n        sstm << \"Unexpected end-of-line in cycle \" << cycle << \", field \" << fi" +
                               "eld << \", ");

            #line default
            #line hidden

            #line 181 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 181 ""
                    this.Write("[\" << i << \"]\" << std::endl;\n        throw MessageException(sstm.str());\n    }\n  " +
                               "  if (token.compare(\"U\") != 0)\n        bus_");

            #line default
            #line hidden

            #line 185 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(signal.Parent as AST.Bus)));

            #line default
            #line hidden

            #line 185 ""
                    this.Write(".");

            #line default
            #line hidden

            #line 185 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 185 ""
                    this.Write("(parse_");

            #line default
            #line hidden

            #line 185 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(RS.TypeScope.GetType(signal).Name));

            #line default
            #line hidden

            #line 185 ""
                    this.Write("(token));\n    field++;\n");

            #line default
            #line hidden

            #line 187 ""
                }

            #line default
            #line hidden

            #line 188 ""
                this.Write("\n");

            #line default
            #line hidden

            #line 189 ""
            }

            #line default
            #line hidden

            #line 190 ""
            this.Write("\n    return true;\n}\n\nvoid ");

            #line default
            #line hidden

            #line 194 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 194 ""
            this.Write("::FinishCycle() \n{\n    cycle++;\n");

            #line default
            #line hidden

            #line 197 ""
            if (Network.Busses.Any(x => x.IsClocked))
            {
            #line default
            #line hidden

            #line 198 ""
                this.Write("        // Propagate clocked busses\n");

            #line default
            #line hidden

            #line 199 ""
                foreach (var bus in Network.Busses.Where(x => x.IsClocked))
                {
            #line default
            #line hidden

            #line 200 ""
                    this.Write("        bus_");

            #line default
            #line hidden

            #line 200 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 200 ""
                    this.Write(".Propagate();\n");

            #line default
            #line hidden

            #line 201 ""
                }

            #line default
            #line hidden

            #line 202 ""
            }

            #line default
            #line hidden

            #line 203 ""
            this.Write("}\n\nvoid ");

            #line default
            #line hidden

            #line 205 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 205 ""
            this.Write("::OnTick()\n{\n\n");

            #line default
            #line hidden

            #line 208 ""
            foreach (var p in Network.Processes.Where(x => x.IsClocked).Distinct())
            {
            #line default
            #line hidden

            #line 209 ""
                this.Write("    proc_");

            #line default
            #line hidden

            #line 209 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ProcessNameToValidName(p)));

            #line default
            #line hidden

            #line 209 ""
                this.Write(".onTick();\n");

            #line default
            #line hidden

            #line 210 ""
            }

            #line default
            #line hidden

            #line 211 ""
            foreach (var b in Network.Busses.Where(x => x.IsClocked).Distinct())
            {
            #line default
            #line hidden

            #line 212 ""
                this.Write("    bus_");

            #line default
            #line hidden

            #line 212 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(b)));

            #line default
            #line hidden

            #line 212 ""
                this.Write(".propagate_signals();\n");

            #line default
            #line hidden

            #line 213 ""
            }

            #line default
            #line hidden

            #line 214 ""
            this.Write("\n\n");

            #line default
            #line hidden

            #line 216 ""
            foreach (var n in Graph.ExecutionPlan)
            {
                var pn = GetProcess(n.Item);
                if (pn != null && !pn.IsClocked)
                {
            #line default
            #line hidden

            #line 220 ""
                    this.Write("    proc_");

            #line default
            #line hidden

            #line 220 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ProcessNameToValidName(pn)));

            #line default
            #line hidden

            #line 220 ""
                    this.Write(".onTick();\n");

            #line default
            #line hidden

            #line 221 ""
                }

            #line default
            #line hidden

            #line 222 ""
                foreach (var b in n.Item.OutputBusses.Distinct())
                {
            #line default
            #line hidden

            #line 223 ""
                    this.Write("    bus_");

            #line default
            #line hidden

            #line 223 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(GetBus(b))));

            #line default
            #line hidden

            #line 223 ""
                    this.Write(".forward_signals();\n");

            #line default
            #line hidden

            #line 224 ""
                }

            #line default
            #line hidden

            #line 225 ""
                foreach (var b in n.PropagateAfter)
                {
            #line default
            #line hidden

            #line 226 ""
                    this.Write("    bus_");

            #line default
            #line hidden

            #line 226 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(GetBus(b))));

            #line default
            #line hidden

            #line 226 ""
                    this.Write(".propagate_signals();\n");

            #line default
            #line hidden

            #line 227 ""
                }

            #line default
            #line hidden

            #line 228 ""
                foreach (var b in n.Item.InternalBusses)
                {
            #line default
            #line hidden

            #line 229 ""
                    this.Write("    bus_");

            #line default
            #line hidden

            #line 229 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(GetBus(b))));

            #line default
            #line hidden

            #line 229 ""
                    this.Write(".forward_signals();\n    bus_");

            #line default
            #line hidden

            #line 230 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(GetBus(b))));

            #line default
            #line hidden

            #line 230 ""
                    this.Write(".propagate_signals();\n");

            #line default
            #line hidden

            #line 231 ""
                }

            #line default
            #line hidden

            #line 232 ""
            }

            #line default
            #line hidden

            #line 233 ""
            this.Write("}\n\nvoid ");

            #line default
            #line hidden

            #line 235 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 235 ""
            this.Write("::VerifyTrace()\n{\n    if (trace_input == NULL) {\n        throw MessageException(\"" +
                       "Trace input file is not loaded\");\n    }\n\n    size_t i;\n    size_t field = 0;\n   " +
                       " std::string token;\n    std::istringstream valuestream(input_line);\n\n    // Forw" +
                       "ard past the ");

            #line default
            #line hidden

            #line 246 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(driver_signal_count));

            #line default
            #line hidden

            #line 246 ""
            this.Write(" signals\n    for(i = 0; i < ");

            #line default
            #line hidden

            #line 247 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(driver_signal_count));

            #line default
            #line hidden

            #line 247 ""
            this.Write("; i++) {\n        if (!std::getline(valuestream, token, \',\')) {\n            throw " +
                       "MessageException(\"Unexpected end-of-stream\");\n        }\n        field++;\n    }\n\n" +
                       "    bool source_is_undef;\n\n");

            #line default
            #line hidden

            #line 256 ""
            foreach (var signal in RS.VerifySignals)
            {
                var cpptype  = RS.TypeScope.GetType(signal);
                var typecast = cpptype.Name == "system_uint8" ? "(int)" : "";
                if (cpptype.IsArray)
                {
                    typecast = cpptype.ElementName == "system_uint8" ? "(int)" : "";
                    var eltype = cpptype.ElementName;
                    var length = (int)RS.GetArrayLength(signal).DefaultValue;


            #line default
            #line hidden

            #line 264 ""
                    this.Write("    for (i = 0; i < ");

            #line default
            #line hidden

            #line 264 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(length));

            #line default
            #line hidden

            #line 264 ""
                    this.Write(@"; i++) {
        if (!std::getline(valuestream, token, ',')) {
            std::stringstream sstm;
            sstm << ""Unexpected end-of-line in cycle "" << cycle << "", field "" << field << std::endl;
            throw MessageException(sstm.str());
        }

        source_is_undef = false;
        try {
            ");

            #line default
            #line hidden

            #line 273 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 273 ""
                    this.Write(" tmpval = bus_");

            #line default
            #line hidden

            #line 273 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(signal.Parent as AST.Bus)));

            #line default
            #line hidden

            #line 273 ""
                    this.Write(".");

            #line default
            #line hidden

            #line 273 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 273 ""
                    this.Write("(i);\n        } catch (InvalidReadException e) {\n            source_is_undef = tru" +
                               "e;\n        }\n\n        if (token.compare(\"U\") == 0 && source_is_undef) {\n        " +
                               " // Don\'t care\n        } else if (token.compare(\"U\") != 0 && bus_");

            #line default
            #line hidden

            #line 280 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(signal.Parent as AST.Bus)));

            #line default
            #line hidden

            #line 280 ""
                    this.Write(".");

            #line default
            #line hidden

            #line 280 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 280 ""
                    this.Write("(i) != parse_");

            #line default
            #line hidden

            #line 280 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 280 ""
                    this.Write("(token)) {\n            std::stringstream sstm;\n            sstm << \"Error in cycl" +
                               "e \" << cycle << std::endl;\n            sstm << \"Expected value \" << ");

            #line default
            #line hidden

            #line 283 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(typecast));

            #line default
            #line hidden

            #line 283 ""
                    this.Write("parse_");

            #line default
            #line hidden

            #line 283 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 283 ""
                    this.Write("(token) << \", but got \" << ");

            #line default
            #line hidden

            #line 283 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(typecast));

            #line default
            #line hidden

            #line 283 ""
                    this.Write("bus_");

            #line default
            #line hidden

            #line 283 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(signal.Parent as AST.Bus)));

            #line default
            #line hidden

            #line 283 ""
                    this.Write(".");

            #line default
            #line hidden

            #line 283 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 283 ""
                    this.Write("(i) << \" for field \" << ");

            #line default
            #line hidden

            #line 283 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 283 ""
                    this.Write("_SIGNAL_NAMES[field] << \" (raw: \" << token << \")\" << std::endl;\n            throw" +
                               " MessageException(sstm.str());\n        }\n        field++;\n    }\n\n");

            #line default
            #line hidden

            #line 289 ""
                }
                else
                {
            #line default
            #line hidden

            #line 290 ""
                    this.Write(@"    if (!std::getline(valuestream, token, ',')) {
        std::stringstream sstm;
        sstm << ""Unexpected end-of-line in cycle "" << cycle << "", field "" << field << std::endl;
        throw MessageException(sstm.str());
    }

    source_is_undef = false;
    try {
        ");

            #line default
            #line hidden

            #line 298 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(RS.TypeScope.GetType(signal).Name));

            #line default
            #line hidden

            #line 298 ""
                    this.Write(" tmpval = bus_");

            #line default
            #line hidden

            #line 298 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(signal.Parent as AST.Bus)));

            #line default
            #line hidden

            #line 298 ""
                    this.Write(".");

            #line default
            #line hidden

            #line 298 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 298 ""
                    this.Write("();\n    } catch (InvalidReadException e) {\n        source_is_undef = true;\n    }\n" +
                               "\n    if (token.compare(\"U\") == 0 && source_is_undef) {\n        // Don\'t care\n   " +
                               " } else if (token.compare(\"U\") != 0 && bus_");

            #line default
            #line hidden

            #line 305 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(signal.Parent as AST.Bus)));

            #line default
            #line hidden

            #line 305 ""
                    this.Write(".");

            #line default
            #line hidden

            #line 305 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 305 ""
                    this.Write("() != parse_");

            #line default
            #line hidden

            #line 305 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(RS.TypeScope.GetType(signal).Name));

            #line default
            #line hidden

            #line 305 ""
                    this.Write("(token)) {\n        std::stringstream sstm;\n        sstm << \"Error in cycle \" << c" +
                               "ycle << std::endl;\n        sstm << \"Expected value \" << ");

            #line default
            #line hidden

            #line 308 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(typecast));

            #line default
            #line hidden

            #line 308 ""
                    this.Write("parse_");

            #line default
            #line hidden

            #line 308 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(RS.TypeScope.GetType(signal).Name));

            #line default
            #line hidden

            #line 308 ""
                    this.Write("(token) << \", but got \" << ");

            #line default
            #line hidden

            #line 308 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(typecast));

            #line default
            #line hidden

            #line 308 ""
                    this.Write("bus_");

            #line default
            #line hidden

            #line 308 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(signal.Parent as AST.Bus)));

            #line default
            #line hidden

            #line 308 ""
                    this.Write(".");

            #line default
            #line hidden

            #line 308 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 308 ""
                    this.Write("() << \" for field \" << ");

            #line default
            #line hidden

            #line 308 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 308 ""
                    this.Write("_SIGNAL_NAMES[field] << \" (raw: \" << token << \")\" << std::endl;\n        throw Mes" +
                               "sageException(sstm.str());\n    }\n    field++;\n");

            #line default
            #line hidden

            #line 312 ""
                }

            #line default
            #line hidden

            #line 313 ""
            }

            #line default
            #line hidden

            #line 314 ""
            this.Write("}\n\nvoid ");

            #line default
            #line hidden

            #line 316 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 316 ""
            this.Write("::Stop()\n{\n    if (trace_input != NULL) {\n        trace_input->close();\n        d" +
                       "elete trace_input;\n    }\n}\n");

            #line default
            #line hidden
            return(this.GenerationEnvironment.ToString());
        }
Esempio n. 18
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="name">Lobby name (optional)</param>
        /// <param name="gameMode">Game mode (optional)</param>
        /// <param name="isPrivate">Is lobby private (optional)</param>
        /// <param name="minimalUserCount">Minimal user count (optional)</param>
        /// <param name="maximalUserCount">Maximal user count (optional)</param>
        /// <param name="isStartingGameAutomatically">Is satarting game automatically (optional)</param>
        /// <param name="gameModeRules">Game mode rules (optional)</param>
        public ChangeLobbyRulesMessageData(string name = null, string gameMode = null, bool?isPrivate = null, uint?minimalUserCount = null, uint?maximalUserCount = null, bool?isStartingGameAutomatically = null, Dictionary <string, object> gameModeRules = null) : base(Naming.GetMessageTypeNameFromMessageDataType <ChangeLobbyRulesMessageData>())
        {
            string new_name = null;

            if (name != null)
            {
                new_name = name.Trim();
                if ((new_name.Length < Defaults.minimalLobbyNameLength) || (new_name.Length > Defaults.maximalLobbyNameLength))
                {
                    throw new ArgumentException($"Lobby name must be between { Defaults.minimalLobbyNameLength } and { Defaults.maximalLobbyNameLength } characters long.", nameof(name));
                }
            }
            if ((minimalUserCount != null) && (maximalUserCount != null) && (minimalUserCount > maximalUserCount))
            {
                throw new ArgumentException("Minimal user count can't be greater than maximal user count.", nameof(minimalUserCount));
            }
            if ((gameMode != null) && string.IsNullOrWhiteSpace(gameMode))
            {
                throw new ArgumentException("Game mode can't be unknown.", nameof(gameMode));
            }
            if ((gameModeRules != null) && gameModeRules.ContainsValue(null))
            {
                throw new ArgumentException("Game mode rules contains null.", nameof(gameModeRules));
            }
            Name                        = new_name;
            GameMode                    = gameMode;
            IsPrivate                   = isPrivate;
            MinimalUserCount            = minimalUserCount;
            MaximalUserCount            = maximalUserCount;
            IsStartingGameAutomatically = isStartingGameAutomatically;
            GameModeRules               = gameModeRules;
        }
Esempio n. 19
0
        ////////////////////////////////////////////////////////////////////////////////////////
        // Function Parsing
        ////////////////////////////////////////////////////////////////////////////////////////

        /// <inheritdoc />
        public IEnumerable <Function> ReadFunctions(object obj, ProfileConverterOptions opts)
        {
            var doc = obj as XDocument;

            Debug.Assert(doc != null, nameof(doc) + " != null");

            var registry = doc.Element("registry");

            Debug.Assert(registry != null, $"{nameof(registry)} != null");

            var allFunctions = registry
                               .Elements("commands")
                               .Elements("command")
                               .Select(x => TranslateCommand(x, opts))
                               .ToDictionary(x => x.Attribute("name")?.Value, x => x);

            Debug.Assert(allFunctions != null, nameof(allFunctions) + " != null");

            var apis = registry.Elements("feature")
                       .Concat(registry
                               .Elements("extensions")
                               .Elements("extension") ?? throw new InvalidDataException());

            Debug.Assert(apis != null, nameof(apis) + " != null");

            var removals = registry.Elements("feature")
                           .Elements("remove")
                           .Elements("command")
                           .Attributes("name")
                           .Select(x => x.Value)
                           .ToList();

            Debug.Assert(removals != null, nameof(removals) + " != null");

            foreach (var api in apis)
            {
                foreach (var requirement in api.Elements("require"))
                {
                    var apiName = requirement.Attribute("api")?.Value ??
                                  api.Attribute("api")?.Value ??
                                  api.Attribute("supported")?.Value ??
                                  "opencl";
                    var apiVersion = api.Attribute("number") != null
                        ? Version.Parse(api.Attribute("number")?.Value ?? throw new InvalidDataException())
                        : null;

                    foreach (var name in apiName.Split('|'))
                    {
                        foreach (var function in requirement.Elements("command")
                                 .Attributes("name")
                                 .Select(x => x.Value))
                        {
                            var xf = allFunctions[TrimName(function, opts)];

                            var ret = new Function
                            {
                                Attributes = removals.Contains(function)
                                    ? new List <Attribute>
                                {
                                    new Attribute
                                    {
                                        Name      = "System.Obsolete",
                                        Arguments = new List <string>
                                        {
                                            $"\"Deprecated in version {apiVersion?.ToString(2)}\""
                                        }
                                    }
                                }
                                    : new List <Attribute>(),
                                Categories = new List <string> {
                                    ExtensionName(api.Attribute("name")?.Value, opts)
                                },
                                Doc                   = string.Empty,
                                ExtensionName         = api.Name == "feature" ? "Core" : ExtensionName(api.Attribute("name")?.Value, opts),
                                GenericTypeParameters = new List <GenericTypeParameter>(),
                                Name                  = Naming.Translate(NameTrimmer.Trim(TrimName(xf.Attribute("name")?.Value, opts), opts.Prefix), opts.Prefix),
                                NativeName            = function,
                                Parameters            = ParseParameters(xf),
                                ProfileName           = name,
                                ProfileVersion        = apiVersion,
                                ReturnType            = ParseTypeSignature(xf.Element("returns") ?? throw new InvalidDataException())
                            };

                            yield return(ret);

                            allFunctions.Remove(function);
                        }
                    }
                }
            }
        }
Esempio n. 20
0
        public virtual string TransformText()
        {
            this.GenerationEnvironment = null;

            #line 1 ""
            this.Write("");

            #line default
            #line hidden

            #line 6 ""
            this.Write("#include <iostream>\n#include <cstring>\n#include \"");

            #line default
            #line hidden

            #line 8 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusDefinitionsFileName(Network)));

            #line default
            #line hidden

            #line 8 ""
            this.Write("\"\n\n// Insert additional includes here\n// #### USER-DATA-INCLUDE-START\n// #### USE" +
                       "R-DATA-INCLUDE-END\n\n");

            #line default
            #line hidden

            #line 14 ""

            var known = new HashSet <Type>();
            foreach (var bus in Network.Busses)
            {
                if (known.Contains(bus.SourceType))
                {
                    continue;
                }
                known.Add(bus.SourceType);


            #line default
            #line hidden

            #line 21 ""
                this.Write("\n");

            #line default
            #line hidden

            #line 22 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 22 ""
                this.Write("::");

            #line default
            #line hidden

            #line 22 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 22 ""
                this.Write(" () {\n");

            #line default
            #line hidden

            #line 23 ""
                foreach (var signal in bus.Signals)
                {
                    var cpptype = RS.TypeScope.GetType(signal);
                    if (cpptype.IsArray)
                    {
                        var eltype = cpptype.ElementName;

                        string arraylen = string.Empty;

                        if (signal.DefaultValue is SME.AST.ArrayCreateExpression)
                        {
                            arraylen = (signal.DefaultValue as SME.AST.ArrayCreateExpression).ElementExpressions.Length.ToString();
                        }
                        else if (signal.DefaultValue is SME.AST.EmptyArrayCreateExpression)
                        {
                            arraylen = RS.Renderer.RenderExpression((signal.DefaultValue as SME.AST.EmptyArrayCreateExpression).SizeExpression);
                        }
                        else
                        {
                            arraylen = RS.GetArrayLength(signal).DefaultValue.ToString();
                        }


            #line default
            #line hidden

            #line 37 ""
                        this.Write("    \n    size_");

            #line default
            #line hidden

            #line 38 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 38 ""
                        this.Write(" = ");

            #line default
            #line hidden

            #line 38 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(arraylen));

            #line default
            #line hidden

            #line 38 ""
                        this.Write(";\n    valid_");

            #line default
            #line hidden

            #line 39 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 39 ""
                        this.Write(" = new bool[size_");

            #line default
            #line hidden

            #line 39 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 39 ""
                        this.Write("];\n    written_");

            #line default
            #line hidden

            #line 40 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 40 ""
                        this.Write(" = new bool[size_");

            #line default
            #line hidden

            #line 40 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 40 ""
                        this.Write("];\n    staged_");

            #line default
            #line hidden

            #line 41 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 41 ""
                        this.Write(" = new bool[size_");

            #line default
            #line hidden

            #line 41 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 41 ""
                        this.Write("];\n\n    write_");

            #line default
            #line hidden

            #line 43 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 43 ""
                        this.Write(" = new ");

            #line default
            #line hidden

            #line 43 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 43 ""
                        this.Write("[size_");

            #line default
            #line hidden

            #line 43 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 43 ""
                        this.Write("];\n    read_");

            #line default
            #line hidden

            #line 44 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 44 ""
                        this.Write(" = new ");

            #line default
            #line hidden

            #line 44 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 44 ""
                        this.Write("[size_");

            #line default
            #line hidden

            #line 44 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 44 ""
                        this.Write("];\n\n    std::memset(written_");

            #line default
            #line hidden

            #line 46 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 46 ""
                        this.Write(", 0, size_");

            #line default
            #line hidden

            #line 46 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 46 ""
                        this.Write(" * sizeof(bool));\n    std::memset(staged_");

            #line default
            #line hidden

            #line 47 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 47 ""
                        this.Write(", 0, size_");

            #line default
            #line hidden

            #line 47 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 47 ""
                        this.Write(" * sizeof(bool));\n");

            #line default
            #line hidden

            #line 48 ""
                        if (signal.DefaultValue == null)
                        {
            #line default
            #line hidden

            #line 49 ""
                            this.Write("    std::memset(valid_");

            #line default
            #line hidden

            #line 49 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 49 ""
                            this.Write(", 0, size_");

            #line default
            #line hidden

            #line 49 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 49 ""
                            this.Write(" * sizeof(bool));\n");

            #line default
            #line hidden

            #line 50 ""
                        }
                        else
                        {
            #line default
            #line hidden

            #line 51 ""
                            this.Write("    std::memset(valid_");

            #line default
            #line hidden

            #line 51 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 51 ""
                            this.Write(", 1, size_");

            #line default
            #line hidden

            #line 51 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 51 ""
                            this.Write(" * sizeof(bool));\n");

            #line default
            #line hidden

            #line 52 ""
                            if ((signal.DefaultValue is SME.AST.ArrayCreateExpression) || signal.DefaultValue is Array)
                            {
            #line default
            #line hidden

            #line 53 ""
                                this.Write("    ");

            #line default
            #line hidden

            #line 53 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 53 ""
                                this.Write(" orig_");

            #line default
            #line hidden

            #line 53 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 53 ""
                                this.Write("[] = ");

            #line default
            #line hidden

            #line 53 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(RS.Renderer.GetInitializer(signal)));

            #line default
            #line hidden

            #line 53 ""
                                this.Write(";\n    std::memcpy(read_");

            #line default
            #line hidden

            #line 54 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 54 ""
                                this.Write(", orig_");

            #line default
            #line hidden

            #line 54 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 54 ""
                                this.Write(", ");

            #line default
            #line hidden

            #line 54 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(arraylen));

            #line default
            #line hidden

            #line 54 ""
                                this.Write(" * sizeof(");

            #line default
            #line hidden

            #line 54 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 54 ""
                                this.Write("));\n    std::memcpy(write_");

            #line default
            #line hidden

            #line 55 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 55 ""
                                this.Write(", orig_");

            #line default
            #line hidden

            #line 55 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 55 ""
                                this.Write(", ");

            #line default
            #line hidden

            #line 55 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(arraylen));

            #line default
            #line hidden

            #line 55 ""
                                this.Write(" * sizeof(");

            #line default
            #line hidden

            #line 55 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 55 ""
                                this.Write("));\n");

            #line default
            #line hidden

            #line 56 ""
                            }

            #line default
            #line hidden

            #line 57 ""
                        }

            #line default
            #line hidden

            #line 58 ""
                    }
                    else
                    {
            #line default
            #line hidden

            #line 59 ""
                        this.Write("    written_");

            #line default
            #line hidden

            #line 59 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 59 ""
                        this.Write(" = false;\n");

            #line default
            #line hidden

            #line 60 ""
                        if (signal.DefaultValue == null)
                        {
            #line default
            #line hidden

            #line 61 ""
                            this.Write("    valid_");

            #line default
            #line hidden

            #line 61 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 61 ""
                            this.Write(" = false;\n");

            #line default
            #line hidden

            #line 62 ""
                        }

            #line default
            #line hidden

            #line 63 ""
                    }

            #line default
            #line hidden

            #line 64 ""
                }

            #line default
            #line hidden

            #line 65 ""
                this.Write("\n");

            #line default
            #line hidden

            #line 66 ""
                foreach (var signal in bus.Signals.Where(x => x.DefaultValue != null))
                {
                    var cpptype = RS.TypeScope.GetType(signal);
                    var ini     = RS.Renderer.GetInitializer(signal);

                    if (!cpptype.IsArray)
                    {
            #line default
            #line hidden

            #line 71 ""
                        this.Write("    valid_");

            #line default
            #line hidden

            #line 71 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 71 ""
                        this.Write(" = true;\n");

            #line default
            #line hidden

            #line 72 ""
                    }

            #line default
            #line hidden

            #line 73 ""
                    if (!string.IsNullOrWhiteSpace(ini))
                    {
            #line default
            #line hidden

            #line 74 ""
                        this.Write("    read_");

            #line default
            #line hidden

            #line 74 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 74 ""
                        this.Write(" = write_");

            #line default
            #line hidden

            #line 74 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 74 ""
                        this.Write(" = ");

            #line default
            #line hidden

            #line 74 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(RS.Renderer.GetInitializer(signal)));

            #line default
            #line hidden

            #line 74 ""
                        this.Write(";\n");

            #line default
            #line hidden

            #line 75 ""
                    }

            #line default
            #line hidden

            #line 76 ""
                }

            #line default
            #line hidden

            #line 77 ""
                this.Write("}\n\n");

            #line default
            #line hidden

            #line 79 ""
                foreach (var signal in bus.Signals)
                {
                    var cpptype = RS.TypeScope.GetType(signal);
                    if (cpptype.IsArray)
                    {
                        var eltype = cpptype.ElementName;



            #line default
            #line hidden

            #line 85 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 85 ""
                        this.Write(" ");

            #line default
            #line hidden

            #line 85 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 85 ""
                        this.Write("::");

            #line default
            #line hidden

            #line 85 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 85 ""
                        this.Write("(size_t index) const {\n    if (index >= size_");

            #line default
            #line hidden

            #line 86 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 86 ""
                        this.Write(")\n        throw IndexOutOfBoundsException(\"Invalid index: ");

            #line default
            #line hidden

            #line 87 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 87 ""
                        this.Write(".");

            #line default
            #line hidden

            #line 87 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 87 ""
                        this.Write("\");\n    if (!valid_");

            #line default
            #line hidden

            #line 88 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 88 ""
                        this.Write("[index])\n        throw InvalidReadException(\"Invalid read: ");

            #line default
            #line hidden

            #line 89 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 89 ""
                        this.Write(".");

            #line default
            #line hidden

            #line 89 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 89 ""
                        this.Write("\");\n\n    return read_");

            #line default
            #line hidden

            #line 91 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 91 ""
                        this.Write("[index];\n}\n\n");

            #line default
            #line hidden

            #line 94 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 94 ""
                        this.Write(" ");

            #line default
            #line hidden

            #line 94 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 94 ""
                        this.Write("::");

            #line default
            #line hidden

            #line 94 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 94 ""
                        this.Write("(size_t index, ");

            #line default
            #line hidden

            #line 94 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 94 ""
                        this.Write(" value) {\n    if (index >= size_");

            #line default
            #line hidden

            #line 95 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 95 ""
                        this.Write(")\n        throw IndexOutOfBoundsException(\"Invalid index: ");

            #line default
            #line hidden

            #line 96 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 96 ""
                        this.Write(".");

            #line default
            #line hidden

            #line 96 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 96 ""
                        this.Write("\");\n    if (written_");

            #line default
            #line hidden

            #line 97 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 97 ""
                        this.Write("[index])\n        throw InvalidDoubleWriteException(\"Invalid write: ");

            #line default
            #line hidden

            #line 98 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 98 ""
                        this.Write(".");

            #line default
            #line hidden

            #line 98 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 98 ""
                        this.Write("\");\n\n    staged_");

            #line default
            #line hidden

            #line 100 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 100 ""
                        this.Write("[index] = true;\n    return write_");

            #line default
            #line hidden

            #line 101 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 101 ""
                        this.Write("[index] = value;\n}\n");

            #line default
            #line hidden

            #line 103 ""
                    }
                    else
                    {
            #line default
            #line hidden

            #line 104 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(Type(signal)));

            #line default
            #line hidden

            #line 104 ""
                        this.Write(" ");

            #line default
            #line hidden

            #line 104 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 104 ""
                        this.Write("::");

            #line default
            #line hidden

            #line 104 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 104 ""
                        this.Write("() const {\n    if (!valid_");

            #line default
            #line hidden

            #line 105 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 105 ""
                        this.Write(")\n        throw InvalidReadException(\"Invalid read: ");

            #line default
            #line hidden

            #line 106 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 106 ""
                        this.Write(".");

            #line default
            #line hidden

            #line 106 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 106 ""
                        this.Write("\");\n\n    return read_");

            #line default
            #line hidden

            #line 108 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 108 ""
                        this.Write(";\n}\n\n");

            #line default
            #line hidden

            #line 111 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(Type(signal)));

            #line default
            #line hidden

            #line 111 ""
                        this.Write(" ");

            #line default
            #line hidden

            #line 111 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 111 ""
                        this.Write("::");

            #line default
            #line hidden

            #line 111 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 111 ""
                        this.Write("(");

            #line default
            #line hidden

            #line 111 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(Type(signal)));

            #line default
            #line hidden

            #line 111 ""
                        this.Write(" value) {\n    if (written_");

            #line default
            #line hidden

            #line 112 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 112 ""
                        this.Write(")\n        throw InvalidDoubleWriteException(\"Invalid write: ");

            #line default
            #line hidden

            #line 113 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 113 ""
                        this.Write(".");

            #line default
            #line hidden

            #line 113 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 113 ""
                        this.Write("\");\n\n    staged_");

            #line default
            #line hidden

            #line 115 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 115 ""
                        this.Write(" = true;\n    return write_");

            #line default
            #line hidden

            #line 116 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 116 ""
                        this.Write(" = value;\n}\n");

            #line default
            #line hidden

            #line 118 ""
                    }

            #line default
            #line hidden

            #line 119 ""
                }

            #line default
            #line hidden

            #line 120 ""
                this.Write("\nvoid ");

            #line default
            #line hidden

            #line 121 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 121 ""
                this.Write("::forward_signals() {\n    size_t i;\n\n");

            #line default
            #line hidden

            #line 124 ""
                foreach (var signal in bus.Signals)
                {
                    var cpptype = RS.TypeScope.GetType(signal);
                    if (cpptype.IsArray)
                    {
                        var eltype = cpptype.ElementName;


            #line default
            #line hidden

            #line 129 ""
                        this.Write("    for(i = 0; i < size_");

            #line default
            #line hidden

            #line 129 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 129 ""
                        this.Write("; i++) {\n        if (staged_");

            #line default
            #line hidden

            #line 130 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 130 ""
                        this.Write("[i]) {\n            written_");

            #line default
            #line hidden

            #line 131 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 131 ""
                        this.Write("[i] = true;\n            staged_");

            #line default
            #line hidden

            #line 132 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 132 ""
                        this.Write("[i] = false;\n            valid_");

            #line default
            #line hidden

            #line 133 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 133 ""
                        this.Write("[i] = true;\n            read_");

            #line default
            #line hidden

            #line 134 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 134 ""
                        this.Write("[i] = write_");

            #line default
            #line hidden

            #line 134 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 134 ""
                        this.Write("[i];\n        }\n    }\n");

            #line default
            #line hidden

            #line 137 ""
                    }
                    else
                    {
            #line default
            #line hidden

            #line 138 ""
                        this.Write("    if (staged_");

            #line default
            #line hidden

            #line 138 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 138 ""
                        this.Write(") {\n        written_");

            #line default
            #line hidden

            #line 139 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 139 ""
                        this.Write(" = true;\n        staged_");

            #line default
            #line hidden

            #line 140 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 140 ""
                        this.Write(" = false;\n        valid_");

            #line default
            #line hidden

            #line 141 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 141 ""
                        this.Write(" = true;\n        read_");

            #line default
            #line hidden

            #line 142 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 142 ""
                        this.Write(" = write_");

            #line default
            #line hidden

            #line 142 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 142 ""
                        this.Write(";\n    }\n");

            #line default
            #line hidden

            #line 144 ""
                    }

            #line default
            #line hidden

            #line 145 ""
                }

            #line default
            #line hidden

            #line 146 ""
                this.Write("}\n\nvoid ");

            #line default
            #line hidden

            #line 148 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 148 ""
                this.Write("::propagate_signals() {\n    size_t i;\n\n");

            #line default
            #line hidden

            #line 151 ""
                foreach (var signal in bus.Signals)
                {
                    var cpptype = RS.TypeScope.GetType(signal);
                    if (cpptype.IsArray)
                    {
                        var eltype = cpptype.ElementName;

            #line default
            #line hidden

            #line 155 ""
                        this.Write("    for (i = 0; i < size_");

            #line default
            #line hidden

            #line 155 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 155 ""
                        this.Write("; i++) {\n        if (written_");

            #line default
            #line hidden

            #line 156 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 156 ""
                        this.Write("[i]) {\n            written_");

            #line default
            #line hidden

            #line 157 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 157 ""
                        this.Write("[i] = false;\n        }\n    }\n");

            #line default
            #line hidden

            #line 160 ""
                    }
                    else
                    {
            #line default
            #line hidden

            #line 161 ""
                        this.Write("    if (written_");

            #line default
            #line hidden

            #line 161 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 161 ""
                        this.Write(") {\n        written_");

            #line default
            #line hidden

            #line 162 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 162 ""
                        this.Write(" = false;\n    }\n");

            #line default
            #line hidden

            #line 164 ""
                    }

            #line default
            #line hidden

            #line 165 ""
                }

            #line default
            #line hidden

            #line 166 ""
                this.Write("}\n\n");

            #line default
            #line hidden

            #line 168 ""
            }

            #line default
            #line hidden

            #line 169 ""
            this.Write("\n// Insert additional code and classes here\n// #### USER-DATA-EXTRA-START\n// ####" +
                       " USER-DATA-EXTRA-END\n");

            #line default
            #line hidden
            return(this.GenerationEnvironment.ToString());
        }
Esempio n. 21
0
        private Dictionary <string, Struct> ConvertStructs(VulkanSpecification spec, BindTask task)
        {
            var prefix = task.FunctionPrefix;
            var ret    = new Dictionary <string, Struct>();

            foreach (var s in spec.Structures)
            {
                ret.Add
                (
                    s.Name, new Struct
                {
                    Fields = s.Members.Select
                             (
                        x => new Field
                    {
                        Count = string.IsNullOrEmpty(x.ElementCountSymbolic)
                                        ? x.ElementCount != 1 ? new Count(x.ElementCount) : null
                                        : new Count(x.ElementCountSymbolic, false),
                        Name              = Naming.Translate(TrimName(x.Name, task), prefix),
                        Doc               = $"/// <summary>{x.Comment}</summary>",
                        NativeName        = x.Name,
                        NativeType        = x.Type.ToString(),
                        Type              = ConvertType(x.Type),
                        DefaultAssignment =
                            (x.Type.Name == "VkStructureType" || x.Type.Name == "XrStructureType") &&
                            !string.IsNullOrWhiteSpace(x.LegalValues)
                                            ? "StructureType." + TryTrim
                            (
                                Naming.Translate
                                (
                                    TrimName(x.LegalValues.Split(',').FirstOrDefault(), task),
                                    task.FunctionPrefix
                                ),
                                Naming.TranslateLite(TrimName("VkStructureType", task), task.FunctionPrefix)
                            )
                                            : null,
                        NumBits = x.NumBits
                    }.WithFixedFieldFixup09072020()
                             )
                             .ToList(),
                    Name       = Naming.TranslateLite(TrimName(s.Name, task), prefix),
                    NativeName = s.Name
                }
                );
            }

            foreach (var h in spec.Handles)
            {
                ret.Add
                (
                    h.Name, new Struct
                {
                    Fields = new List <Field>
                    {
                        new Field {
                            Name = "Handle", Type = new Type {
                                Name = h.CanBeDispatched ? "nint" : "ulong"
                            }
                        }
                    },
                    Name       = Naming.TranslateLite(TrimName(h.Name, task), prefix),
                    NativeName = h.Name
                }
                );
            }

            foreach (var u in spec.Unions)
            {
                ret.Add(u.Name, new Struct
                {
                    Attributes = new List <Attribute> {
                        new Attribute {
                            Name = "StructLayout", Arguments = new List <string> {
                                "LayoutKind.Explicit"
                            }
                        }
                    },
                    Fields     = GetFields(u, task).ToList(),
                    Name       = Naming.TranslateLite(TrimName(u.Name, task), prefix),
                    NativeName = u.Name
                });
            }

            return(ret);
        }
        public static MappingField GetMappingField(AttributeMetadata attribute, MappingEntity entity)
        {
            var result = new MappingField();

            result.Entity            = entity;
            result.MetadataId        = attribute.MetadataId;
            result.AttributeOf       = attribute.AttributeOf;
            result.IsValidForCreate  = attribute.IsValidForCreate ?? false;
            result.IsValidForRead    = attribute.IsValidForRead ?? false;
            result.IsValidForUpdate  = attribute.IsValidForUpdate ?? false;
            result.IsActivityParty   = attribute.AttributeType == AttributeTypeCode.PartyList;
            result.IsStateCode       = attribute.AttributeType == AttributeTypeCode.State;
            result.DeprecatedVersion = attribute.DeprecatedVersion;
            result.IsDeprecated      = !string.IsNullOrWhiteSpace(attribute.DeprecatedVersion);

            if (attribute is PicklistAttributeMetadata || attribute is StateAttributeMetadata ||
                attribute is StatusAttributeMetadata)
            {
                result.EnumData =
                    MappingEnum.GetMappingEnum(attribute as EnumAttributeMetadata);
            }

            if (attribute is LookupAttributeMetadata)
            {
                var lookup = attribute as LookupAttributeMetadata;

                if (lookup.Targets.Count() == 1)
                {
                    result.LookupSingleType = lookup.Targets[0];
                }
            }

            ParseMinMaxValues(attribute, result);

            if (attribute.AttributeType != null)
            {
                result.FieldType = attribute.AttributeType.Value;
            }

            result.IsPrimaryKey = attribute.IsPrimaryId == true;

            result.LogicalName         = attribute.LogicalName;
            result.SchemaName          = attribute.SchemaName;
            result.DisplayName         = Naming.GetProperVariableName(attribute);
            result.PrivatePropertyName = Naming.GetEntityPropertyPrivateName(attribute.SchemaName);
            result.HybridName          = Naming.GetProperHybridFieldName(result.DisplayName, result.Attribute);

            if (attribute.Description != null)
            {
                if (attribute.Description.UserLocalizedLabel != null)
                {
                    result.Description = attribute.Description.UserLocalizedLabel.Label;
                }
            }

            if (attribute.DisplayName != null)
            {
                if (attribute.DisplayName.LocalizedLabels != null)
                {
                    result.LocalizedLabels = attribute.DisplayName
                                             .LocalizedLabels.Select(label => new LocalizedLabelSerialisable
                    {
                        LanguageCode = label.LanguageCode,
                        Label        = label.Label
                    }).ToArray();
                }

                if (attribute.DisplayName.UserLocalizedLabel != null)
                {
                    result.Label = attribute.DisplayName.UserLocalizedLabel.Label;
                }
            }

            result.IsRequired = attribute.RequiredLevel != null &&
                                attribute.RequiredLevel.Value == AttributeRequiredLevel.ApplicationRequired;

            result.Attribute =
                new CrmPropertyAttribute
            {
                LogicalName = attribute.LogicalName,
                IsLookup    =
                    attribute.AttributeType == AttributeTypeCode.Lookup || attribute.AttributeType == AttributeTypeCode.Customer
            };
            result.TargetTypeForCrmSvcUtil = GetTargetType(result);
            result.FieldTypeString         = result.TargetTypeForCrmSvcUtil;


            return(result);
        }
Esempio n. 23
0
 /// <summary>
 /// Constructs a message informaing a game being started
 /// </summary>
 public GameStartedMessageData() : base(Naming.GetMessageTypeNameFromMessageDataType <GameStartedMessageData>())
 {
     // ...
 }
 /// <summary>
 /// Constructs a list lobbies request message for deserializers
 /// </summary>
 /// <param name="excludeFull">Exclude full lobbies</param>
 /// <param name="name">Lobby name</param>
 /// <param name="gameMode">Game mode</param>
 /// <param name="minimalUserCount">Minimal user count</param>
 /// <param name="maximalUserCount">Maximal user count</param>
 /// <param name="isStartingGameAutomatically">Is starting game automatically</param>
 /// <param name="gameModeRules">Game mode rules</param>
 public ListLobbiesMessageData(bool?excludeFull, string name, string gameMode, uint?minimalUserCount, uint?maximalUserCount, bool?isStartingGameAutomatically, Dictionary <string, object> gameModeRules) : base(Naming.GetMessageTypeNameFromMessageDataType <ListLobbiesMessageData>())
 {
     if ((minimalUserCount != null) && (maximalUserCount != null) && (minimalUserCount > maximalUserCount))
     {
         throw new ArgumentException("Minimal user count can't be greater than maximal user count.", nameof(minimalUserCount));
     }
     if ((gameMode != null) && string.IsNullOrWhiteSpace(gameMode))
     {
         throw new ArgumentException("Game mode can't be unknown.", nameof(gameMode));
     }
     if ((gameModeRules != null) && gameModeRules.ContainsValue(null))
     {
         throw new ArgumentException("Game mode rules contains null.", nameof(gameModeRules));
     }
     ExcludeFull                 = excludeFull;
     Name                        = name;
     MinimalUserCount            = minimalUserCount;
     MaximalUserCount            = maximalUserCount;
     IsStartingGameAutomatically = isStartingGameAutomatically;
     GameMode                    = gameMode;
     GameModeRules               = gameModeRules;
 }
 public static void Register()
 {
     ServiceRuntime.RegisterServiceAsync(Naming.ServiceType <MenuAccess>(), (context) => new MenuAccess(context));
 }
Esempio n. 26
0
        /// <summary>
        /// Constructs a message for creating and joining a new lobby
        /// </summary>
        /// <param name="username">Username</param>
        /// <param name="lobbyName">Lobby name</param>
        /// <param name="gameMode">Game mode</param>
        /// <param name="isPrivate">Is lobby private</param>
        /// <param name="minimalUserCount">Minimal user count</param>
        /// <param name="maximalUserCount">Maximal user count</param>
        /// <param name="isStartingGameAutomatically">Is starting game automatically</param>
        /// <param name="gameModeRules">Game mode rules</param>
        public CreateAndJoinLobbyMessageData(string username, string lobbyName, string gameMode, bool?isPrivate = null, uint?minimalUserCount = null, uint?maximalUserCount = null, bool?isStartingGameAutomatically = null, IReadOnlyDictionary <string, object> gameModeRules = null) : base(Naming.GetMessageTypeNameFromMessageDataType <CreateAndJoinLobbyMessageData>())
        {
            if (username == null)
            {
                throw new ArgumentNullException(nameof(username));
            }
            string new_username = username.Trim();

            if ((new_username.Length < Defaults.minimalUsernameLength) || (new_username.Length > Defaults.maximalUsernameLength))
            {
                throw new ArgumentException($"Username must be between { Defaults.minimalUsernameLength } and { Defaults.maximalUsernameLength } characters long.", nameof(username));
            }
            if (lobbyName == null)
            {
                throw new ArgumentNullException(nameof(lobbyName));
            }
            string new_lobby_name = lobbyName.Trim();

            if ((new_lobby_name.Length < Defaults.minimalLobbyNameLength) || (new_lobby_name.Length > Defaults.maximalLobbyNameLength))
            {
                throw new ArgumentException($"Lobby name must be between { Defaults.minimalLobbyNameLength } and { Defaults.maximalLobbyNameLength } characters long.", nameof(lobbyName));
            }
            if (string.IsNullOrWhiteSpace(gameMode))
            {
                throw new ArgumentNullException(nameof(gameMode));
            }
            if ((minimalUserCount != null) && (maximalUserCount != null) && (minimalUserCount > maximalUserCount))
            {
                throw new ArgumentException("Minimal user count can't be greater than maximal user count.", nameof(minimalUserCount));
            }
            if ((gameModeRules != null) && Protection.IsContained(gameModeRules.Values, (value) => value == null))
            {
                throw new ArgumentException("Game mode rules contains null.", nameof(gameModeRules));
            }
            Username                    = new_username;
            LobbyName                   = new_lobby_name;
            GameMode                    = gameMode;
            IsPrivate                   = isPrivate;
            MinimalUserCount            = minimalUserCount;
            MaximalUserCount            = maximalUserCount;
            IsStartingGameAutomatically = isStartingGameAutomatically;
            if (gameModeRules != null)
            {
                GameModeRules = new Dictionary <string, object>();
                foreach (KeyValuePair <string, object> game_mode_rule in gameModeRules)
                {
                    GameModeRules.Add(game_mode_rule.Key, game_mode_rule.Value);
                }
            }
        }
Esempio n. 27
0
        static Tuple <long, int, int, int> GetReadRange(IEnumerable <ListBlockItem> blockList, long afterVersion, int maxCount)
        {
            const int notSet = -1;

            long offset   = 0;
            long size     = 0;
            var  skipRecs = 0;
            long readRecs = notSet;

            var blockInfos = blockList
                             .Select(i => new { item = i, info = Naming.GetInfo(DecodeName(i.Name)) })
                             .ToArray();

            if (blockInfos.Length == 0)
            {
                return(Tuple.Create(0L, 0, 0, 0));
            }

            foreach (var a in blockInfos)
            {
                if (readRecs == notSet)
                {
                    // start aggregating if we find a block containing records we need
                    var containsAfterVersion = a.info.FirstVersion + a.info.Count - 1 > afterVersion;
                    if (containsAfterVersion)
                    {
                        skipRecs = (int)(afterVersion + 1 - a.info.FirstVersion);
                        readRecs = (int)(a.info.Count - skipRecs);
                        size     = a.item.Size;

                        if (readRecs >= maxCount)
                        {
                            readRecs = maxCount;
                            break;
                        }
                    }
                    else
                    {
                        offset += a.item.Size;
                    }
                }
                else
                {
                    size += a.item.Size;

                    if (readRecs > maxCount - a.info.Count)
                    {
                        // we found maxCount records
                        readRecs = maxCount;
                        break;
                    }
                    readRecs += a.info.Count;
                }
            }

            if (size > int.MaxValue)
            {
                throw new NotSupportedException(string.Format("Reading more than {0} bytes not supported.", int.MaxValue));
            }
            if (readRecs > int.MaxValue)
            {
                throw new NotSupportedException(string.Format("Reading more than {0} records not supported.", int.MaxValue));
            }

            if (readRecs == notSet)
            {
                readRecs = 0;
            }

            return(Tuple.Create(offset, (int)size, skipRecs, (int)readRecs));
        }
Esempio n. 28
0
        public T Create <T>()
        {
            var type      = typeof(T);
            var writer    = new MemorySourceWriter();
            var generator = new DataAccessorGenerator(loader, writer, option);

            generator.Generate(new[] { type });

            if (writer.Source == null)
            {
                throw new AccessorGeneratorException("Create accessor instance failed.");
            }

            Debug.WriteLine("----------");
            Debug.WriteLine(writer.Source);
            Debug.WriteLine("----------");

            var syntax = CSharpSyntaxTree.ParseText(writer.Source);

            var references = new HashSet <Assembly>();

            AddReference(references, typeof(ExecuteEngine).Assembly);
            AddReference(references, type.Assembly);

            var metadataReferences = references
                                     .Select(x => MetadataReference.CreateFromFile(x.Location))
                                     .ToArray();

            var assemblyName = Path.GetRandomFileName();

            var options = new CSharpCompilationOptions(
                OutputKind.DynamicallyLinkedLibrary,
                optimizationLevel: OptimizationLevel.Release);

            var compilation = CSharpCompilation.Create(
                assemblyName,
                new[] { syntax },
                metadataReferences,
                options);

            using (var ms = new MemoryStream())
            {
                var result = compilation.Emit(ms);

                if (!result.Success)
                {
                    throw new AccessorGeneratorException("Create accessor instance failed.");
                }

                ms.Seek(0, SeekOrigin.Begin);
                var assembly = Assembly.Load(ms.ToArray());

                var accessorName  = $"{type.Namespace}.{Naming.MakeAccessorName(type)}";
                var implementType = assembly.GetType(accessorName);
                try
                {
                    return((T)Activator.CreateInstance(implementType, Engine));
                }
                catch (Exception e)
                {
                    throw new AccessorGeneratorException("Create accessor instance failed.", e);
                }
            }
        }
 /// <summary>
 /// Constructs a sendable "name-change" game message
 /// </summary>
 /// <param name="newUsername">New username</param>
 public NameChangeSendGameMessageData(string newUsername) : base(Naming.GetSendGameMessageDataNameInKebabCase <NameChangeSendGameMessageData>(), newUsername)
 {
     // ...
 }
Esempio n. 30
0
 /// <summary>
 /// Constructs an authentification acknowledgment message
 /// </summary>
 /// <param name="guid">User GUID</param>
 /// <param name="token">User token</param>
 public AuthentificationAcknowledgedMessageData(Guid guid, string token) : base(Naming.GetMessageTypeNameFromMessageDataType <AuthentificationAcknowledgedMessageData>())
 {
     if (guid == Guid.Empty)
     {
         throw new ArgumentException("User GUID is empty.", nameof(guid));
     }
     if (string.IsNullOrWhiteSpace(token))
     {
         throw new ArgumentNullException(nameof(token));
     }
     GUID  = guid;
     Token = token;
 }