Doxygen
Toggle main menu visibility
Loading...
Searching...
No Matches
vhdlstring.h
Go to the documentation of this file.
1
#ifndef VHDLSTRING_H
2
#define VHDLSTRING_H
3
4
#include <stdio.h>
5
#include <stdlib.h>
6
#include <string.h>
7
8
#include "
VhdlParser.h
"
9
// super class for VhdlParserTokenManager
10
// is generated in vhdlparser.jj
11
// -option TOKEN_MANAGER_SUPER_CLASS = "TokenParser"
12
// sets the Vhdlparser in vhdljjparser.cpp
13
// tokenManager->setLexParser(vhdlParser);
14
15
namespace
vhdl
{
16
namespace
parser
{
17
class
TokenParser
{
18
public
:
19
VhdlParser
*
parser
=
nullptr
;
20
void
setLexParser
(
VhdlParser
* p)
21
{
22
parser
= p;
23
}
24
};
25
}
26
}
27
28
29
/** @brief Minimal string class with std::string like behavior that fulfills the JavaCC
30
* string requirements.
31
*/
32
33
class
VhdlString
34
{
35
public
:
36
VhdlString
()
37
{
38
init
();
39
}
40
VhdlString
(
const
VhdlString
&other)
41
{
42
m_str
= (
char
*)malloc(other.
m_len
+1);
43
memcpy(
m_str
,other.
m_str
,other.
m_len
);
44
m_len
= other.
m_len
;
45
m_str
[
m_len
]=0;
46
}
47
VhdlString
&
operator=
(
const
VhdlString
&other)
48
{
49
if
(
this
!=&other)
50
{
51
free(
m_str
);
52
m_str
= (
char
*)malloc(other.
m_len
+1);
53
memcpy(
m_str
,other.
m_str
,other.
m_len
);
54
m_len
= other.
m_len
;
55
m_str
[
m_len
]=0;
56
}
57
return
*
this
;
58
}
59
VhdlString
(
const
char
*s)
60
{
61
m_len
= (int)strlen(s);
62
m_str
=(
char
*)malloc(
m_len
+1);
63
memcpy(
m_str
,s,
m_len
+1);
64
}
65
VhdlString
(
const
char
*s,
int
size
)
66
{
67
m_str
= (
char
*)malloc(
size
+1);
68
memcpy(
m_str
,s,
size
);
69
m_str
[
size
]=0;
70
m_len
=
size
;
71
}
72
~VhdlString
()
73
{
74
free(
m_str
);
75
}
76
VhdlString
&
append
(
const
char
*s,
int
size
)
77
{
78
int
oldlen =
m_len
;
79
m_len
+=
size
+1;
80
if
(
m_len
)
81
{
82
m_str
= (
char
*)realloc(
m_str
,
m_len
);
83
memcpy(
m_str
+oldlen,s,
m_len
-oldlen-1);
84
m_str
[
m_len
-1]=0;
85
}
86
return
*
this
;
87
}
88
VhdlString
&
append
(
const
char
*s)
89
{
90
return
append
(s,(
int
)strlen(s));
91
}
92
VhdlString
&
append
(
const
VhdlString
&other)
93
{
94
return
append
(other.
m_str
,other.
m_len
);
95
}
96
VhdlString
substr
(
int
pos=0,
int
len=-1)
97
{
98
return
VhdlString
(
m_str
?
m_str
+pos :
nullptr
, len==-1 ?
m_len
-pos :
m_len
);
99
}
100
int
copy
(
char
*s,
int
len,
int
pos=0)
const
101
{
102
if
(len==0)
return
0;
103
if
(pos>=
m_len
) { s[0]=0;
return
0; }
104
int
r=
m_len
<pos+len ?
m_len
-pos : len;
105
memcpy(s,
m_str
+pos,r);
106
return
r;
107
}
108
const
char
*
c_str
()
const
{
return
m_str
; }
109
const
char
*
data
()
const
{
return
m_str
; }
110
int
size
()
const
{
return
m_len
; }
111
int
length
()
const
{
return
m_len
; }
112
char
&
operator[]
(
int
i) {
return
m_str
[i]; }
113
const
char
&
operator[]
(
int
i)
const
{
return
m_str
[i]; }
114
void
clear
() { free(
m_str
);
init
(); }
115
VhdlString
&
operator+=
(
char
c) {
char
s[2]; s[0]=c; s[1]=0;
return
append
(s); }
116
VhdlString
&
operator+=
(
const
char
*s) {
return
append
(s); }
117
VhdlString
&
operator+=
(
VhdlString
s) {
return
append
(s); }
118
VhdlString
operator+
(
const
char
*s) {
return
append
(s); }
119
120
private
:
121
void
init
() {
m_str
=(
char
*)calloc(1,1);
m_len
=0; }
122
char
*
m_str
;
123
int
m_len
;
124
};
125
126
inline
VhdlString
operator+
(
const
char
*s,
VhdlString
v) {
return
VhdlString
(s).
append
(v); }
127
128
#endif
VhdlParser.h
VhdlString
Minimal string class with std::string like behavior that fulfills the JavaCC string requirements.
Definition
vhdlstring.h:34
VhdlString::length
int length() const
Definition
vhdlstring.h:111
VhdlString::~VhdlString
~VhdlString()
Definition
vhdlstring.h:72
VhdlString::operator=
VhdlString & operator=(const VhdlString &other)
Definition
vhdlstring.h:47
VhdlString::operator+=
VhdlString & operator+=(const char *s)
Definition
vhdlstring.h:116
VhdlString::operator[]
char & operator[](int i)
Definition
vhdlstring.h:112
VhdlString::m_len
int m_len
Definition
vhdlstring.h:123
VhdlString::operator+=
VhdlString & operator+=(VhdlString s)
Definition
vhdlstring.h:117
VhdlString::size
int size() const
Definition
vhdlstring.h:110
VhdlString::clear
void clear()
Definition
vhdlstring.h:114
VhdlString::operator+
VhdlString operator+(const char *s)
Definition
vhdlstring.h:118
VhdlString::append
VhdlString & append(const char *s, int size)
Definition
vhdlstring.h:76
VhdlString::c_str
const char * c_str() const
Definition
vhdlstring.h:108
VhdlString::operator[]
const char & operator[](int i) const
Definition
vhdlstring.h:113
VhdlString::operator+=
VhdlString & operator+=(char c)
Definition
vhdlstring.h:115
VhdlString::append
VhdlString & append(const char *s)
Definition
vhdlstring.h:88
VhdlString::VhdlString
VhdlString(const VhdlString &other)
Definition
vhdlstring.h:40
VhdlString::data
const char * data() const
Definition
vhdlstring.h:109
VhdlString::VhdlString
VhdlString(const char *s, int size)
Definition
vhdlstring.h:65
VhdlString::substr
VhdlString substr(int pos=0, int len=-1)
Definition
vhdlstring.h:96
VhdlString::VhdlString
VhdlString(const char *s)
Definition
vhdlstring.h:59
VhdlString::VhdlString
VhdlString()
Definition
vhdlstring.h:36
VhdlString::append
VhdlString & append(const VhdlString &other)
Definition
vhdlstring.h:92
VhdlString::copy
int copy(char *s, int len, int pos=0) const
Definition
vhdlstring.h:100
VhdlString::init
void init()
Definition
vhdlstring.h:121
VhdlString::m_str
char * m_str
Definition
vhdlstring.h:122
vhdl::parser::TokenParser
Definition
vhdlstring.h:17
vhdl::parser::TokenParser::parser
VhdlParser * parser
Definition
vhdlstring.h:19
vhdl::parser::TokenParser::setLexParser
void setLexParser(VhdlParser *p)
Definition
vhdlstring.h:20
vhdl::parser::VhdlParser
Definition
VhdlParser.h:21
vhdl::parser
Definition
CharStream.h:13
vhdl
Token literal values and constants.
Definition
CharStream.h:12
operator+
VhdlString operator+(const char *s, VhdlString v)
Definition
vhdlstring.h:126
vhdlparser
vhdlstring.h
Generated by
1.17.0