有没有办法使用Codedom生成C#自动属性,或者我可以使用其他一组libreries ?
因为我有一个大项目,我必须为此生成UML.为300个类编写UML是过度的.
那么有什么解决方案可以为我生成图表吗?
PS
我正在使用Netbeans.
有没有人知道一个好的(阅读:免费)Eclipse UML插件,也可以做代码生成?如果没有,有没有人知道任何好的Eclipse UML插件?
编辑:我在Fedora Linux上运行Eclipse IDE
TIA
菜鸟
我有一些运行数百万次的Matlab代码,如本问题所述:Matlab:从循环中重复调用相同的mex函数会产生太多的开销吗?
我正在尝试mex-ify,看看是否有帮助.现在,当我使用Matlab Coder工具从Matlab代码生成代码时,代码通常是合理的,但是这一行Matlab代码(在下面第一行的C++注释中)会产生这种怪异,我不知道为什么.任何帮助理解和降低其复杂性将不胜感激.
对于上下文,d是二维矩阵,s1是行向量.在前面的C++代码中,s1_idx被指定为长度(s1)+ 1,
/* d(:, 1) = 0:length(s1); */
cdiff = s1_idx_0 - 1;
for (nm1d2 = 0; nm1d2 <= cdiff; nm1d2++) {
tmp_data[nm1d2] = nm1d2;
}
ndbl = (int32_T)muDoubleScalarFloor((real_T)s1_sizes[1] + 0.5);
apnd = ndbl;
cdiff = ndbl - s1_sizes[1];
if (muDoubleScalarAbs((real_T)cdiff) < 4.4408920985006262E-16 * (real_T)s1_sizes[1]) {
ndbl++;
apnd = s1_sizes[1];
} else if (cdiff > 0) {
apnd = ndbl - 1;
} else {
ndbl++;
}
if (ndbl > 0) {
b_tmp_data[0] = 0.0;
if …Run Code Online (Sandbox Code Playgroud) 我试图SCons生成多个目标(直接编号未知SConscript).
我有这样的目录:
headers/
Header1.h
Header2.h
Header3.h
Header4.h
meta/
headers_list.txt
Run Code Online (Sandbox Code Playgroud)
现在我想要SConscript读取headers_list.txt,基于其内容选择文件从headers/目录(即它可能只包含Header1和Header3),对于我想要使用某些函数生成源的每一个.
我一直试图用env.Command它来做,但问题是它需要调用者指定目标列表,由于显而易见的原因在调用时不知道env.Command.
我唯一能想到的就是跑步:
for header in parse( headers_file ):
source = mangle_source_name_for_header( header )
env.Command( source, header, generator_action )
Run Code Online (Sandbox Code Playgroud)
但这意味着parse( headers_file )每次调用时我都会运行scons.如果解析成本高昂且文件不经常更改,则可以轻松缓存此步骤.
为实现缓存,我缺少什么SConsc构造/类/技术?
编辑:
看来我的问题类似于SCons目标的构建时间确定,但是没有人工虚拟文件的技术吗?
此外,即使使用临时文件,我也看不出我应该如何将target变量从Command生成可变数量的目标传递给第二个将迭代它们的目标.
编辑2:
这很有希望.
我正在尝试在编译器中优化表达式评估.
算术表达式都是C风格的,它们可能包含变量.我希望尽可能地简化表达式.
例如,(3+100*A*B+100)*3+100可以简化为409+300*A*B.
它主要取决于分配法,联想法和交换法.
我遇到的主要困难是如何结合这些算术规律和传统的堆栈扫描评估算法.
任何人都可以在编译器构建的上下文中分享与此或类似问题相关的经验吗?
我有一种情况,我的代码的一部分是CodeExpressions由用户自己生成的,另一部分是由用户自己生成的(例如:用户只需像往常一样编写代码,然后我会在编译时将其添加到我的程序集中).
是否可以生成包含这两个项目的程序集?警告:这两种方法将包含partial类,因此它们必须位于同一个程序集中.
我想到的另一种方法是将这两种方法转换为字符串表示,然后从该字符串生成程序集,但我怀疑我可以从用户生成的类型中获取源代码(在编译时).
根据这个想法,我可以将CodeExpressions生成的代码写入文本文件并将其与.cs文件结合起来.时间表看起来像这样:
.cs文件的内容.dll从组合源代码中创建一个新的我可以跳过将我生成的CodeDom源写入和读取文本文件的(冗余)步骤,并简单地将其写入内存,当然.事实上,使用预处理T4模板并将这些模板的结果加载到内存中并从该字符串编译程序集可能最简单.
正如你所看到的,这是非常混乱的,但现在它看起来是最可行的.我是否看过任何可能使这更容易的选项?
背景:
我正在创建一个库,该库将创建一个包含用户定义的类的程序集.这种方式的工作方式如下:
TinyTypeSetup实例我现在想要添加的是用户可以创建自己的源文件并立即将这些文件添加到生成的程序集中.这将允许用户使用他自己的方法指定部分类,除了我自己生成的那些.
我正在看这个主题:https://groups.google.com/a/dartlang.org/forum/#!topic / misc/pv-Uaq8FGI,但仍无法找到我希望在客户端上拥有的解决方案方(也可能在服务器上).
我想应该有一种方法为数据结构提供标准格式,在JS land中表示为JSON对象(例如json schema或yaml或者其他),可以用作生成包含fromJSON构造函数的Dart类的输入. toJSON方法(可能对数据范围进行一些检查),如果需要通过线路传输的数据需要额外的逻辑,开发人员可以扩展.
如果可能的话我不想使用镜像,而是应该静态生成类(即运行工具 - >获取类以匹配最新的模式/输入).
你能指出我正确的方向吗?
谢谢.
我试图通过编写规则来执行生成器来为我的bazel构建添加代码生成器,但我坚持将生成的头文件作为包含路径依赖添加到我正在尝试构建的库中.
该规则如下所示:
def _impl(ctx):
output = ctx.outputs.out
input = ctx.attr.defs
md_dir = list(ctx.attr.md_dir.files)[0]
print("generating", output.path)
ctx.action(
outputs=[output],
progress_message="Generating %s" % md_dir,
command="python codegen.py -md_dir %s %s -o %s" % (md_dir.path, input, output.path)
)
code_generate = rule(
implementation=_impl,
attrs={
"defs": attr.string(),
"md_dir": attr.label(allow_files=True, single_file=True),
"out": attr.output()
},
)
Run Code Online (Sandbox Code Playgroud)
和BUILD文件是这样的:
load("/common/code_generate", "code_generate")
code_generate(
name="generate_header_defs",
defs="common/header_definition_file",
md_dir="header_defs",
out="gen_header.h",
)
cc_library(
name="lnt",
hdrs=glob(["*.h"]),
srcs=["source.c":gen_header.h"],
visibility=["//visibility:public"],
deps=["@dep1//:x", "@dep2//:y", "@dep3//:z"],
)
Run Code Online (Sandbox Code Playgroud)
代码生成工作并将代码写入bazel-out/local-fastbuild/bin/common/gen_header.h但gcc命令行不会将生成的头文件的include路径添加到导致错误的内容:gen_header.h:否这样的文件或目录
I am modifying an existing class using internal sun APIs (com.sun.tools.javac) with an annotation processor. I am able to generate and add a MethodDecl to a ClassDecl using the following code:
JCTree.JCClassDecl classDecl = ...
JCTree.JCMethodDecl methodDecl = ...
JCTree[] trees = new JCTree[classDecl.defs.length() + 1];
trees[classDecl.defs.length()] = methodDecl;
classDecl.defs = List.from(trees);
Run Code Online (Sandbox Code Playgroud)
This works fine until I try to add parameters to the method declaration. I use the following code to generate a new MethodDecl:
Map<String, Class<?>> …Run Code Online (Sandbox Code Playgroud)