@ -47,6 +47,8 @@ namespace std {
# i n c l u d e "gnc-optiondb-impl.hpp"
# i n c l u d e "gnc-option-date.hpp"
static c o n s t Q o f L o g M o d u l e l o g _ m o d u l e = "gnc.optiondb" ;
S C M s c m _ i n i t _ s w _ g n c _ o p t i o n d b _ m o d u l e ( void ) ;
% }
@ -855,72 +857,122 @@ wrap_unique_ptr(GncOptionDBPtr, GncOptionDB);
{
if ( ! $ self )
return ;
s t d : : v i s i t ( [ n e w _ v a l u e ] ( a u t o & option) {
if c o n s t e x p r ( s t d : : i s _ s a m e _ v < s t d : : d e c a y _ t < d e c l t y p e ( option ) > ,
G n c O p t i o n D a t e V a l u e > )
{
if ( s c m _ d a t e _ a b s o l u t e ( n e w _ v a l u e ) )
option . s e t _ v a l u e ( s c m _ a b s o l u t e _ d a t e _ t o _ t i m e 64 ( n e w _ v a l u e ) ) ;
else
option . s e t _ v a l u e ( s c m _ r e l a t i v e _ d a t e _ g e t _ p e r i o d ( n e w _ v a l u e ) ) ;
return ;
}
if c o n s t e x p r ( s t d : : i s _ s a m e _ v < s t d : : d e c a y _ t < d e c l t y p e ( option ) > ,
G n c O p t i o n M u l t i c h o i c e V a l u e > )
{
option . s e t _ m u l t i p l e ( s c m _ t o _ m u l t i c h o i c e s ( n e w _ v a l u e , option ) ) ;
return ;
}
t r y {
s t d : : v i s i t ( [ n e w _ v a l u e ] ( a u t o & option) {
if c o n s t e x p r ( s t d : : i s _ s a m e _ v < s t d : : d e c a y _ t < d e c l t y p e ( option ) > ,
G n c O p t i o n D a t e V a l u e > )
{
if ( s c m _ d a t e _ a b s o l u t e ( n e w _ v a l u e ) )
option . s e t _ v a l u e ( s c m _ a b s o l u t e _ d a t e _ t o _ t i m e 64 ( n e w _ v a l u e ) ) ;
else
option . s e t _ v a l u e ( s c m _ r e l a t i v e _ d a t e _ g e t _ p e r i o d ( n e w _ v a l u e ) ) ;
return ;
}
if c o n s t e x p r ( s t d : : i s _ s a m e _ v < s t d : : d e c a y _ t < d e c l t y p e ( option ) > ,
G n c O p t i o n M u l t i c h o i c e V a l u e > )
{
option . s e t _ m u l t i p l e ( s c m _ t o _ m u l t i c h o i c e s ( n e w _ v a l u e , option ) ) ;
return ;
}
if c o n s t e x p r ( s t d : : i s _ s a m e _ v < s t d : : d e c a y _ t < d e c l t y p e ( option ) > ,
G n c O p t i o n R a n g e V a l u e < int > > )
{
if ( s c m _ i s _ p a i r ( n e w _ v a l u e ) )
option . s e t _ v a l u e ( s c m _ t o _ i n t ( s c m _ c d r ( n e w _ v a l u e ) ) ) ;
else
option . s e t _ v a l u e ( s c m _ t o _ i n t ( n e w _ v a l u e ) ) ;
return ;
}
a u t o value { s c m _ t o _ v a l u e < s t d : : d e c a y _ t < d e c l t y p e ( o p t i o n . g e t _ v a l u e ( ) ) > > ( n e w _ v a l u e ) } ; //Can't inline, set_value takes arg by reference.
option . s e t _ v a l u e ( value ) ;
} , s w i g _ g e t _ o p t i o n ( $ self ) ) ;
if c o n s t e x p r ( s t d : : i s _ s a m e _ v < s t d : : d e c a y _ t < d e c l t y p e ( option ) > ,
G n c O p t i o n R a n g e V a l u e < int > > )
{
if ( s c m _ i s _ p a i r ( n e w _ v a l u e ) )
option . s e t _ v a l u e ( s c m _ t o _ i n t ( s c m _ c d r ( n e w _ v a l u e ) ) ) ;
else
option . s e t _ v a l u e ( s c m _ t o _ i n t ( n e w _ v a l u e ) ) ;
return ;
}
if c o n s t e x p r ( s t d : : i s _ s a m e _ v < s t d : : d e c a y _ t < d e c l t y p e ( option ) > ,
G n c O p t i o n V a l u e < c o n s t Q o f I n s t a n c e * > > | |
s t d : : i s _ s a m e _ v < s t d : : d e c a y _ t < d e c l t y p e ( option ) > ,
G n c O p t i o n V a l i d a t e d V a l u e < c o n s t Q o f I n s t a n c e * > > )
{
if ( s c m _ i s _ s t r i n g ( n e w _ v a l u e ) )
{
a u t o s t r v a l { s c m _ t o _ u t f 8 _ s t r i n g ( n e w _ v a l u e ) } ;
a u t o v a l { q o f _ i n s t a n c e _ f r o m _ s t r i n g ( s t r v a l , o p t i o n . g e t _ u i _ t y p e ( ) ) } ;
option . s e t _ v a l u e ( v a l ) ;
}
else
{
a u t o v a l { s c m _ t o _ v a l u e < c o n s t Q o f I n s t a n c e * > ( n e w _ v a l u e ) } ;
option . s e t _ v a l u e ( v a l ) ;
}
return ;
}
a u t o value { s c m _ t o _ v a l u e < s t d : : d e c a y _ t < d e c l t y p e ( o p t i o n . g e t _ v a l u e ( ) ) > > ( n e w _ v a l u e ) } ; //Can't inline, set_value takes arg by reference.
option . s e t _ v a l u e ( value ) ;
} , s w i g _ g e t _ o p t i o n ( $ self ) ) ;
}
catch ( c o n s t s t d : : i n v a l i d _ a r g u m e n t & err)
{
P E R R ( "Option %s:%s failed to set value: %s" ,
$ s e l f - > g e t _ s e c t i o n ( ) . c _ s t r ( ) , $ s e l f - > g e t _ n a m e ( ) . c _ s t r ( ) ,
e r r . w h a t ( ) ) ;
}
}
void s e t _ d e f a u l t _ v a l u e _ f r o m _ s c m ( S C M n e w _ v a l u e )
{
if ( ! $ self )
return ;
s t d : : v i s i t ( [ n e w _ v a l u e ] ( a u t o & option) {
if c o n s t e x p r ( s t d : : i s _ s a m e _ v < s t d : : d e c a y _ t < d e c l t y p e ( option ) > ,
G n c O p t i o n D a t e V a l u e > )
{
if ( s c m _ d a t e _ a b s o l u t e ( n e w _ v a l u e ) )
option . s e t _ d e f a u l t _ v a l u e ( s c m _ a b s o l u t e _ d a t e _ t o _ t i m e 64 ( n e w _ v a l u e ) ) ;
else
option . s e t _ d e f a u l t _ v a l u e ( s c m _ r e l a t i v e _ d a t e _ g e t _ p e r i o d ( n e w _ v a l u e ) ) ;
return ;
}
if c o n s t e x p r ( s t d : : i s _ s a m e _ v < s t d : : d e c a y _ t < d e c l t y p e ( option ) > ,
G n c O p t i o n M u l t i c h o i c e V a l u e > )
{
option . s e t _ d e f a u l t _ m u l t i p l e ( s c m _ t o _ m u l t i c h o i c e s ( n e w _ v a l u e ,
option ) ) ;
return ;
}
if c o n s t e x p r ( s t d : : i s _ s a m e _ v < s t d : : d e c a y _ t < d e c l t y p e ( option ) > ,
G n c O p t i o n R a n g e V a l u e < int > > )
{
if ( s c m _ i s _ p a i r ( n e w _ v a l u e ) )
option . s e t _ d e f a u l t _ v a l u e ( s c m _ t o _ i n t ( s c m _ c d r ( n e w _ v a l u e ) ) ) ;
else
option . s e t _ d e f a u l t _ v a l u e ( s c m _ t o _ i n t ( n e w _ v a l u e ) ) ;
return ;
}
a u t o value { s c m _ t o _ v a l u e < s t d : : d e c a y _ t < d e c l t y p e ( o p t i o n . g e t _ v a l u e ( ) ) > > ( n e w _ v a l u e ) } ; //Can't inline, set_value takes arg by reference.
option . s e t _ d e f a u l t _ v a l u e ( value ) ;
} , s w i g _ g e t _ o p t i o n ( $ self ) ) ;
t r y {
s t d : : v i s i t ( [ n e w _ v a l u e ] ( a u t o & option) {
if c o n s t e x p r ( s t d : : i s _ s a m e _ v < s t d : : d e c a y _ t < d e c l t y p e ( option ) > ,
G n c O p t i o n D a t e V a l u e > )
{
if ( s c m _ d a t e _ a b s o l u t e ( n e w _ v a l u e ) )
option . s e t _ d e f a u l t _ v a l u e ( s c m _ a b s o l u t e _ d a t e _ t o _ t i m e 64 ( n e w _ v a l u e ) ) ;
else
option . s e t _ d e f a u l t _ v a l u e ( s c m _ r e l a t i v e _ d a t e _ g e t _ p e r i o d ( n e w _ v a l u e ) ) ;
return ;
}
if c o n s t e x p r ( s t d : : i s _ s a m e _ v < s t d : : d e c a y _ t < d e c l t y p e ( option ) > ,
G n c O p t i o n M u l t i c h o i c e V a l u e > )
{
option . s e t _ d e f a u l t _ m u l t i p l e ( s c m _ t o _ m u l t i c h o i c e s ( n e w _ v a l u e ,
option ) ) ;
return ;
}
if c o n s t e x p r ( s t d : : i s _ s a m e _ v < s t d : : d e c a y _ t < d e c l t y p e ( option ) > ,
G n c O p t i o n R a n g e V a l u e < int > > )
{
if ( s c m _ i s _ p a i r ( n e w _ v a l u e ) )
option . s e t _ d e f a u l t _ v a l u e ( s c m _ t o _ i n t ( s c m _ c d r ( n e w _ v a l u e ) ) ) ;
else
option . s e t _ d e f a u l t _ v a l u e ( s c m _ t o _ i n t ( n e w _ v a l u e ) ) ;
return ;
}
if c o n s t e x p r ( s t d : : i s _ s a m e _ v < s t d : : d e c a y _ t < d e c l t y p e ( option ) > ,
G n c O p t i o n V a l u e < c o n s t Q o f I n s t a n c e * > > | |
s t d : : i s _ s a m e _ v < s t d : : d e c a y _ t < d e c l t y p e ( option ) > ,
G n c O p t i o n V a l i d a t e d V a l u e < c o n s t Q o f I n s t a n c e * > > )
{
if ( s c m _ i s _ s t r i n g ( n e w _ v a l u e ) )
{
a u t o s t r v a l { s c m _ t o _ u t f 8 _ s t r i n g ( n e w _ v a l u e ) } ;
a u t o v a l { q o f _ i n s t a n c e _ f r o m _ s t r i n g ( s t r v a l , o p t i o n . g e t _ u i _ t y p e ( ) ) } ;
option . s e t _ d e f a u l t _ v a l u e ( v a l ) ;
}
else
{
a u t o v a l { s c m _ t o _ v a l u e < c o n s t Q o f I n s t a n c e * > ( n e w _ v a l u e ) } ;
option . s e t _ d e f a u l t _ v a l u e ( v a l ) ;
}
return ;
}
a u t o value { s c m _ t o _ v a l u e < s t d : : d e c a y _ t < d e c l t y p e ( o p t i o n . g e t _ v a l u e ( ) ) > > ( n e w _ v a l u e ) } ; //Can't inline, set_value takes arg by reference.
option . s e t _ d e f a u l t _ v a l u e ( value ) ;
} , s w i g _ g e t _ o p t i o n ( $ self ) ) ;
}
catch ( c o n s t s t d : : i n v a l i d _ a r g u m e n t & err)
{
P E R R ( "Option %s:%s failed to set default value: %s" ,
$ s e l f - > g e t _ s e c t i o n ( ) . c _ s t r ( ) , $ s e l f - > g e t _ n a m e ( ) . c _ s t r ( ) , e r r . w h a t ( ) ) ;
}
}
S C M g e t _ t y p e ( )