Re: How to use string constants with std::map

2023-10-11 Thread Regina Henschel

Hi Stephan,

thank you for the quick answer. Generating the longer u"cd4"_ustr for 
example is no problem in XSLT. So I will likely go with that.


The hint about "not constexpr-ready" is helpful too. I have indeed 
thought about whether to use it.


Kind regards,
Regina

Stephan Bergmann schrieb am 11.10.2023 um 20:14:

On 10/11/23 19:24, Regina Henschel wrote:
How to write the map? In the past it would have been something like 
the following:


static const std::map> 
aConnectionSiteAngleMap{

 {"accentBorderCallout1",{"0","cd4","cd2","3cd4"}},
...
 {"wedgeRoundRectCallout",{"3cd4","cd2","cd4","0","cd4"}}
};

All strings are constants and neither the map nor the strings will 
ever change.


How do I have to write it now?


You can keep writing it as above, or your could write it as


static const std::map>
aConnectionSiteAngleMap{
 
{u"accentBorderCallout1"_ustr,{u"0"_ustr,u"cd4"_ustr,u"cd2"_ustr,u"3cd4"_ustr}}, 


...
 
{u"wedgeRoundRectCallout"_ustr,{u"3cd4"_ustr,u"cd2"_ustr,u"cd4"_ustr,u"0"_ustr,u"cd4"_ustr}} 


};


which is a bit more efficient as it doesn't need to construct the 
OUString instances it runtime (but it still needs to construct the 
std::vector and std::map instances at runtime).


(You can't write it as


static constexpr std::map>
aConnectionSiteAngleMap{
 
{u"accentBorderCallout1"_ustr,{u"0"_ustr,u"cd4"_ustr,u"cd2"_ustr,u"3cd4"_ustr}}, 


...
 
{u"wedgeRoundRectCallout"_ustr,{u"3cd4"_ustr,u"cd2"_ustr,u"cd4"_ustr,u"0"_ustr,u"cd4"_ustr}} 


};


as std::map is not constexpr-ready in C++20, and neither is std::vector 
in some standard library implementations, like in debug-mode libstdc++.)







Re: How to use string constants with std::map

2023-10-11 Thread Stephan Bergmann

On 10/11/23 19:24, Regina Henschel wrote:
How to write the map? In the past it would have been something like the 
following:


static const std::map> 
aConnectionSiteAngleMap{

     {"accentBorderCallout1",{"0","cd4","cd2","3cd4"}},
...
     {"wedgeRoundRectCallout",{"3cd4","cd2","cd4","0","cd4"}}
};

All strings are constants and neither the map nor the strings will ever 
change.


How do I have to write it now?


You can keep writing it as above, or your could write it as


static const std::map>
aConnectionSiteAngleMap{
 
{u"accentBorderCallout1"_ustr,{u"0"_ustr,u"cd4"_ustr,u"cd2"_ustr,u"3cd4"_ustr}},
...
 
{u"wedgeRoundRectCallout"_ustr,{u"3cd4"_ustr,u"cd2"_ustr,u"cd4"_ustr,u"0"_ustr,u"cd4"_ustr}}
};


which is a bit more efficient as it doesn't need to construct the 
OUString instances it runtime (but it still needs to construct the 
std::vector and std::map instances at runtime).


(You can't write it as


static constexpr std::map>
aConnectionSiteAngleMap{
 
{u"accentBorderCallout1"_ustr,{u"0"_ustr,u"cd4"_ustr,u"cd2"_ustr,u"3cd4"_ustr}},
...
 
{u"wedgeRoundRectCallout"_ustr,{u"3cd4"_ustr,u"cd2"_ustr,u"cd4"_ustr,u"0"_ustr,u"cd4"_ustr}}
};


as std::map is not constexpr-ready in C++20, and neither is std::vector 
in some standard library implementations, like in debug-mode libstdc++.)




How to use string constants with std::map

2023-10-11 Thread Regina Henschel

Hi all,

For import from OOXML, I need a map which has the shape preset type 
string as key and a vector of the angle strings of the cxn elements of 
that shape as value. I will extract this information from 
presetShapeDefinitions.xml file using XSLT. The map has total 187 rows.


How to write the map? In the past it would have been something like the 
following:


static const std::map> 
aConnectionSiteAngleMap{

{"accentBorderCallout1",{"0","cd4","cd2","3cd4"}},
...
{"wedgeRoundRectCallout",{"3cd4","cd2","cd4","0","cd4"}}
};

All strings are constants and neither the map nor the strings will ever 
change.


How do I have to write it now?

Kind regards,
Regina