void GenerateCsCode(CodeStringBuilder stbuilder) { CodeStringBuilder codeBuilder = new CodeStringBuilder(); CodeTypeDeclaration orgDecl = this.OriginalDecl; TypePlan _typeTxInfo = orgDecl.TypePlan; // AddComment(orgDecl.LineComments, codeBuilder); //for cef, if enum class end with flags_t //we add FlagsAttribute to this enum type if (orgDecl.Name.EndsWith("flags_t")) { codeBuilder.AppendLine("[Flags]"); } codeBuilder.AppendLine("public enum " + orgDecl.Name + enum_base + "{"); //transform enum int i = 0; foreach (FieldPlan fieldTx in _typeTxInfo.fields) { if (i > 0) { codeBuilder.AppendLine(","); } i++; CodeFieldDeclaration codeFieldDecl = fieldTx.fieldDecl; // AddComment(codeFieldDecl.LineComments, codeBuilder); // if (codeFieldDecl.InitExpression != null) { string initExpr = codeFieldDecl.InitExpression.ToString(); //cef specific if (initExpr == "UINT_MAX") { codeBuilder.Append(codeFieldDecl.Name + "=uint.MaxValue"); } else { codeBuilder.Append(codeFieldDecl.Name + "=" + codeFieldDecl.InitExpression.ToString()); } } else { codeBuilder.Append(codeFieldDecl.Name); } } codeBuilder.AppendLine("}"); // stbuilder.Append(codeBuilder.ToString()); }
void GenerateCsCode(CefCodeGenOutput output) { CodeStringBuilder csCode = new CodeStringBuilder(); CodeTypeDeclaration typedecl = this.OriginalDecl; //------- csCode.AppendLine("//CefCStructTx::GenerateCsCode, " + (++codeNum)); //------- csCode.AppendLine("[StructLayout(LayoutKind.Sequential)]"); csCode.AppendLine("struct " + typedecl.Name + "{"); int i = 0; foreach (CodeMemberDeclaration mb in typedecl.GetMemberIter()) { if (mb.MemberKind == CodeMemberKind.Field) { //------- csCode.AppendLine("//CefCStructTx::GenerateCsCode-Field, " + (++codeNum)); //------- CodeFieldDeclaration fieldDecl = (CodeFieldDeclaration)mb; // AddComment(fieldDecl.LineComments, csCode); // string fieldTypeName = fieldDecl.FieldType.ToString(); //field type switch (fieldTypeName) { default: { if (fieldTypeName.EndsWith("_t")) { csCode.Append("public " + fieldTypeName); } else { throw new NotSupportedException(); } } break; case "void*": csCode.Append("public IntPtr"); break; case "int": case "float": case "double": csCode.Append("public " + fieldTypeName); break; case "cef_string_t": csCode.Append("public _cef_string_utf16_t"); break; case "size_t": csCode.Append("public int"); break; case "uint32": csCode.Append("public uint"); break; case "char16": csCode.Append("public char"); break; } csCode.AppendLine(" " + fieldDecl.Name + ";"); } i++; } csCode.AppendLine("}"); // output._csCode.Append(csCode.ToString()); }