internal override void Parse(ObjWastTranspiler transpiler) { // ex. (func private $test (param i32) (result i32) (local i32) ... ) if (identifier == null && !parseBody) { string name = transpiler.ParseName(); access = OwMemberAccess.Private; if (!string.IsNullOrWhiteSpace(name)) { var tempAccess = transpiler.ParseAccess(name); if (tempAccess == null) { throw new Exception(); } access = tempAccess.Value; } identifier = transpiler.ParseIdentifier(); return; } parseBody = true; }
public OwMethodInfo(OwType declaringType, OwMemberAccess access, string identifier, OwType resultType, OwParameterInfo[] parameters) : base(declaringType, access, identifier) { ResultType = resultType; Parameters = parameters; }
internal override void Parse(ObjWastTranspiler transpiler) { string identifier = null; OwMemberAccess access = OwMemberAccess.Private; OwType type; string name = transpiler.ParseName(); if (string.IsNullOrWhiteSpace(name)) { // ex. (field $test i32) identifier = transpiler.ParseIdentifier(); if (identifier == null) { throw new Exception(); } type = transpiler.ParseType(@struct.Module); } else { // ex. (field i32) // ex. (field private i32) // ex. (field private $test i32) OwMemberAccess?tempAccess = transpiler.ParseAccess(name); if (tempAccess == null) { // ex. (field i32) type = transpiler.ParseType(@struct.Module, name); } else { // ex. (field private i32) // ex. (field private $test i32) access = tempAccess.Value; identifier = transpiler.ParseIdentifier(); type = transpiler.ParseType(@struct.Module); } } @struct.DefineField(access, identifier, type); }
internal void AddMethod(OwMemberAccess access, string identifier, OwType resultType, OwParameterInfo[] parameters) { members.Add(new OwMethodInfo(this, access, identifier, resultType, parameters)); }
internal void AddField(OwMemberAccess access, string identifier, OwType type) { members.Add(new OwFieldInfo(this, access, identifier, type)); }
public OwFieldInfo(OwType declaringType, OwMemberAccess access, string identifier, OwType fieldType) : base(declaringType, access, identifier) { FieldType = fieldType; }
public OwMemberInfo(OwType declaringType, OwMemberAccess access, string identifier) { DeclaringType = declaringType; Access = access; Identifier = identifier; }
internal void DefineMethod(OwMemberAccess access, string identifier, OwType resultType, OwParameterInfo[] parameters) { type.AddMethod(access, identifier, resultType, parameters); }
internal void DefineField(OwMemberAccess access, string identifier, OwType fieldType) { type.AddField(access, identifier, fieldType); }