about summary refs log tree commit diff stats
path: root/cpp/.traces/string-equal-distinct-lengths
blob: dd9eeed0582e5c2027e997aff20f0af31b91a424 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
parse/0: instruction: new
parse/0:   ingredient: {name: "location", value: 0, type: 0, properties: ["location": "type"]}
parse/0:   ingredient: {name: "30", value: 0, type: 0, properties: ["30": "literal"]}
parse/0:   product: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]}
parse/0: instruction: new
parse/0:   ingredient: {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]}
parse/0:   product: {name: "x", value: 0, type: 2-5-4, properties: ["x": "address":"array":"character"]}
parse/0: instruction: new
parse/0:   ingredient: {name: "abcd", value: 0, type: 0, properties: ["abcd": "literal-string"]}
parse/0:   product: {name: "y", value: 0, type: 2-5-4, properties: ["y": "address":"array":"character"]}
parse/0: instruction: string-equal
parse/0:   ingredient: {name: "x", value: 0, type: 2-5-4, properties: ["x": "address":"array":"character"]}
parse/0:   ingredient: {name: "y", value: 0, type: 2-5-4, properties: ["y": "address":"array":"character"]}
parse/0:   product: {name: "3", value: 0, type: 3, properties: ["3": "boolean", "raw": ]}
new/0: location -> 1
new/0: abc -> 0
name/0: assign x 1
new/0: abcd -> 0
name/0: assign y 2
after-brace/0: recipe test-string-equal-distinct-lengths
after-brace/0: new ...
after-brace/0: new ...
after-brace/0: new ...
after-brace/0: string-equal ...
new/0: routine allocated memory from 1000 to 101000
schedule/0: test-string-equal-distinct-lengths
run/0: instruction test-string-equal-distinct-lengths/0
mem/0: array size is 30
mem/0: new alloc: 1000
run/0: instruction test-string-equal-distinct-lengths/1
mem/0: storing 1030 in location 1002
run/0: instruction test-string-equal-distinct-lengths/2
mem/0: storing 1034 in location 1003
run/0: instruction test-string-equal-distinct-lengths/3
mem/0: location 1002 is 1030
mem/0: location 1003 is 1034
run/0: instruction string-equal/0
mem/0: array size is 30
mem/0: new alloc: 1039
run/0: instruction string-equal/1
run/0: product 0 is 1030
mem/0: storing 1030 in location 1041
run/0: instruction string-equal/2
mem/0: location 1041 is 1030
mem/0: storing 3 in location 1042
run/0: instruction string-equal/3
run/0: product 0 is 1034
mem/0: storing 1034 in location 1043
run/0: instruction string-equal/4
mem/0: location 1043 is 1034
mem/0: storing 4 in location 1044
run/0: instruction string-equal/6
string-equal/0: comparing lengths
run/0: instruction string-equal/7
run/0: ingredient 0 is a-len
mem/0: location 1042 is 3
run/0: ingredient 1 is b-len
mem/0: location 1044 is 4
run/0: product 0 is 0
mem/0: storing 0 in location 1045
run/0: instruction string-equal/8
mem/0: location 1045 is 0
run/0: ingredient 0 is 0
run/0: jump-if fell through
run/0: instruction string-equal/9
run/0: result 0 is 0
mem/0: storing 0 in location 3
> 63 64 65 66 67 68 69 70 71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135









                                                                
                                                  











































                                                                                                                                                                                                                                                                                                                                                         



                                                               











                                                                              


                                                                             











                                                                               



                                                 

            


                                                                              




















                                                                                                                                                                              
 





                                             
 



                                                             
 



                                                               
 
                                 
=head1 NAME

rifle - ranger's file opener




=head1 SYNOPSIS

B<rifle> [B<--help>] [B<-f> I<FLAGS>] [B<-l>] [B<-p> I<KEYWORD>]
[B<-w> I<PROGRAM>] [B<-c> I<CONFIG_FILE>] I<files>




=head1 DESCRIPTION

rifle is a powerful file executor that allows for complex file type checking,
written to meet the needs of the file manager I<ranger>.  rifle's strength lies
in automatically determining file types, depending on which programs are
installed on the system, even without any user interaction.




=head1 OPTIONS

=over 14

=item B<-f> I<FLAGS>

Specify flags for opening the files.  Flags are letters that changes how the
program is executed.  Any combination of flags will work.  Writing uppercase
flags will negate the effect of all previously used lowercase flags of the same
letter.

Table of all flags:
 f   fork program to background
 r   run program as root, using sudo
 t   run program in a separate terminal, as specified by $TERMCMD

=item B<-l>

List all possible ways to open the specified files.  Each line will contain information in the format of I<id:label:flags:command>. I<id> is the identification number. I<label> is an arbitrary string that was specified for this command, I<flags> are the flags that are used by default, and I<command> is the command that is going to be executed.

=item B<-p> I<KEYWORD>

Pick a method to open the files.

I<KEYWORD> is either the ID number listed by C<rifle -l> or a string that matches a label in the configuration file.

=item B<-w> I<PROGRAM>

Open the files with the program I<PROGRAM>

=item B<-c> I<CONFIG_FILE>

Read configuration from I<CONFIG_FILE>, instead of the default.

=item B<-h>, B<--help>

Print a list of options and exit.

=back




=head1 FILES

rifle shares configuration files with ranger, though ranger is not required in
order to use rifle. The default configuration file F<rifle.conf> is expected
to be at F<~/.config/ranger/rifle.conf>. However, this can be overridden with
the B<-c> option.

This file specifies patterns for determining the commands to open files with.
The syntax is described in the comments of the default F<rifle.conf> that ships
with ranger.  To obtain it, you need to run: C<ranger --copy-config=rifle>




=head1 ENVIRONMENT

=over 8

=item VISUAL

Determines which editor to use for editing files.

=item EDITOR

Determines which editor to use for editing files if VISUAL is undefined or
empty (in the default F<rifle.conf>). If both are undefined or empty, "vim" is
used instead.

=item PAGER

Determines which pager to use for displaying files (in the default F<rifle.conf>).

=item TERMCMD

Determines the terminal emulator command for use with the I<t> flag.  It is required that the value is the path to an executable file which accepts the "-e COMMAND" argument.

=item XDG_CONFIG_HOME

Specifies the directory for configuration files. Defaults to F<$HOME/.config>.

=back




=head1 EXAMPLES

List all the different methods:

 $ rifle -l helloworld.py
 0:editor::"$EDITOR" -- "$@"
 1:pager::"$PAGER" -- "$@"
 2:::python -- "$1"

Display its content by opening it with "cat":

 $ rifle -w cat helloworld.py
 print("Hello World!")

Run it by picking the method 2, which calls 'python -- "$1"':

 $ rifle -p 2 helloworld.py
 Hello World!

Display the file in a pager inside a new terminal, run as root:

 $ rifle -p 1 -f tr helloworld.py