23 unsigned int entry)
const
26 std::vector<unsigned int>::const_iterator intIter = form.
params(
entry).begin();
27 unsigned int keyIdx = 0U, aliasNum = 0U, clidNum = 0U;
29 if ((*intIter&0x0000FFFF) == 0) {
31 keyIdx = *intIter; ++intIter;
32 aliasNum = *intIter; ++intIter;
33 clidNum = *intIter; ++intIter;
36 const unsigned int keyPos = (
unsigned short)(*intIter>>16),
37 version = (
unsigned short)(*intIter&0x0000FFFF); ++intIter;
38 const unsigned int guidIdx = (
unsigned short)(*intIter>>16),
39 classIdx = (
unsigned short)(*intIter&0x0000FFFF); ++intIter;
40 const unsigned int prefixIdx = (
unsigned short)(*intIter>>16),
41 typeIdx = (
unsigned short)(*intIter&0x0000FFFF); ++intIter;
43 unsigned int tech = 514;
45 tech = *intIter; ++intIter;
47 unsigned int oid1 = *intIter; ++intIter;
49 keyIdx = *intIter; ++intIter;
50 aliasNum = *intIter; ++intIter;
51 clidNum = *intIter; ++intIter;
53 keyIdx = (*intIter>>16), aliasNum = ((*intIter&0x0000FFFF)>>8), clidNum = (*intIter&0x000000FF); ++intIter;
61 cntName += form.
map()[prefixIdx];
63 cntName += form.
map()[typeIdx];
68 cntName += pers.
m_token.substr(0, keyPos - 1) + form.
map()[keyIdx] + pers.
m_token.substr(keyPos - 1);
74 Guid clid(form.
map()[classIdx]);
80 auto aliasBeg = form.
map().begin() + keyIdx;
81 trans.
m_key = *aliasBeg++;
83 trans.
m_alias.assign (aliasBeg, aliasBeg+aliasNum);
84 if (!std::ranges::is_sorted (trans.
m_alias)) {
86 std::ranges::sort (trans.
m_alias);
87 auto ret = std::ranges::unique (trans.
m_alias);
88 trans.
m_alias.erase (ret.begin(), ret.end());
91 trans.
m_pClid = *intIter; ++intIter;
92 const std::vector<unsigned int>::const_iterator intLast = form.
params(
entry).end();
93 if (intIter+clidNum > intLast) {
94 clidNum = intLast - intIter;
96 trans.
m_clids.assign (intIter, intIter+clidNum);
99 for (; intIter != intLast; ++intIter) {
107 unsigned int entry)
const {
108 unsigned int tech = 0U, oid1 = 0U;
109 unsigned short guidIdx = 0U, classIdx = 0U, prefixIdx = 0U, typeIdx = 0U, keyPos = 0U;
114 for (std::vector<std::string>::const_iterator
iter = form.
map().begin(), last = form.
map().end();
118 if (guidIdx == form.
map().size()) {
123 for (std::vector<std::string>::const_iterator
iter = form.
map().begin(), last = form.
map().end();
125 if (*
iter == clid)
break;
127 if (classIdx == form.
map().size()) {
133 std::string::size_type delim = pers.
m_token.find_first_of(
"_/(");
134 if (delim != std::string::npos) {
135 const std::string persComp1 = pers.
m_token.substr(0, delim + 1);
136 for (std::vector<std::string>::const_iterator
iter = form.
map().begin(), last = form.
map().end();
137 iter != last; ++
iter, ++prefixIdx) {
138 if (*
iter == persComp1)
break;
140 if (prefixIdx == form.
map().size()) {
147 std::string::size_type delim = pers.
m_token.find_first_of(
"/()");
148 if (delim != std::string::npos) {
149 const std::string persComp2 = pers.
m_token.substr(0, delim + 1);
150 for (std::vector<std::string>::const_iterator
iter = form.
map().begin(), last = form.
map().end();
152 if (*
iter == persComp2)
break;
154 if (typeIdx == form.
map().size()) {
158 }
else if (pers.
m_token ==
"DataHeader") {
159 for (std::vector<std::string>::const_iterator
iter = form.
map().begin(), last = form.
map().end();
161 if (*
iter ==
"DataHeader")
break;
163 if (typeIdx == form.
map().size()) {
171 if (delim != std::string::npos) {
179 unsigned int version = 0x0000FFFFU;
183 unsigned int keyIdx = form.
map().size(), aliasNum = trans.
m_alias.size(), clidNum = trans.
m_clids.size();
184 if (keyIdx < 0x00010000U && aliasNum < 0x00000100U && clidNum < 0x00000100U) {
188 form.
insertParam((
unsigned int)(guidIdx) * 0x00010000U + (
unsigned int)(classIdx),
entry);
189 form.
insertParam((
unsigned int)(prefixIdx) * 0x00010000U + (
unsigned int)(typeIdx),
entry);
199 form.
insertParam(keyIdx * 0x00010000U + aliasNum * 0x00000100U + clidNum,
entry);
202 for (
const std::string&
a : trans.
m_alias) {
209 for (std::vector<SG::sgkey_t>::const_iterator
iter = trans.
m_hashes.begin(),
223 unsigned int entry = 1;
224 const unsigned int provSize = dhForm.
params(
entry)[0];
228 std::vector<DataHeaderElement_p5>::const_iterator pit = pers.
m_dataHeader.begin();
229 for (
unsigned int i = 0U;
i < provSize; ++
i, ++
it, ++pit) {
235 for (std::vector<DataHeaderElement_p5>::const_iterator last = pers.
m_dataHeader.end();
236 pit != last; ++
it, ++pit) {
250 unsigned int entry = 1;
258 for (std::vector<DataHeaderElement>::const_iterator
it = trans.
m_dataHeader.begin(),
267 const std::string&
key,
268 const std::string& strToken)
const