-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.h
141 lines (94 loc) · 3.54 KB
/
main.h
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
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
136
137
138
139
140
141
#ifndef MAIN_HEADER_FILE
#define MAIN_HEADER_FILE
#include <stdarg.h>
#include <stdio.h>
#include <unistd.h>
#define UNUSED(x) (void)(x)
#define BUFF_SIZE 1024
/* FLAGS */
#define F_MINUS 1
#define F_PLUS 2
#define F_ZERO 4
#define F_HASH 8
#define F_SPACE 16
/* SIZES */
#define S_LONG 2
#define S_SHORT 1
/**
* struct fmt - Parameter Structure
* @fmt: The format.
* @fn: The function related
*/
struct fmt
{
char fmt;
int (*fn)(va_list, char[], int, int, int, int);
};
/**
* typedef struct fmt fmt_t - parameter structure
*
* @fmt: The format.
* @fm_t: The format associated.
*/
typedef struct fmt fmt_t;
int _printf(const char *format, ...);
int handle_print(const char *fmt, int *ind, va_list list, char buffer[],
int flags, int width, int precision, int size);
/****************** FUNCTIONS ******************/
/* Funtions to print chars and strings */
int print_char(va_list types, char buffer[], int flags,
int width, int precision, int size);
int print_string(va_list types, char buffer[], int flags,
int width, int precision, int size);
int print_percent(va_list types, char buffer[], int flags,
int width, int precision, int size);
/* Functions to print numbers */
int print_int(va_list types, char buffer[], int flags,
int width, int precision, int size);
int print_binary(va_list types, char buffer[], int flags,
int width, int precision, int size);
int print_unsigned(va_list types, char buffer[], int flags,
int width, int precision, int size);
int print_octal(va_list types, char buffer[], int flags,
int width, int precision, int size);
int print_hexadecimal(va_list types, char buffer[], int flags,
int width, int precision, int size);
int print_hexa_upper(va_list types, char buffer[], int flags,
int width, int precision, int size);
int print_hexa(va_list types, char map_to[], char buffer[],
int flags, char flag_ch, int width, int precision, int size);
/* Function to print non printable characters */
int print_non_printable(va_list types, char buffer[], int flags,
int width, int precision, int size);
/* Funcion to print memory address */
int print_pointer(va_list types, char buffer[], int flags,
int width, int precision, int size);
/* Funciotns to handle other specifiers */
int get_flags(const char *format, int *i);
int get_width(const char *format, int *i, va_list list);
int get_precision(const char *format, int *i, va_list list);
int get_size(const char *format, int *i);
/*Function to print string in reverse*/
int print_reverse(va_list types, char buffer[], int flags, int width,
int precision, int size);
/*Function to print a string in rot 13*/
int print_rot13string(va_list types, char buffer[], int flags, int width,
int precision, int size);
/* width handler */
int handle_write_char(char c, char buffer[], int flags, int width,
int precision, int size);
int write_number(int is_positive, int ind, char buffer[], int flags,
int width, int precision, int size);
int write_num(int ind, char bff[], int flags, int width, int precision,
int length, char padd, char extra_c);
int write_pointer(char buffer[], int ind, int length, int width, int flags,
char padd, char extra_c, int padd_start);
int write_unsgnd(int is_negative, int ind, char buffer[], int flags, int width,
int precision, int size);
/****************** UTILS ******************/
int is_printable(char);
int append_hexa_code(char, char[], int);
int is_digit(char);
long int convert_size_number(long int num, int size);
long int convert_size_unsgnd(unsigned long int num, int size);
#endif /* MAIN_H */