15 parse(in, permissive);
20 parse(in, permissive);
25 return parse(in.data(), permissive);
47 const char* a_del,
const char* s_trim,
50 std::string input(in);
51 size_t input_end = input.size() - 1;
54 ACE_UNUSED_ARG(push_back);
64 size_t st_end = input.find_first_of(s_del);
67 while (st_begin != std::string::npos) {
68 std::string st = input.substr(
70 (st_end == std::string::npos ? input_end + 1 : st_end) - st_begin);
74 size_t st_begin_clean = st.find_first_not_of(s_trim);
75 size_t st_end_clean = st.find_last_not_of(s_trim);
78 if (st_begin_clean != std::string::npos &&
79 st_end_clean != std::string::npos) {
80 std::string st_clean =
81 st.substr(st_begin_clean, st_end_clean - st_begin_clean + 1);
85 size_t nt_end = st_clean.find_first_of(a_del);
88 if (nt_end != std::string::npos) {
91 std::string nt = st_clean.substr(nt_begin, nt_end - nt_begin + 1);
93 size_t nt_begin_clean = nt.find_first_not_of(a_trim);
94 size_t nt_end_clean = nt.find_last_not_of(a_trim);
97 if (nt_begin_clean != std::string::npos &&
98 nt_end_clean != std::string::npos) {
99 std::string nt_clean =
100 nt.substr(nt_begin_clean, nt_end_clean - nt_begin_clean + 1);
103 size_t vt_begin = nt_end + 2;
104 size_t vt_end = st_clean.size() - 1;
106 std::string vt = st_clean.substr(vt_begin, vt_end - vt_begin + 1);
108 size_t vt_begin_clean = vt.find_first_not_of(a_trim);
109 size_t vt_end_clean = vt.find_last_not_of(a_trim);
112 if (vt_begin_clean != std::string::npos &&
113 vt_end_clean != std::string::npos) {
114 std::string vt_clean =
115 vt.substr(vt_begin_clean, vt_end_clean - vt_begin_clean + 1);
118 map_[nt_clean] = vt_clean;
125 if (st_end == std::string::npos) {
126 st_begin = std::string::npos;
128 st_begin = st_end + 1;
129 st_end = input.find_first_of(s_del, st_begin);
133 return map_.empty() ? 1 : 0;
153 bool result = (
map_.size() == rhs.
map_.size());
154 for (AttrMap::const_iterator i1 =
map_.begin(), i2 = rhs.
map_.begin();
155 result ==
true && i1 !=
map_.end() && i2 != rhs.
map_.end();
157 if (i1->first.compare(i2->first) != 0 ||
158 i1->second.compare(i2->second) != 0) {
167 return !(*
this == rhs);
int simple_avp_seq_parse(const char *in, const char *s_del, const char *a_del, const char *s_trim, const char *a_trim, bool push_back)
bool operator==(const SubjectName &) const
int parse_dce(const char *)
int parse_permissive(const char *)
bool operator!=(const SubjectName &) const
int parse_ldap_v3(const char *)
void push_back(Seq &seq, const typename Seq::value_type &val)
std::vector-style push_back() for CORBA Sequences
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
int parse(const char *, bool permissive=false)
The Internal API and Implementation of OpenDDS.