Пример #1
0
        private IEnumerable <ElementArray> ProcessTagStructDefinition(ElementArray parent, TagBlockDefinition definition, ref int offset)
        {
            var size = Guerilla.CalculateSizeOfFieldSet(definition.LatestFieldSet.Fields);

            var blockElementArray = new ElementArray()
            {
                Name            = definition.Name,
                ElementSize     = size,
                Address         = offset,
                Parent          = parent,
                MaxElementCount = definition.maximum_element_count,
                Alignment       = definition.LatestFieldSet.Alignment,
            };

            var i = 0;

            ProcessFields(definition.LatestFieldSet.Fields, blockElementArray, ref i, ref offset);
            return(blockElementArray.Children);
        }
Пример #2
0
        private ElementArray ProcessTagBlockDefinition(ElementArray parent, TagBlockDefinition tagBlock, ref int offset, bool inline = false, string group_tag = "")
        {
            var size = Guerilla.CalculateSizeOfFieldSet(tagBlock.LatestFieldSet.Fields);

            var blockElementArray = new ElementArray()
            {
                Name            = tagBlock.Name,
                ElementSize     = size,
                Address         = offset,
                Parent          = parent,
                MaxElementCount = tagBlock.maximum_element_count,
                Alignment       = tagBlock.LatestFieldSet.Alignment,
            };

            var i           = 0;
            int blockOffset = inline ? offset : 0;

            ProcessFields(tagBlock.LatestFieldSet.Fields, blockElementArray, ref i, ref blockOffset);
            if (inline)
            {
                offset = blockOffset;
            }
            return(blockElementArray);
        }