Skip to content

Commit dfe44ab

Browse files
att
1 parent 510a7ac commit dfe44ab

File tree

13 files changed

+220
-20
lines changed

13 files changed

+220
-20
lines changed

src/config/consts.flag_identifiers.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
//silver_chain_scope_start
2+
//DONT MODIFY THIS COMMENT
3+
//this import is computationally generated
4+
//mannaged by SilverChain: https://github.com/OUIsolutions/SilverChain
5+
#include "../imports/imports.macros.h"
6+
//silver_chain_scope_end
17

28

39
const char *CArgvPars_defult_identifiers[] = {"--","-"};

src/docs/basic_flags.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
2+
## Basic Flags
3+
### Geting basic flags
4+
you can get flags from the command lines easly,by specifing the flags list,
5+
and the target index of the flag
6+
7+
```c
8+
9+
#include "src/one.c"
10+
#include <stdio.h>
11+
int main(int argc, char *argv[]){
12+
CArgvParse args = newCArgvParse(argc,argv);
13+
14+
const char* outputs[] = {"output","out","o"};
15+
int total_output_flags = sizeof(outputs)/sizeof(char*);
16+
int flag_index = 0;
17+
const char *output = CArgvParse_get_flag(&args,outputs,total_output_flags,flag_index);
18+
printf("output: %s\n",output);
19+
20+
}
21+
```
22+
if you run:
23+
```bash
24+
./a.out a b --out test
25+
```
26+
the output will be:
27+
```bash
28+
output: test
29+
```
30+
31+
### Getting basic flags size
32+
33+
you can get the size of the flags by using the function `CArgvParse_get_flag_size`
34+
```c
35+
#include "src/one.c"
36+
#include <stdio.h>
37+
38+
int main(int argc, char *argv[]){
39+
CArgvParse args = newCArgvParse(argc,argv);
40+
41+
const char* outputs[] = {"output","out","o"};
42+
int total_output_flags = sizeof(outputs)/sizeof(char*);
43+
int size = CArgvParse_get_flag_size(&args,outputs,total_output_flags);
44+
printf("output flags found: %d\n",size);
45+
46+
}
47+
```
48+
if you run:
49+
```bash
50+
./a.out a b --out test any -o test2
51+
```
52+
the output will be:
53+
```bash
54+
output flags found: 2
55+
```

src/parser/basic/fdeclare.parsser.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
1+
//silver_chain_scope_start
2+
//DONT MODIFY THIS COMMENT
3+
//this import is computationally generated
4+
//mannaged by SilverChain: https://github.com/OUIsolutions/SilverChain
5+
#include "../../imports/imports.types.h"
6+
//silver_chain_scope_end
17

28

39

410

511

6-
CArgvParse newCArgvPars(int argc, char **argv);
12+
CArgvParse newCArgvParse(int argc, char **argv);
713

814
const char *CArgvPars_get_arg(CArgvParse *self,int index);
915

16+
int privateCArgv_parser_get_flag_identifier_start_size(CArgvParse *self,const char *flag,int flag_size);

src/parser/basic/fdefine.parser.c

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
1+
//silver_chain_scope_start
2+
//DONT MODIFY THIS COMMENT
3+
//this import is computationally generated
4+
//mannaged by SilverChain: https://github.com/OUIsolutions/SilverChain
5+
#include "../../imports/imports.fdeclare.h"
6+
//silver_chain_scope_end
17

28

39

410

511

612

