标签: codegen

Visual Studio代码生成 - 使用大写类型名称

我更喜欢使用基本类型的实际类型名称而不是相应的关键字,例如String代替string,Int32而不是int等等,因为我喜欢一致的语法高亮和套管 - 也就是说,类型名称的颜色类似于类型名称(浅蓝色)和正确套装(大写第一个字母).

我怎么能告诉VS每当它生成任何代码时(例如当我在接口名称上选择"实现接口"选项,或者自动生成的事件处理程序等等)时,它应该根据我的喜好添加类型名?

c# code-generation visual-studio codegen

5
推荐指数
1
解决办法
259
查看次数

如何将 sympy codegen 与包含已实现函数的表达式一起使用

我正在尝试编译一个包含 UndefinedFunction 的表达式,该函数提供了一个实现。(或者:包含符号的表达式,表示对外部数值函数的调用)

有没有办法做到这一点?使用 autowrap 或 codegen 或者对生成的文件进行一些手动编辑?

以下简单的示例不起作用:

import sympy as sp
import numpy as np
from sympy.abc import *
from sympy.utilities.lambdify import implemented_function
from sympy.utilities.autowrap import autowrap, ufuncify

def g_implementation(a):
    """represents some numerical function"""
    return a*5

# sympy wrapper around the above function
g = implemented_function('g', g_implementation)

# some random expression using the above function
e = (x+g(a))**2+100

# try to compile said expression
f = autowrap(e, backend='cython')
# fails with "undefined reference to `g'"
Run Code Online (Sandbox Code Playgroud)

编辑:

我有几个大的 Sympy …

python sympy codegen

5
推荐指数
1
解决办法
1363
查看次数

是否可以自定义Slick代码生成以使生成的类扩展自定义特性?

我目前正在使用Slick代码生成器(版本3.2.0-M1)来为数据库生成Slick代码。我的许多表都包含相同的列(具有相同的名称和类型),因此我想拥有一些可以以通用方式对这些表执行操作的方法,例如,可以从以下任意一种中选择行的通用方法这些表基于特定的共享字段。

为此,我可以创建一个包含这些共享字段的特征,然后让Slick表类对其进行扩展或混合。理想情况下,我想让代码生成器为我添加extends <trait>或添加with <trait>到这些类中。

我看到code生成器中有一个可重写的方法,但是我想避免不得不直接例如通过正则表达式来弄乱代码。

我没有在网上找到任何东西,也没有在Slick文档中找到任何指向使用代码生成器自定义的简单解决方案的东西,所以我想知道是否有人知道这是否有可能。

scala codegen slick

5
推荐指数
1
解决办法
706
查看次数

如何使Xcode核心数据代码生成的文件可以公开访问

我对新的代码生成功能有些困惑。

在开发过程中,您可以查找项目中存在的所有文件。但是没有codegen。

但是,它运行良好。但这不适合新的面向框架的编程范例。

场景: 我有完全独立的框架数据库。它可以嵌入在应用程序中,也可以不嵌入。这取决于。但是它是完全分开的。

现在,我想使用codegen功能。它描述了自动魔术。它在DerivedData中产生所有Core Data标头,并将核心数据模型开发切换到面向类别的范例(您好,迅捷!)。

好的,一切正常并且可以编译,直到我想公开访问所有文件。显而易见,所有模型文件(如有必要,几乎包含所有其他文件,例如,隐藏实体或抽象实体)都具有公共访问级别。

但是,Xcode找不到用于代码生成文件的模板。

例如,在缺少Map.modulemap文件的情况下,它不起作用。好。

在这种情况下,它看起来像:

