Example #1
0
        void ParseEnum(Definition.EnumDef enumDef)
        {
            // swigの内部は走査しない
            if (enumDef.IsDefinedBySWIG)
            {
                return;
            }

            foreach (var member in enumDef.Members)
            {
                ParseEnumMember(member);
            }
        }
Example #2
0
        private void OutputEnum(Definition.EnumDef es)
        {
            Summary(es.Summary);
            WriteLine("public enum {0} {{", es.Name);
            IndentDepth++;

            int count = 0;

            foreach (var e in es.Members)
            {
                Summary(e.Summary);
                MakeIndent();
                Res.Append(e.Name);
                if (e.Value != null)
                {
                    var expression = GetExpression(e.Value);
                    var suffix     = string.Empty;
                    if (expression.Contains("swig"))
                    {
                        suffix = ".swigValue()";
                    }

                    if (count != es.Members.Count - 1)
                    {
                        Res.AppendFormat("({0}{1}),\r\n", expression, suffix);
                    }
                    else
                    {
                        Res.AppendFormat("({0}{1});\r\n", expression, suffix);
                    }
                }
                else
                {
                    Res.AppendLine(",");
                }

                count++;
            }

            // 定型文
            var idText = @"
	private final int id;
	
	private {0}(final int id)
	{
		this.id = id;
	}
	
	public int swigValue()
	{
		return id;
	}
	
	public static {0} swigToEnum(int id)
	{
		for ({0} e : values() )
		{
			if (e.swigValue() == id)
			{
				return e;
			}
		}
	
		throw new IllegalArgumentException(""Not found : "" + id);
	}
";

            idText = idText.Replace("{0}", es.Name);

            Res.AppendLine("");
            Res.Append(idText);
            Res.AppendLine("");

            IndentDepth--;
            WriteLine("}}");
        }