标签: code-generation

从NHibernate映射生成数据库模式

是否可以从Nhibernate映射DLL生成数据库模式?

我的要求是MySQL.如果是这样,我该怎么做?有没有这方面的工具/脚本?开源/免费工具?
另外,我可以使用这些工具将数据集插入/更新到数据库吗?

.net database nhibernate code-generation

11
推荐指数
1
解决办法
1万
查看次数

MATLAB代码生成如何使用嵌套分支推断输出大小

当使用MATLAB Coder生成C代码时,当if在另一个if或其else部分的主体中发生时,行为是不同的.以下情况很容易创建输出大小为5x5的C代码:

function y = foo1(u)
if u > 0
    y = zeros(2,2);
else
    y = zeros(5,5);
end
Run Code Online (Sandbox Code Playgroud)

现在这个也适用

function y = foo2(u,v)
if u > 0
    y = zeros(2,2);
else
    y = zeros(5,5);
    if v > 0
        y = 2 * y;
    end
end
Run Code Online (Sandbox Code Playgroud)

但是这个无法生成代码,抱怨大小不匹配:

function y = foo3(u,v)
if u > 0
    y = zeros(2,2);
    if v > 0
        y = 2 * y;
    end
else
    y = zeros(5,5);
end
Run Code Online (Sandbox Code Playgroud)

这是命令行中的输出:

>> …
Run Code Online (Sandbox Code Playgroud)

matlab code-generation matlab-coder

11
推荐指数
1
解决办法
741
查看次数

你使用代码生成工具吗?

您是否使用代码生成工具(除了那些用于生成代理的工具和内置于visual studio的设计器)?

您生成的应用程序的哪些部分?

你经常推自己的发电机吗?如果是这样,你会写什么类型的生成器(asp模板,代码等).如果没有,你使用什么第三方工具?

我目前正在开发一些不同的项目,它们都使用自定义代码生成器来处理从生成数据库结构,业务实体,DAL和BLL的所有内容.我很好奇其他人的经历是用这些工具.

.net code-generation visual-studio

10
推荐指数
5
解决办法
4491
查看次数

C#CodeDom自动属性

我有一个用CodeDom创建的属性.如何将其设置为自动属性而不是为私有成员添加CodeFieldReferenceExpressions?

c# code-generation codedom

10
推荐指数
2
解决办法
3770
查看次数

在C#中为运行时的接口创建一个类

我正在考虑使用一组对象,假设此时有3个对象存活,它们都实现了一个公共接口,然后将这些对象包装在第四个对象中,同时实现相同的接口.

第四个对象的方法和属性的实现将简单地调用这3个底层对象上的相关位.我知道这里会出现这样的情况,这样做是没有意义的,但这是针对服务多播架构的,因此已经有了一套很好的限制.

我的问题是从哪里开始.第四个对象的生成应该在运行时在内存中完成,所以我在想Reflection.Emit,不幸的是我没有足够的经验来知道从哪里开始.

我是否必须构建内存中的程序集?它看起来确实如此,但我只想快速指向我应该从哪里开始.

基本上我正在寻找一个接口,以及一个实现该接口的对象实例列表,并构建一个新对象,同时实现该接口,该接口应该"多播"所有方法调用和对所有底层对象的属性访问,at尽可能少.异常会有很多问题,但是当我到达它们时我会解决这些问题.

这适用于面向服务的体系结构,我希望现有的代码(例如,记录器服务)现在可以访问多个记录器服务,而无需更改使用服务的代码.相反,我想运行时生成一个logger-service-wrapper,它在内部简单地调用多个底层对象上的相关方法.

这适用于.NET 3.5和C#.

c# code-generation reflection.emit multicast

10
推荐指数
2
解决办法
8012
查看次数

如何在使用Attribute装饰的方法中注入/生成管道代码?

我正在阅读有关缓存和记忆的一些文章,以及如何使用委托和泛型轻松实现它.语法非常简单,实现起来非常简单,但我觉得由于重复性,应该可以基于属性生成代码,而不必反复编写相同的管道代码.

假设我们从默认示例开始:

class Foo
{
  public int Fibonacci(int n)
  {
    return n > 1 ? Fibonacci(n-1) + Fibonacci(n-2) : n;
  }
}
Run Code Online (Sandbox Code Playgroud)

然后记住这个:

// Let's say we have a utility class somewhere with the following extension method:
// public static Func<TResult> Memoize<TResult>(this Func<TResult> f)

class Foo
{
  public Func<int,int> Fibonacci = fib;

  public Foo()
  {
    Fibonacci = Fibonacci.Memoize();
  }

