void ParseEnum(Definition.EnumDef enumDef) { // swigの内部は走査しない if (enumDef.IsDefinedBySWIG) { return; } foreach (var member in enumDef.Members) { ParseEnumMember(member); } }
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("}}"); }