精华内容
下载资源
问答
  • generate

    2018-06-08 17:06:40
    STL 之generategenerate_n作用:用来生成元素,并将其填充到一个序列中。定义:[cpp] view plain copy #include <algorithm> template <class forwardItr, class function> ...

    STL 之generate和generate_n


    作用:用来生成元素,并将其填充到一个序列中。

    定义:

    1. #include <algorithm>  
    2. template <class forwardItr, class function>  
    3. void generate(forwardItr first, forwardItr last, function gen);  
    4.   
    5. template <class forwardItr, class size, class function>  
    6. void generate_n(forwardItr first, size n, function gen);  

    示例代码:
    1. #include <iostream>  
    2. #include <list>  
    3.   
    4. #include <string>  
    5. #include <numeric>  
    6. #include <iterator>  
    7. #include <vector>  
    8. #include <functional>  
    9.   
    10. #include <algorithm>  
    11.   
    12. using namespace std;  
    13.   
    14. int nextNum() {  
    15.     static int n = 1;  
    16.     return n++;  
    17. }  
    18.   
    19. int main() {  
    20.     // 定义容器和 输出流迭代器  
    21.     vector<int> vecList(8);  
    22.     ostream_iterator<int> screen(cout, " ");  
    23.     // nextNum 是函数指针,其必须是有返回值无参函数  
    24.     generate(vecList.begin(),vecList.end(),nextNum);  
    25.     cout << "vecList :" << endl;  
    26.     copy(vecList.begin(),vecList.end(),screen);  
    27.     cout << endl;  
    28.   
    29.     generate_n(vecList.begin(),3,nextNum);  
    30.     cout << "vecList :" << endl;  
    31.     copy(vecList.begin(),vecList.end(),screen);  
    32.     cout << endl;  
    33.   
    34.     return 0;  
    35. }  

    运行结果:vecList :
    1 2 3 4 5 6 7 8
    vecList :
    9 10 11 4 5 6 7 8
    展开全文
  • go generate

    2020-08-20 21:04:37
    go generate命令是go 1.4版本里面新添加的一个命令,当运行go generate时,它将扫描与当前包相关的源代码文件,找出所有包含"//go:generate"的特殊注释,提取并执行该特殊注释后面的命令,命令为可执行程序,形同...

    go generate命令是go 1.4版本里面新添加的一个命令,当运行go generate时,它将扫描与当前包相关的源代码文件,找出所有包含"//go:generate"的特殊注释,提取并执行该特殊注释后面的命令,命令为可执行程序,形同shell下面执行。

    有几点需要注意:

    • 该特殊注释必须在.go源码文件中。
    • 每个源码文件可以包含多个generate特殊注释时。
    • 显示运行go generate命令时,才会执行特殊注释后面的命令。
    • 命令串行执行的,如果出错,就终止后面的执行。
    • 特殊注释必须以"//go:generate"开头,双斜线后面没有空格。

    应用
    在有些场景下,我们会使用go generate:

    • yacc:从 .y 文件生成 .go 文件。
    • protobufs:从 protocol buffer 定义文件(.proto)生成 .pb.go 文件。
    • Unicode:从 UnicodeData.txt 生成 Unicode 表。
    • HTML:将 HTML 文件嵌入到 go 源码 。
    • bindata:将形如 JPEG 这样的文件转成 go 代码中的字节数组。

    再比如:

    • string方法:为类似枚举常量这样的类型生成String()方法。
    • 宏:为既定的泛型包生成特定的实现,比如用于ints的sort.Ints。

    命令
    go generate命令使用格式如下:

    go generate [-run regexp] [-n] [-v] [-x] [build flags] [file.go... | packages]
    

    其中:

    -run 正则表达式匹配命令行,仅执行匹配的命令
    -v 输出被处理的包名和源文件名
    -n 显示不执行命令
    -x 显示并执行命令
    

    !!! 在使用 go generate 命令时,需要先在文件目录下执行:(go mod init 目录名) 生成 go.mod 文件,才可以执行 go generate命令,否则不能执行该命令。

    执行go generate时,有一些环境变量可以使用:

    $GOARCH:  体系架构 (arm、amd64等待)
    $GOOS: OS环境(linux、windows等)
    $GOFILE: 当前处理中的文件名
    $GOLINE : 当前命令在文件中的行号
    $GOPACKAGE :当前处理文件的包名
    $DOLLAR: 固定的"$",不清楚用途
    

    假设我们有个main.go文件,内容如下:

    package main
    
    import "fmt"
    
    //go:generate echo hello
    //go:generate go run main.go
    //go:generate  echo file=$GOFILE pkg=$GOPACKAGE
    func main() {
        fmt.Println("main func")
    }
    

    在这里插入图片描述

    先执行 (go mod init 目录名 )执行“go generate”后,输出如下:

    $ go generate
    hello
    main func
    file=main.go pkg=main
    

    在这里插入图片描述
    示例
    现在我们来实践一下前面介绍的go generate。

    String()方法
    假设我们有一些代码,里面包含若干定义为Pill的整型常量:

    package painkiller
    
    type Pill int
    
    const (
        Placebo Pill = iota
        Aspirin
        Ibuprofen
        Paracetamol
        Acetaminophen = Paracetamol
    )
    

    为了调试的需要,我们会为这些常量定义String()签名方法:

    func (p Pill) String() string
    

    一般情况下,我们可能会像下面这样写:

    func (p Pill) String() string {
        switch p {
        case Placebo:
            return "Placebo"
        case Aspirin:
            return "Aspirin"
        case Ibuprofen:
            return "Ibuprofen"
        case Paracetamol: // == Acetaminophen
            return "Paracetamol"
        }
        return fmt.Sprintf("Pill(%d)", p)
    }
    

    这里,我们可以用go generate来实现String():

    首先,我这里创建一个painkiller.go文件,包含如下内容:

    //go:generate stringer -type=Pill
    package painkiller
    
    type Pill int
    
    const (
        Placebo Pill = iota
        Aspirin
        Ibuprofen
        Paracetamol
        Acetaminophen = Paracetamol
    )
    

    在文件的开头包含了一个"//go:generate stringer -type=Pill"特殊注释,其中stringer是个生成String方法的工具,为了使用stringer方法,在运行"go generate"命令前,我们需要安装stringer工具,命令如下:

    $ go get golang.org/x/tools/cmd/stringer
    

    然后,在painkiller.go所在的目录下面运行"go generate"命令:(不要忘记在该目录下执行 go mod init painkiller)

    $ go generate
    

    我们会发现当前目录下面生成一个pill_string.go文件,里面实现了我们需要的String()方法,文件内容如下:

    // Code generated by "stringer -type=Pill"; DO NOT EDIT.
    
    package painkiller
    
    import "strconv"
    
    func _() {
    	// An "invalid array index" compiler error signifies that the constant values have changed.
    	// Re-run the stringer command to generate them again.
    	var x [1]struct{}
    	_ = x[Placebo-0]
    	_ = x[Aspirin-1]
    	_ = x[Ibuprofen-2]
    	_ = x[Paracetamol-3]
    }
    
    const _Pill_name = "PlaceboAspirinIbuprofenParacetamol"
    
    var _Pill_index = [...]uint8{0, 7, 14, 23, 34}
    
    func (i Pill) String() string {
    	if i < 0 || i >= Pill(len(_Pill_index)-1) {
    		return "Pill(" + strconv.FormatInt(int64(i), 10) + ")"
    	}
    	return _Pill_name[_Pill_index[i]:_Pill_index[i+1]]
    }
    
    
    展开全文
  • GENERATE VERILOG

    2020-02-18 11:30:35
    引言 在设计中,很多情况下需要编写很多结构相同但是参数不同的赋值语句或者逻辑语句,...generate语句有generate-for,generate-if,generate-case三种语句。 生成实例可以是以下的一个或多个类型: (1)模块;(2...

    引言

    在设计中,很多情况下需要编写很多结构相同但是参数不同的赋值语句或者逻辑语句,如果在参数量很大的的情况下,原本的列举就会显得心有余而力不足。c语言中常用for语句来解决此类问题,verilog则为我们提供了generate语句。

    generate语句有generate-for,generate-if,generate-case三种语句。

    生成实例可以是以下的一个或多个类型:
    (1)模块;(2)用户定义原语;(3)门级语句;(4)连续赋值语句;(5)initial和always块。

    用法

    • 必须使用genvar声明一个正整数变量,用作for循环的判断变量;
    • for循环内部的的语句必须写在begin-end里面;
    • begin-and语句快需要一个命名。

    generate for

    eg
    利用generate_for来复制assign语句

    尤其是当参数化位宽时,input[NUM-1:0],能够实现assign举例不能完成的功能

    module	generate_for(
    	input	[7:0]          		 data_in			       ,
    	output	[1:0]				 t0					,
    	output	[1:0]				 t1					,
    	output	[1:0]				 t2					,
    	output	[1:0]				 t3										
    );
    
    wire		[1:0] 		temp [3:0];	//定义位宽为2,深度为4的temp
    
    genvar	i;								//利用genvar声明正整数变量
    generate for(i=0;i<4;i=i+1)		//复制模块
    	begin : gfor						//begi_end的名字
    		assign temp[i] = data_in[2*i+1:2*i]; 
    	end
    endgenerate
    
    assign t0 = temp[0];//assign temp[0] = data_in[1:0];
    assign t1 = temp[1];//assign temp[1] = data_in[3:2];
    assign t2 = temp[2];//assign temp[2] = data_in[5:4];
    assign t3 = temp[3];//assign temp[3] = data_in[7:6];
    
    endmodule
    
    
    `timescale  1ns/1ps
    
    module  tb;
    reg	[7:0]      		       data_in				;
    wire	[1:0]				 t0					;
    wire	[1:0]				 t1					;
    wire	[1:0]				 t2					;
    wire	[1:0]				 t3					;
    
    initial begin
    		data_in=8'd0;
    		#200;
    		data_in = 8'b1100_0011;
    		#200;
    		data_in = 8'b0011_1100;
    		#300;
    end
    
    generate_for generate_inst(
    	.data_in	(data_in	)			,
    	.t0		(t0		)			,
    	.t1		(t1		)			,
    	.t2		(t2		)			,
    	.t3		(t3		)
    );
    
    endmodule
    
    

    传递的方法:
    1、module_name #( parameter1, parameter2) inst_name( port_map);

    2、module_name #( .parameter_name(para_value), .parameter_name(para_value)) inst_name (port map);

    在这里插入图片描述

    展开全文
  • generate语句允许细化时间(Elaboration-time)的选取或者某些语句的重复。这些语句可以包括模块实例引用的语句、连续赋值语句、always语句、initial语句和门级实例引用语句等。细化时间是指仿真开始前的一个阶段,...

    generate语句允许细化时间(Elaboration-time)的选取或者某些语句的重复。这些语句可以包括模块实例引用的语句、连续赋值语句、always语句、initial语句和门级实例引用语句等。细化时间是指仿真开始前的一个阶段,此时所有的设计模块已经被链接到一起,并完成层次的引用。

    1.generate语法

    定义genvar,作为generate中的循环变量。

    generate语句中定义的for语句,必须要有begin,为后续增加标签做准备。

    begin必须要有名称,也就是必须要有标签,因为标签会作为generate循环的实例名称。

    可以使用在generate语句中的类型主要有:

    ·ü  module(模块)

    ·ü  UDP(用户自定义原语)

    ·ü  门级原语

    ·ü  连续赋值语句

    ·ü  initial或always语句

    基本结构如下:genvar 循环变量名;

    generate

    // generate循环语句

    // generate 条件语句

    // generate 分支语句

    // 嵌套的generate语句

    endgenerate

    下面将就generate常用的几种情况举例说明。

    2. generate-loop循环语句

    3.generate-conditional条件语句

    generate允许对语句进行条件选择,即将条件选择加入到generate中的for循环中,只例化条件成立时对应的语句或者module。

    4.generate-case分支语句

    generate-case分支语句与generate-条件语句类似,只不过将原来的分支语句换做了case语句。

    结论

    genvar与generate是Verilog 2001才有的,功能非常强大,可以配合条件语句、分支语句等做一些有规律的例化或者赋值等操作,对于提高简洁代码很有帮助,同时也减少了人为的影响。

    展开全文
  • mavlink generate

    2019-05-28 14:10:57
    https://mavlink.io/en/getting_started/generate_libraries.html#
  • Generate Parentheses

    2018-11-20 22:09:54
    Generate Parentheses Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses. For example, given n = 3, a solution set is: [ “((()))”, “(()())”, “...
  • GenerateCode.java

    2020-01-09 11:19:18
    Spring Cloud+mybatise + mysql 自动生成代码工具 generateCode
  • Generate Passwords

    2017-09-08 14:53:56
    To prepare for programming contests or coding examinations, the judge sometimes has to generate random passwords for the users. The problem is that there are always some confusing passwords since it ...
  • 基本用途使用censusname的最简单方法是使用generate方法。它根据2000年的姓和名分布生成名称人口普查。它有50/50的机会提供female或 ...2020-12-11已阅读: n次一个简单的python库,用于从当前导入的libs中提取reqs....
  • Verilog generate循环

    2020-05-13 16:29:51
    一:generate Verilog-2001添加了generate循环,允许产生module和primitive的多个实例化,同时也可以产生多个variable,net,task,function,continous assignment,initial和always。在generate语句中可以引入if-...
  • generate key on board

    2020-12-09 02:35:40
    <div><p>I implement PKCS11_generate_key_on_board() and modify PKCS11_generate_key(). in PKCS11_generate_key,first try PKCS11_generate_key_on_board(), if it failed then try RSA_generate_key() and store...
  • generate语句允许细化时间(Elaboration-time)的选取或者某些语句的重复。这些语句可以包括模块实例引用的语句、连续赋值语句、always语句、initial语句和门级实例引用语句等。细化时间是指仿真开始前的一个阶段,...
  • ng generate

    2017-06-01 15:54:00
    在查询如何使用generate时,生成到固定文件夹下。 固定文件夹下好坐分支路由。 https://github.com/angular/angular-cli/issues/3570 答案参考上方。 具体方式就是:在ng generate后直接跟上目录即可。 例子:...
  • python中generate的使用方法发布时间:2020-09-01 10:40:15
  • generate parentthese

    2015-08-02 23:05:02
    Generate Parentheses  Total Accepted: 52516 Total Submissions: 161060My Submissions Question  Solution  Given n pairs of parentheses, write a function to generate all ...
  • codegenerate-1.0.4.jar

    2020-06-12 16:17:31
    codegenerate-1.0.4.jar
  • rails generate

    2014-04-22 16:14:00
    rails generate controller Name [action action] [options] rails g controller demo index rails generate migration table_name quantity:integer rails generate model MondelNameInCamelcase rails generat...
  • codegenerate-3.6.1

    2018-11-22 11:59:16
    codegenerate-3.6.1.jar的源码,下载了最新jd-gui工具反编译的。jeecg框架是最新的3.7,最近做二次开发需要修改自动生成代码。做jeecg二次开发的可以相互探讨交流
  • Generate Paratheses

    2015-06-15 22:59:14
    public class Solution { public List generateParenthesis(int n) { List arrayList = new ArrayList(); generate(arrayList, "", 0, 0, n); return arrayList; } public void
  • Angular ng generate component

    千次阅读 2018-07-15 06:39:26
    https://github.com/angular/angular-cli/wiki/generate-componentng generate componentOverviewng generate component [name] generates a componentOptionsdry-runforceprojectinline-styleinline-templateview-...
  • 详解go generate

    2020-03-28 16:38:32
    我时不时得会在别人的代码中看到"go generate",也大致知道这有什么作用,但是平时写写业务代码,并没有过多关注这方面的知识。今天得闲,稍微研究下。 go generate的用途 go generate常用来自动生成代码,属于...
  • generate random code

    2020-02-16 23:14:21
    产生随机数字和字符共同...generate random code """ import random def generate_code(length=1): all_chars='0123456789abcdefghijklmnopqrstuvwxyzABCEFGHIJKLMNOPQRSTUVWXYZ' last_pos = len(all_chars)-1...
  • Fix generate_np issues

    2021-01-12 05:51:05
    <div><p>This commit fixes generate_np as discussed in bug #150. Calling generate is now the default expected behavior; generate_np is meant as a simple way for people getting started with the code. ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 168,253
精华内容 67,301
关键字:

generate