  public int fib(int n)
  {
    return n > 1 ? Fibonacci(n-1) + Fibonacci(n-2) : n;
  }
}
Run Code Online (Sandbox Code Playgroud)

我想,一旦找到一个匹配其中一个Memoize扩展方法的标记方法,那么只需要创建一个代码生成器就可以更简单.因此,我可以添加一个属性,而不是编写这个管道代码:

class Foo
{ …
Run Code Online (Sandbox Code Playgroud)

c# attributes code-generation postsharp syntactic-sugar

10
推荐指数
1
解决办法
2199
查看次数

将Java对象序列化为Java代码?

是否有将Java对象序列化为Java代码的实现?例如,如果我有对象

Map<String,Integer> m = new Map<String,Integer>();
m.put("foo",new Integer(21));
Run Code Online (Sandbox Code Playgroud)

我可以使用它来序列化

ObjectOutputStream out = new ObjectOutputStream( ... );
out.writeObject( m );
out.flush();
Run Code Online (Sandbox Code Playgroud)

例如,输出就是

java.util.Map<String,Integer> m = new java.util.Map<String,Integer>(); 
m.put("foo",new Integer(21));
Run Code Online (Sandbox Code Playgroud)

你为什么要这个?有时,以编程方式部分创建复杂对象更容易,然后在代码中手动完成创建.然后可以将此代码包含在源代码中,并使用其他所有内容控制版本.请注意,使用外部序列化对象不是例外.

谢谢你提供的所有帮助.

java serialization code-generation

10
推荐指数
1
解决办法
1390
查看次数

UML到Java代码生成工具

我最近一直在寻找一种从UML图生成Java代码的工具.我已经看过Papyrus和Omondo的Eclipse了.我遇到的问题是在许多加载了JPA和JAXB类的项目中需要该工具.这使得Omondo和Papyrus都变得简短,因为注释和吸气/定位器非常重要.我正在寻找的是一个能够维护这些项目的图形类图的工具,如UML图,然后根据需要将其转换为Java代码.

我正在寻找的是一个可靠的类图 - > Java代码工具,最好是基于UML的,它支持(尽可能多)以下内容:

  • Java原语(和包装器)
  • 方法和属性的注释
  • 在类图中引用Java核心类
  • 简单的getter/setter方法生成
  • 直接在定义的方法中编码

如果有人知道一个工具(它不一定是UML类图),我非常想知道它.

java uml code-generation class-diagram

10
推荐指数
1
解决办法
2万
查看次数

为什么在大括号初始化中允许参数列表中不允许使用额外的逗号?

跟进我的一个老问题(在大括号初始化结束时是否与额外的","有任何关联?)

是否有任何技术原因导致函数声明和函数调用中的参数列表没有像大括号初始化一样对代码生成友好?

我的意思是:

这没关系,额外,被忽略了:

int generated_array[] = {
  1,
  2,
  3,
};
Run Code Online (Sandbox Code Playgroud)

为了保持一致性,允许这样做也没有意义吗?

int someFunc(
  int v1,
  int v2,
  int v3,
){...}

int ret_val = someFunc(
  1,
  2,
  3,
);
Run Code Online (Sandbox Code Playgroud)

我看不出它会如何使编译变得更复杂,但也许有些东西我没想到.我猜它实际上会略微简化它.

当然,人们可以争辩说它没有大括号初始化那么有用,但是如果允许的话,应该有代码生成至少要简单一点的情况.

c c++ code-generation

10
推荐指数
2
解决办法
1845
查看次数

`nodcept`函数中的`std :: terminate`调用,可见性有限 - gcc vs clang codegen

请考虑以下代码段:

void f();

void a()          { f(); }
void b() noexcept { f(); }
Run Code Online (Sandbox Code Playgroud)

在上面的场景f中,当前转换单元中的编译器看不到正文.因此,由于b已标记noexcept,因此必须在调用方生成其他代码,以确保捕获并std::terminate调用异常.

这就是clang++ -Ofast -std=c++2a做(主干版本):

a(): # @a()
  jmp f() # TAILCALL
b(): # @b()
  push rax
  call f()
  pop rax
  ret
  mov rdi, rax
  call __clang_call_terminate
__clang_call_terminate: # @__clang_call_terminate
  push rax
  call __cxa_begin_catch
  call std::terminate()
Run Code Online (Sandbox Code Playgroud)

但是,g++ -Ofast -std=c++2a不(主干版):

a():
  jmp f()
b():
  jmp f()
Run Code Online (Sandbox Code Playgroud)

godbolt.org上的实例


怎么g++逃避这个?不应该在调用方生成代码,因为主体f不可见? …

c++ code-generation exception noexcept c++11

10
推荐指数
1
解决办法
197
查看次数