7-
CArgvParse newCArgvPars(int argc, char **argv){
13+
CArgvParse newCArgvParse(int argc, char **argv){
814
CArgvParse cArgvPars ={0};
915
cArgvPars.args = argv;
1016
cArgvPars.total_args = argc;
@@ -20,3 +26,20 @@ const char *CArgvPars_get_arg(CArgvParse *self,int index){
2026
}
2127
return C_ARGV_PARSER_NULL;
2228
}
29+
30+
31+
32+
33+
34+
35+
36+
int privateCArgv_parser_get_flag_identifier_start_size(CArgvParse *self,const char *flag,int flag_size){
37+
for(int i = 0; i < self->total_flag_indentifiers; i++){
38+
const char *current_identifier = self->flag_identifiers[i];
39+
int current_identifier_size = privateArgv_parser_string_size(current_identifier);
40+
if(privateArgv_parsser_starts_with(flag,flag_size,current_identifier,current_identifier_size)){
41+
return current_identifier_size;
42+
}
43+
}
44+
return -1;
45+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//silver_chain_scope_start
2+
//DONT MODIFY THIS COMMENT
3+
//this import is computationally generated
4+
//mannaged by SilverChain: https://github.com/OUIsolutions/SilverChain
5+
#include "../../imports/imports.types.h"
6+
//silver_chain_scope_end
7+
8+
9+
int CArgvPars_get_infinity_flag_size(CArgvParse *self,const char **flags,int flags_size);
10+
11+
const char * CArgvPars_get_infinty_flag(CArgvParse *self ,const char **flags,int flags_size, int index);
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
//silver_chain_scope_start
2+
//DONT MODIFY THIS COMMENT
3+
//this import is computationally generated
4+
//mannaged by SilverChain: https://github.com/OUIsolutions/SilverChain
5+
#include "../../imports/imports.fdeclare.h"
6+
//silver_chain_scope_end
7+
8+
9+
int CArgvPars_get_infinity_flag_size(CArgvParse *self,const char **flags,int flags_size){
10+
return 0;
11+
}
12+
13+
14+
const char * CArgvPars_get_infinty_flag(CArgvParse *self ,const char **flags,int flags_size, int index){
15+
int found=0;
16+
int flag_found_index = -1;
17+
c_argv_bool inside_flag = C_ARGV_PARSER_FALSE;
18+
for(int i = 0; i < self->total_args-1; i++){
19+
20+
const char *current_arg = self->args[i];
21+
int current_arg_size = privateArgv_parser_string_size(current_arg);
22+
int identifier_start_size = privateCArgv_parser_get_flag_identifier_start_size(self,current_arg,current_arg_size);
23+
c_argv_bool its_flag = identifier_start_size != -1;
24+
//means its not a flag
25+
if(!its_flag &&!inside_flag){
26+
continue;
27+
}
28+
29+
if(!its_flag &&inside_flag){
30+
if(found == index){
31+
private_CArgvParse_add_used(self,flag_found_index);
32+
private_CArgvParse_add_used(self,i);
33+
const char *next = self->args[i+1];
34+
return next;
35+
}
36+
found++;
37+
continue;
38+
}
39+
40+
41+
42+
const char *formmated_flag_comparaton_flag = current_arg + identifier_start_size;
43+
int formmated_flag_comparaton_flag_size = current_arg_size-identifier_start_size;
44+
45+
for(int j = 0; j < flags_size;j++){
46+
const char *flag = flags[j];
47+
int flag_size = privateArgv_parser_string_size(flag);
48+
49+
c_argv_bool is_the_current_flag = privateArgv_strings_equals(
50+
formmated_flag_comparaton_flag,
51+
formmated_flag_comparaton_flag_size,
52+
flag,
53+
flag_size
54+
);
55+
if(is_the_current_flag){
56+
flag_found_index = i;
57+
inside_flag = C_ARGV_PARSER_TRUE;
58+
break;
59+
}
60+
if(!is_the_current_flag){
61+
inside_flag = C_ARGV_PARSER_FALSE;
62+
flag_found_index = -1;
63+
}
64+
}
65+
66+
}
67+
return C_ARGV_PARSER_NULL;
68+
}
Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
1+
//silver_chain_scope_start
2+
//DONT MODIFY THIS COMMENT
3+
//this import is computationally generated
4+
//mannaged by SilverChain: https://github.com/OUIsolutions/SilverChain
5+
#include "../../imports/imports.types.h"
6+
//silver_chain_scope_end
17

28

39

410

511

6-
int privateCArgv_parser_get_flag_identifier_start_size(CArgvParse *self,const char *flag,int flag_size);
712

8-
int CArgvPars_get_flag_size(CArgvParse *self,const char **flags,int flags_size);
13+
int CArgvParse_get_flag_size(CArgvParse *self,const char **flags,int flags_size);
914

10-
const char * CArgvPars_get_flag(CArgvParse *self ,const char **flags,int flags_size, int index);
15+
const char * CArgvParse_get_flag(CArgvParse *self ,const char **flags,int flags_size, int index);

src/parser/normal_flags/fdefine.parser.c

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,14 @@
1+
//silver_chain_scope_start
2+
//DONT MODIFY THIS COMMENT
3+
//this import is computationally generated
4+
//mannaged by SilverChain: https://github.com/OUIsolutions/SilverChain
5+
#include "../../imports/imports.fdeclare.h"
6+
//silver_chain_scope_end
17

28

39

410

5-
6-
int privateCArgv_parser_get_flag_identifier_start_size(CArgvParse *self,const char *flag,int flag_size){
7-
for(int i = 0; i < self->total_flag_indentifiers; i++){
8-
const char *current_identifier = self->flag_identifiers[i];
9-
int current_identifier_size = privateArgv_parser_string_size(current_identifier);
10-
if(privateArgv_parsser_starts_with(flag,flag_size,current_identifier,current_identifier_size)){
11-
return current_identifier_size;
12-
}
13-
}
14-
return -1;
15-
}
16-
17-
18-
int CArgvPars_get_flag_size(CArgvParse *self,const char **flags,int flags_size){
11+
int CArgvParse_get_flag_size(CArgvParse *self,const char **flags,int flags_size){
1912
int found=0;
2013
for(int i = 0; i < self->total_args-1; i++){
2114

@@ -43,6 +36,7 @@ int CArgvPars_get_flag_size(CArgvParse *self,const char **flags,int flags_size){
4336
);
4437
if(is_the_current_flag){
4538
found++;
39+
break;
4640
}
4741
}
4842

@@ -51,7 +45,7 @@ int CArgvPars_get_flag_size(CArgvParse *self,const char **flags,int flags_size){
5145
}
5246

5347

54-
const char * CArgvPars_get_flag(CArgvParse *self ,const char **flags,int flags_size, int index){
48+
const char * CArgvParse_get_flag(CArgvParse *self ,const char **flags,int flags_size, int index){
5549
int found=0;
5650
for(int i = 0; i < self->total_args-1; i++){
5751

@@ -87,6 +81,7 @@ const char * CArgvPars_get_flag(CArgvParse *self ,const char **flags,int flags_s
8781
return next;
8882
}
8983
found++;
84+
break;
9085
}
9186
}
9287

src/parser/types.parser.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
//silver_chain_scope_start
2+
//DONT MODIFY THIS COMMENT
3+
//this import is computationally generated
4+
//mannaged by SilverChain: https://github.com/OUIsolutions/SilverChain
5+
#include "../imports/imports.consts.h"
6+
//silver_chain_scope_end
17

28

39
typedef struct CArgvParse{

src/parser/unused/fdeclare.unused.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
//silver_chain_scope_start
2+
//DONT MODIFY THIS COMMENT
3+
//this import is computationally generated
4+
//mannaged by SilverChain: https://github.com/OUIsolutions/SilverChain
5+
#include "../../imports/imports.types.h"
6+
//silver_chain_scope_end
17

28

39
c_argv_bool private_CArgvParse_its_used(CArgvParse *self,int index);

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy