void CollectImplMethods() { int typeCount = cu.TypeCount; if (typeCount > 0) { } // CodeTypeDeclaration globalTypeDecl = cu.GlobalTypeDecl; if (globalTypeDecl == null) { return; } foreach (CodeMemberDeclaration mb in globalTypeDecl.GetMemberIter()) { switch (mb.MemberKind) { case CodeMemberKind.Type: { CodeTypeDeclaration typedecl = (CodeTypeDeclaration)mb; if (typedecl.Kind == TypeKind.Namespace) { if (firstNamespaceStartAt == 0) { firstNamespaceStartAt = typedecl.StartAtLine; } foreach (CodeMemberDeclaration mb_1 in typedecl.GetMemberIter()) { //check switch (mb_1.MemberKind) { case CodeMemberKind.Method: { methods.Add((CodeMethodDeclaration)mb_1); } break; } } } else { throw new NotSupportedException(); } } break; } } }
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()); }