framework module DBDatabaseBeaver {  
  umbrella header "DBDatabaseBeaver.h"  
  export *  
  module * { export * }  
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我是对的,则此模块映射文件不会在正确的Xcode CodeGen CoreData目录(DerivedData)中查找。

此外,很难知道这些代码生成标头具有哪个访问级别。

我只有一种设置可以更改某些内容:代码生成中的模块设置。

但是,如果我将其更改为与全局命名空间不同的名称,它会给我和代码生成文件带来麻烦,例如:

// $(DatabaseModelName).h  
#import ".DBDatabaseEntity+CoreDataClass.h"  
#import ".DBDatabaseEntity2+CoreDataClass.h"  
...
Run Code Online (Sandbox Code Playgroud)

看一下这个文件。

  1. 它以某种方式将点放在文件名的开头。

  2. 它依靠而$(DatabaseModelName)不是依靠$(DatabaseModuleName)

  3. 参见2. ModelNameis xcodemodel filenameModuleName是框架目标模块的名称。它使用第一,而不是第二。

有人可以解释场景的解决方案并添加有关所有代码生成功能的注释/(文档链接吗?)?

我认为可以通过修复modulemap文件并为Model中的实体添加正确的模块名称(codegen设置)来解决这种情况。

但是,我不知道应该将哪些路径添加到modulemap来指向代码生成文件。

xcode entity-framework core-data codegen

5
推荐指数
1
解决办法
622
查看次数

OPENAPI/Swagger 代码生成 AdditionnalProperties 扩展了 HashMap:play(jackson) 反序列化失败。

我的问题有点复杂,我会尽量解释清楚。为此,我做了一个简单的项目。

我正在使用Swagger 代码生成器从 swagger 文件生成 Java 类。在 swagger 文件中,定义使用了 additionalnalProperties。

  MyRequestBody:
    type: object
    properties:
      property1:
        type: string
      property2:
        type: string
    additionalProperties:
      type: object
Run Code Online (Sandbox Code Playgroud)

生成的java类:

/*
 * Chatbot api
 * Api for chatbot interface.
 *
 * OpenAPI spec version: 1.0
 * 
 *
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen.git
 * Do not edit the class manually.
 */


package lu.post.models.api.test;

import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonCreator;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.HashMap; …
Run Code Online (Sandbox Code Playgroud)

playback jackson codegen swagger

5
推荐指数
1
解决办法
1671
查看次数

MATLAB到C代码

我正在按照MathWorks指南将MATLAB代码转换为C代码.第一步是进入

%#代码生成

在我想要转换为C代码的每个函数之后,这样做会给我以下代码提示如下.

function lanes=find_lanes(B,h, stats)
% Find the regions that look like lanes
%#codegen

lanes = {};
l=0;
    for k = 1:length(B)
    metric = stats(k).MajorAxisLength/stats(k).MinorAxisLength;
    %testlane(k);
    %end
    %function testlane(k)
        coder.inline('never');
        if metric > 5 & all(B{k}(:,1)>100)
            l=l+1;
            lanes(l,:)=B(k);
        else
            delete(h(k))
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

在花括号周围:

代码生成仅支持"varargin"和"varargout"的单元操作

另一个提示说

代码生成不支持通过索引进行变量"通道"大小增长

其中泳道提到第二次.

该函数的输入参数是:

-是对输出的的bwboundaries图像处理工具箱功能.它是一个P-by-1单元阵列,其中P是对象和孔的数量.单元阵列中的每个单元包含Q-by-2矩阵.矩阵中的每一行包含边界像素的行和列坐标.Q是相应区域的边界像素数.

h - 绘制具有绿色轮廓的对象的边界,同时是大小为1 X长度(B)的矩阵,保持边界的值如下所示:

h(K)=plot(boundary(:,2), boundary(:,1), 'g', 'LineWidth', 2);//boundary(:,1) - Y coordinate, boundary(:,2) - X coordinate.
Run Code Online (Sandbox Code Playgroud)

stats - 使用图像处理工具箱中的regionprops …

c matlab cell-array codegen

4
推荐指数
1
解决办法
1923
查看次数

为什么 gcc 和 clang 为 std::find 生成这么多代码?

我在 godbolt.org 中输入以下代码,并使用 gcc 10.1 和 clang 10 编译它:

#include <algorithm>
#include <vector>

typedef std::vector<int> V;

template<class InputIt, class T>
InputIt myfind(InputIt first, InputIt last, const T& value) {
    for (; first != last; ++first) {
        if (*first == value) {
            return first;
        }
    }
    return last;
}

V::iterator my_find_int(V& v, int i) {
    return myfind(v.begin(), v.end(), i);
}

V::iterator std_find_int(V& v, int i) {
    return std::find(v.begin(), v.end(), i);
}
Run Code Online (Sandbox Code Playgroud)

使用-O3或 with -Os,两个编译器都会生成我所期望的内容my_find_int(gcc 10.1,-Os …

c++ gcc clang codegen

4
推荐指数
1
解决办法
177
查看次数

如何使用SymPy代码生成子程序

我想用SymPy codegen实用程序生成一个Fortran子例程。我可以生成一个Fortran函数而不会出现问题codegen(("f", x*y*z), "f95", "filename")。但是我想生成一个Fortran子例程,以便可以修改输入数组。我怎样才能做到这一点?该文档非常差。

sympy codegen

3
推荐指数
1
解决办法
1122
查看次数

LLVM后端:替换x86后端的间接jmps

我想替换jmp *(eax)代码中的间接指令以mov *(eax),ebx; jmp *ebx获取x86可执行文件.

在实现之前,我想制作LLVM编译器,每次jmp *(eax)通过添加一些打印语句检测到指令时记录输出.

然后我想继续替换间接序列.

从我从谷歌搜索和文章中看到的,我可以通过修改llvm后端中的x86asmprinter来实现这一点.但我不知道该怎么做.任何帮助或阅读将不胜感激.

注意:我的实际要求涉及间接跳转和弹出,但我想从此开始,以便在我深入了解之前了解更多后端.

x86 code-generation llvm codegen

3
推荐指数
1
解决办法
383
查看次数

如何使用可空列编写光滑的表定义?

这个表定义一直有效,直到我意识到具有可为空的列意味着我需要使用 Option[String] 而不仅仅是 String。这是我所做的唯一更改,这就是我的代码现在的样子。

class RespondentTableDef(tag: Tag) extends Table[Respondent](tag, "respondent") {

  def id = column[Long]("id", O.PrimaryKey)
  def uuid = column[String]("uuid")
  def version = column[Long]("version")
  def task = column[Long]("task")
  def firstName = column[Option[String]]("first_name")
  def lastName = column[Option[String]]("last_name")
  def ageGroup = column[Option[String]]("age_group")
  def incomeLevel = column[Option[String]]("income_level")
  def employmentStatus = column[Option[String]]("employment_status")
  def maritalStatus = column[Option[String]]("marital_status")
  def housingStatus = column[Option[String]]("housing_status")
  def educationStatus = column[Option[String]]("education_status")
  def gender = column[Option[String]]("gender")

  override def * =
    (id, uuid, version, task, firstName, lastName, ageGroup, incomeLevel, employmentStatus, maritalStatus, housingStatus, educationStatus, …
Run Code Online (Sandbox Code Playgroud)

scala codegen playframework slick

3
推荐指数
3
解决办法
4504
查看次数

riscv 组装需要帧指针吗?

我正在开发一个项目,需要我从 llvm ir 生成 asm 代码。

当我使用llc直接从.ll文件生成代码时,程序集没有框架指针fp。但是,当我使用 riscv-unknow-elf-gcc 编译.cpp文件时,它确实有一个帧指针。

网上查了一下,发现-fomit-frame-pointer编译时有参数。

我只是认为对于 riscv asm 来说帧指针是不必要的,因为我们实际上知道函数帧的开始和结束。并且使用帧指针来表示堆栈变量与使用堆栈指针没有区别sp

assembly llvm codegen riscv

0
推荐指数
1
解决办法
1097
查看次数