return true;
if (!as_generator(
- scope_tab << "System.Threading.Tasks.Task<Eina.Value> " << name_helpers::managed_async_method_name(f) << "(" << *(parameter << ",") <<
- " System.Threading.CancellationToken token = default(System.Threading.CancellationToken));\n"
+ scope_tab << "/// <summary>Async wrapper for <see cref=\"" << name_helpers::managed_method_name(f) << "\" />.</summary>\n"
+ ).generate(sink, attributes::unused, context))
+ return false;
+
+ // generate_parameter is not a proper as_generator-compatible generator, so we had to do an old fashioned loop
+ for (auto&& param : f.parameters)
+ if (!documentation(1).generate_parameter(sink, param, context))
+ return false;
+
+ if (!as_generator(
+ scope_tab << "/// <param name=\"token\">Token to notify the async operation of external request to cancel.</param>\n"
+ << scope_tab << "/// <returns>An async task wrapping the result of the operation.</returns>\n"
+ << scope_tab << "System.Threading.Tasks.Task<Eina.Value> " << name_helpers::managed_async_method_name(f) << "(" << *(parameter << ",") <<
+ " System.Threading.CancellationToken token = default(System.Threading.CancellationToken));\n\n"
).generate(sink, f.parameters, context))
return false;
std::transform(f.parameters.begin(), f.parameters.end(), std::back_inserter(param_forwarding), parameter_forwarding);
+ if (!as_generator(
+ scope_tab << "/// <summary>Async wrapper for <see cref=\"" << name_helpers::managed_method_name(f) << "\" />.</summary>\n"
+ ).generate(sink, attributes::unused, context))
+ return false;
+
+ // generate_parameter is not a proper as_generator-compatible generator, so we had to do an old fashioned loop
+ for (auto&& param : f.parameters)
+ if (!documentation(1).generate_parameter(sink, param, context))
+ return false;
+
if(!as_generator(
- scope_tab << "public System.Threading.Tasks.Task<Eina.Value> " << name_helpers::managed_async_method_name(f) << "(" << *(parameter << ",") << " System.Threading.CancellationToken token = default(System.Threading.CancellationToken))\n"
+ scope_tab << "/// <param name=\"token\">Token to notify the async operation of external request to cancel.</param>\n"
+ << scope_tab << "/// <returns>An async task wrapping the result of the operation.</returns>\n"
+ << scope_tab << "public System.Threading.Tasks.Task<Eina.Value> " << name_helpers::managed_async_method_name(f) << "(" << *(parameter << ",") << " System.Threading.CancellationToken token = default(System.Threading.CancellationToken))\n"
<< scope_tab << "{\n"
<< scope_tab << scope_tab << "Eina.Future future = " << name_helpers::managed_method_name(f) << "(" << (string % ",") << ");\n"
<< scope_tab << scope_tab << "return Efl.Eo.Globals.WrapAsync(future, token);\n"
- << scope_tab << "}\n"
+ << scope_tab << "}\n\n"
).generate(sink, std::make_tuple(f.parameters, param_forwarding), context))
return false;
return true;
// Native method definitions
if(!as_generator(
- indent << scope_tab << "#pragma warning disable CA1707, SA1300, SA1600\n\n"
+ indent << scope_tab << "#pragma warning disable CA1707, CS1591, SA1300, SA1600\n\n"
<< *(native_function_definition(cls))
- << indent << scope_tab << "#pragma warning restore CA1707, SA1300, SA1600\n\n")
+ << indent << scope_tab << "#pragma warning restore CA1707, CS1591, SA1300, SA1600\n\n")
.generate(sink, implementable_methods, change_indentation(indent.inc(), inative_cxt))) return false;
if(!as_generator("}\n").generate(sink, attributes::unused, inative_cxt)) return false;
return true;
if (cls.get_all_events().size() > 0)
- if (!as_generator(scope_tab << visibility << "Dictionary<(IntPtr desc, object evtDelegate), (IntPtr evtCallerPtr, Efl.EventCb evtCaller)> eoEvents = new Dictionary<(IntPtr desc, object evtDelegate), (IntPtr evtCallerPtr, Efl.EventCb evtCaller)>();\n"
- << scope_tab << visibility << "readonly object eventLock = new object();\n")
+ if (!as_generator(
+ scope_tab << "/// <summary>Internal usage by derived classes to track native events.</summary>\n"
+ << scope_tab << visibility << "Dictionary<(IntPtr desc, object evtDelegate), (IntPtr evtCallerPtr, Efl.EventCb evtCaller)> eoEvents = new Dictionary<(IntPtr desc, object evtDelegate), (IntPtr evtCallerPtr, Efl.EventCb evtCaller)>();\n"
+ << scope_tab << "/// <summary>Internal usage by derived classes to lock native event handlers.</summary>\n"
+ << scope_tab << visibility << "readonly object eventLock = new object();\n")
.generate(sink, attributes::unused, context))
return false;
if (is_inherit)
{
if (!as_generator(
- scope_tab << "protected bool inherited;\n"
+ scope_tab << "/// <summary>Internal usage to detect whether this instance is from a generated class or not.</summary>\n"
+ << scope_tab << "protected bool inherited;\n"
).generate(sink, attributes::unused, context))
return false;
}
auto const& indent = current_indentation(context);
if (!as_generator
(
- indent << "///<summary>Internal wrapper for struct " << string << ".</summary>\n"
+ indent << "#pragma warning disable CS1591\n\n"
+ << indent << "///<summary>Internal wrapper for struct " << string << ".</summary>\n"
<< indent << "[StructLayout(LayoutKind.Sequential)]\n"
<< indent << "public struct " << string << "\n"
<< indent << "{\n"
return false;
// close internal class
- if(!as_generator(indent << "}\n\n").generate(sink, attributes::unused, context)) return false;
+ if(!as_generator(indent << "}\n\n"
+ << indent << "#pragma warning restore CS1591\n\n"
+ ).generate(sink, attributes::unused, context)) return false;
return true;
}
}
if(!as_generator(
- indent << scope_tab << "public static implicit operator " << struct_name << "(IntPtr ptr)\n"
+ indent << scope_tab << "///<summary>Implicit conversion to the managed representation from a native pointer.</summary>\n"
+ << indent << scope_tab << "///<param name=\"ptr\">Native pointer to be converted.</param>\n"
+ << indent << scope_tab << "public static implicit operator " << struct_name << "(IntPtr ptr)\n"
<< indent << scope_tab << "{\n"
<< indent << scope_tab << scope_tab << "var tmp = (" << struct_name << ".NativeStruct)Marshal.PtrToStructure(ptr, typeof(" << struct_name << ".NativeStruct));\n"
<< indent << scope_tab << scope_tab << "return tmp;\n"
}
// declare variable
- if (!as_generator(scope_tab(1)
+ if (!as_generator(documentation(1)
+ << scope_tab(1)
<< "public static readonly " << type
<< " " << utils::remove_all(constant.name, '_')
<< " = " << literal << ";\n")
- .generate(sink, constant.base_type, context))
+ .generate(sink, std::make_tuple(constant, constant.base_type), context))
return false;
// FIXME missing documentation generator