Esempio n. 1
0
 public RustInstrCreateGen(GeneratorOptions generatorOptions)
 {
     idConverter           = RustIdentifierConverter.Create();
     this.generatorOptions = generatorOptions;
     docWriter             = new RustDocCommentWriter(idConverter);
     gen      = new InstrCreateGenImpl(idConverter, docWriter);
     genNames = GenCreateNameArgs.RustNames;
 }
Esempio n. 2
0
 public RustInstrCreateGen(GeneratorContext generatorContext)
     : base(generatorContext.Types)
 {
     this.generatorContext = generatorContext;
     idConverter           = RustIdentifierConverter.Create();
     docWriter             = new RustDocCommentWriter(idConverter);
     gen      = new InstrCreateGenImpl(genTypes, idConverter, docWriter);
     genNames = GenCreateNameArgs.RustNames;
 }
Esempio n. 3
0
        public static string GetCreateName(StringBuilder sb, CreateMethod method, GenCreateNameArgs genNames)
        {
            if (method.Args.Count == 0 || method.Args[0].Type != MethodArgType.Code)
            {
                throw new InvalidOperationException();
            }

            sb.Clear();
            sb.Append(genNames.CreatePrefix);
            var args = method.Args;

            for (int i = 1; i < args.Count; i++)
            {
                var arg = args[i];
                switch (arg.Type)
                {
                case MethodArgType.Register:
                    sb.Append(genNames.Register);
                    break;

                case MethodArgType.Memory:
                    sb.Append(genNames.Memory);
                    break;

                case MethodArgType.Int32:
                    sb.Append(genNames.Int32);
                    break;

                case MethodArgType.UInt32:
                    sb.Append(genNames.UInt32);
                    break;

                case MethodArgType.Int64:
                    sb.Append(genNames.Int64);
                    break;

                case MethodArgType.UInt64:
                    sb.Append(genNames.UInt64);
                    break;

                case MethodArgType.Code:
                case MethodArgType.RepPrefixKind:
                case MethodArgType.UInt8:
                case MethodArgType.UInt16:
                case MethodArgType.PreferedInt32:
                case MethodArgType.ArrayIndex:
                case MethodArgType.ArrayLength:
                case MethodArgType.ByteArray:
                case MethodArgType.WordArray:
                case MethodArgType.DwordArray:
                case MethodArgType.QwordArray:
                case MethodArgType.ByteSlice:
                case MethodArgType.WordSlice:
                case MethodArgType.DwordSlice:
                case MethodArgType.QwordSlice:
                case MethodArgType.BytePtr:
                case MethodArgType.WordPtr:
                case MethodArgType.DwordPtr:
                case MethodArgType.QwordPtr:
                default:
                    throw new InvalidOperationException();
                }
            }

            return(sb.ToString());
        }
Esempio n. 4
0
 public string GetCreateName(CreateMethod method, GenCreateNameArgs genNames) => GetCreateName(sb, method, genNames);