BEAST/BSE - Better Audio System and Sound Engine  0.9.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
standardsaturator.genidl.hh
Go to the documentation of this file.
1 
2 /*-------- begin ../sfi/sfidl generated code --------*/
3 
4 
5 
6 #include <bse/bse-internals.hh>
7 
8 
9 /* enum prototypes */
10 namespace Bse {
11 namespace Standard {
12 #define BSE_STANDARD_TYPE_SATURATION_TYPE BSE_CXX_DECLARED_ENUM_TYPE (Bse::Standard, SaturationType)
13 
14 
15 /* choice prototypes */
16 static SfiChoiceValues SaturationType_choice_values();
17 
18 
19 /* record prototypes */
20 
21 
22 /* sequence prototypes */
23 
24 
25 /* class prototypes */
26 class SaturatorBase;
27 class Saturator;
28 #define BSE_STANDARD_TYPE_SATURATOR BSE_CXX_DECLARED_CLASS_TYPE (Bse::Standard, Saturator)
29 #define BSE_STANDARD_IS_SATURATOR(o) (::Bse::CxxBase::instance_is_a (o, BSE_STANDARD_TYPE_SATURATOR))
30 
31 
32 /* enum definitions */
33 enum SaturationType {
34  SATURATE_TANH = 0,
35  SATURATE_ATAN = 1,
36  SATURATE_QUADRATIC = 2,
37  SATURATE_SOFT_KNEE = 3,
38  SATURATE_HARD = 4,
39 };
40 
41 
42 /* sequence definitions */
43 
44 
45 /* record definitions */
46 
47 
48 /* enum declarations */
49 BSE_CXX_DECLARE_ENUM (SaturationType, "BseStandardSaturationType", 5,
50  *v++ = ::Bse::EnumValue (SATURATE_TANH, "BSE_STANDARD_SATURATE_TANH", _("TANH") );
51  *v++ = ::Bse::EnumValue (SATURATE_ATAN, "BSE_STANDARD_SATURATE_ATAN", _("ATAN") );
52  *v++ = ::Bse::EnumValue (SATURATE_QUADRATIC, "BSE_STANDARD_SATURATE_QUADRATIC", _("Quadratic") );
53  *v++ = ::Bse::EnumValue (SATURATE_SOFT_KNEE, "BSE_STANDARD_SATURATE_SOFT_KNEE", _("Soft Knee") );
54  *v++ = ::Bse::EnumValue (SATURATE_HARD, "BSE_STANDARD_SATURATE_HARD", _("Hard") );
55 );
56 
57 
58 /* sequence type declarations */
59 
60 
61 /* record type declarations */
62 
63 
64 /* procedure prototypes */
65 
66 
67 /* class definitions */
68 BSE_CXX_DECLARE_CLASS (Saturator);
69 class SaturatorBase : public ::Bse::Effect {
70  template<bool> static inline const unsigned char* inlined_pixstream();
71 public:
72  static inline const unsigned char* pixstream () { return inlined_pixstream<true>(); }
73  static void class_init (::Bse::CxxBaseClass *klass);
74  static inline const char* options () { return ""; }
75  static inline const char* category () { static const char *c = NULL;
76  return c ? c : c = sfi_category_concat ("/Modules", "/Distortion/Saturate"); }
77  static inline const char* i18n_category () { static const char *c = NULL;
78  return c ? c : c = sfi_category_concat ("/Modules", "/Distortion/Saturate"); }
79  static inline const char* blurb () { return "This is 2-channel saturation module. Various saturation types are supported. The 'Level' parameter adjusts the maximum saturation stage output for a normalized input signal. Some saturartion types simply clip signals beyond this threshold, while others (notably TANH and ATAN) allow overdrive signals to pass through the saturation stage up to a certain amount. The output volume allows for extra amplification after the saturation stage. For saturation types that allow overdrive signals past the saturation stage, an output volume greater than 0dB may result in overdrive signals as output of this module."; }
80  static inline const char* authors () { return "Tim Janik"; }
81  static inline const char* license () { return ""; }
82  static inline const char* type_name () { return "BseStandardSaturator"; }
83 public:
84  enum {
85  ICHANNEL_AUDIO_IN1,
86  ICHANNEL_AUDIO_IN2,
87  N_ICHANNELS
88  };
89 public:
90  enum {
91  OCHANNEL_AUDIO_OUT1,
92  OCHANNEL_AUDIO_OUT2,
93  N_OCHANNELS
94  };
95 protected:
96  enum SaturatorPropertyID {
97  PROP_SATURATION = 1,
98  PROP_LEVEL,
99  PROP_AUTO_OUTPUT,
100  PROP_OUTPUT_VOLUME,
101  };
102 public:
103  /* "transport" structure to configure synthesis modules from properties */
105  typedef SaturatorPropertyID IDType;
106  ::Bse::Standard::SaturationType saturation;
107  Sfi::Real level;
108  bool auto_output;
109  Sfi::Real output_volume;
110  explicit SaturatorProperties (SaturatorBase *p) :
111  saturation (p->saturation),
112  level (p->level),
113  auto_output (p->auto_output),
114  output_volume (p->output_volume)
115  {
116  }
117  };
118 protected:
119  typedef ::Bse::SynthesisModule::NeedAutoUpdateTag AutoUpdateCategory;
120 protected:
121  ::Bse::Standard::SaturationType saturation;
122  Sfi::Real level;
123  bool auto_output;
124  Sfi::Real output_volume;
125  guint64 last__output_volume;
126 public:
127  void get_property (SaturatorPropertyID prop_id, ::Bse::Value &value, GParamSpec *pspec)
128  {
129  switch (prop_id) {
130  case PROP_SATURATION:
131  sfi_value_set_enum_auto SFI_START_ARGS() BSE_STANDARD_TYPE_SATURATION_TYPE, SFI_END_ARGS2 (&value, saturation);
132  break;
133  case PROP_LEVEL:
134  sfi_value_set_real (&value, level);
135  break;
136  case PROP_AUTO_OUTPUT:
137  sfi_value_set_bool (&value, auto_output);
138  break;
139  case PROP_OUTPUT_VOLUME:
140  sfi_value_set_real (&value, output_volume);
141  break;
142  };
143  }
144  void set_property (SaturatorPropertyID prop_id, const ::Bse::Value &value, GParamSpec *pspec)
145  {
146  switch (prop_id) {
147  case PROP_SATURATION:
148  saturation = (::Bse::Standard::SaturationType) sfi_value_get_enum_auto SFI_START_ARGS() BSE_STANDARD_TYPE_SATURATION_TYPE, SFI_END_ARGS1 (&value);
149  break;
150  case PROP_LEVEL:
151  level = sfi_value_get_real (&value);
152  break;
153  case PROP_AUTO_OUTPUT:
154  auto_output = sfi_value_get_bool (&value);
155  break;
156  case PROP_OUTPUT_VOLUME:
157  output_volume = sfi_value_get_real (&value);
158  break;
159  };
160  property_changed (SaturatorPropertyID (prop_id));
161  update_modules();
162  switch (prop_id) {
163  default: ;
164  };
165  }
166  virtual bool editable_property (SaturatorPropertyID prop_id, GParamSpec *pspec)
167  {
168  return true;
169  }
170  virtual void get_candidates (SaturatorPropertyID prop_id, ::Bse::PropertyCandidatesHandle &pch, GParamSpec *pspec)
171  {
172  }
173  void property_updated (SaturatorPropertyID prop_id, guint64 tick_stamp, double prop_value, GParamSpec *pspec)
174  {
175  bool seen_change = false;
176  switch (prop_id) {
177  case PROP_OUTPUT_VOLUME:
178  if (tick_stamp >= ::std::max (last__output_volume, module_update_tick_stamp()))
179  {
180  seen_change = true;
181  output_volume = prop_value;
182  }
183  last__output_volume = tick_stamp;
184  break;
185  default: ;
186  };
187  if (seen_change &&
188  property_changed (SaturatorPropertyID (prop_id)))
189  update_modules();
190  }
191 private:
192  static struct StaticData {
193  int dummy;
194  } static_data;
195 protected:
196  virtual bool property_changed (SaturatorPropertyID) { return false; }
197  virtual ~SaturatorBase ()
198  {
199  }
200 public:
201 };
202 
203 
204 /* choice implementations */
205 static SfiChoiceValues
206 SaturationType_choice_values()
207 {
208  static SfiChoiceValue values[5];
209  static const SfiChoiceValues choice_values = {
210  G_N_ELEMENTS (values), values,
211  };
212  if (!values[0].choice_ident)
213  {
214  values[0].choice_ident = "BSE_STANDARD_SATURATE_TANH";
215  values[0].choice_label = _("TANH");
216  values[0].choice_blurb = _("Saturation via hyperbolic tangent function which is mostly linear for small levels while providing a soft curvature for high volume signals");
217  values[1].choice_ident = "BSE_STANDARD_SATURATE_ATAN";
218  values[1].choice_label = _("ATAN");
219  values[1].choice_blurb = _("Saturation via arc tangent function which is reasonably linear in the lower 50% but develops a strong curvature above 80%");
220  values[2].choice_ident = "BSE_STANDARD_SATURATE_QUADRATIC";
221  values[2].choice_label = _("Quadratic");
222  values[2].choice_blurb = _("Saturation via quadratic approximation which keeps a well-proportioned curvature across all levels");
223  values[3].choice_ident = "BSE_STANDARD_SATURATE_SOFT_KNEE";
224  values[3].choice_label = _("Soft Knee");
225  values[3].choice_blurb = _("Linear saturation with a soft knee transit into the clipping range (equals hard clipping at 100%) which approaches quadratic curvature for small levels");
226  values[4].choice_ident = "BSE_STANDARD_SATURATE_HARD";
227  values[4].choice_label = _("Hard");
228  values[4].choice_blurb = _("Hard saturation via clipping (prone to clicks)");
229  }
230  return choice_values;
231 }
232 
233 
234 
235 /* record implementations */
236 
237 
238 /* sequence implementations */
239 
240 
241 /* class implementations */
242 void
243 SaturatorBase::class_init (::Bse::CxxBaseClass *klass)
244 {
245  klass->set_accessors (::Bse::cxx_get_property_trampoline<SaturatorBase, SaturatorPropertyID>,
246  ::Bse::cxx_set_property_trampoline<SaturatorBase, SaturatorPropertyID>,
247  ::Bse::cxx_editable_property_trampoline<SaturatorBase, SaturatorPropertyID>,
248  ::Bse::cxx_get_candidates_trampoline<SaturatorBase, SaturatorPropertyID>,
249  ::Bse::cxx_property_updated_trampoline<SaturatorBase, SaturatorPropertyID>);
250  klass->add_param (PROP_SATURATION, sfidl_pspec_GEnum ("Saturation","/opt/src/beast/plugins/standardsaturator.idl",770, "saturation", _ ( "Saturation Type" ) , _ ( "The type of saturation to be used" ) , SATURATE_TANH , ":r:w:S:G:", BSE_STANDARD_TYPE_SATURATION_TYPE));
251  klass->add_param (PROP_LEVEL, sfidl_pspec_Perc ("Saturation","/opt/src/beast/plugins/standardsaturator.idl",771,"level",_ ( "Level" ) , _ ( "Normalization level of the saturation curve in percent, some saturation types still " "allow overdrive signals beyond this level" ) , 50LL , "scale:" ":r:w:S:G:"));
252  klass->add_param (PROP_AUTO_OUTPUT, sfidl_pspec_Bool ("Saturation","/opt/src/beast/plugins/standardsaturator.idl",775,"auto_output",_ ( "Auto Output" ) , _ ( "Automatically adapt the output volume according to changes in saturation level" ) , TRUE , ":r:w:S:G:"));
253  klass->add_param (PROP_OUTPUT_VOLUME, sfidl_pspec_DBVolume ("Saturation","/opt/src/beast/plugins/standardsaturator.idl",778,"output_volume",_ ( "Output Volume" ) , _ ( "Output stage amplification in decibel" ) , 0LL , 0LL , + 42LL , "automate:" ":r:w:S:G:"));
254  klass->add_ichannel ("audio_in1", "Audio In1", "First Audio Input", ICHANNEL_AUDIO_IN1);
255  klass->add_ichannel ("audio_in2", "Audio In2", "Second Audio Input", ICHANNEL_AUDIO_IN2);
256  klass->add_ochannel ("audio_out1", "Audio Out1", "First Audio Output", OCHANNEL_AUDIO_OUT1);
257  klass->add_ochannel ("audio_out2", "Audio Out2", "Second Audio Output", OCHANNEL_AUDIO_OUT2);
258 }
259 
260 
261 /* procedure implementations */
262 
263 
264 /* standardsaturator.idl type registrations */
265 #define BSE_CXX_REGISTER_ALL_TYPES_FROM_STANDARDSATURATOR_IDL() \
266  BSE_CXX_REGISTER_ENUM (SaturationType); \
267  BSE_CXX_REGISTER_EFFECT (Saturator); \
268  /* standardsaturator.idl type registrations done */
269 } // Standard
270 } // Bse
271 template<bool> const unsigned char*
272 ::Bse::Standard::SaturatorBase::inlined_pixstream()
273 {
274  /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */
275 
276 #ifdef __SUNPRO_C
277 #pragma align 4 (local_pixstream)
278 #endif
279 #ifdef __GNUC__
280 static const guint8 local_pixstream[] __attribute__ ((__aligned__ (4))) =
281 #else
282 static const guint8 local_pixstream[] =
283 #endif
284 { ""
285  /* Pixbuf magic (0x47646b50) */
286  "GdkP"
287  /* length: header (24) + pixel_data (5162) */
288  "\0\0\24B"
289  /* pixdata_type (0x2010002) */
290  "\2\1\0\2"
291  /* rowstride (256) */
292  "\0\0\1\0"
293  /* width (64) */
294  "\0\0\0@"
295  /* height (64) */
296  "\0\0\0@"
297  /* pixel_data: */
298  "\206\0\0\0\0\230\0\0\0\1\243\0\0\0\0\3\0\0\0\1\0\0\0\4\0\0\0\10\202\0"
299  "\0\0\13\230\0\0\0\14\5\0\0\0\13\0\0\0\12\0\0\0\10\0\0\0\3\0\0\0\1\236"
300  "\0\0\0\0\5\0\0\0\4\0\0\0\17\0\0\0\36\0\0\0(\0\0\0*\230\0\0\0,\5\0\0\0"
301  "*\0\0\0&\0\0\0\32\0\0\0\12\0\0\0\2\235\0\0\0\0\7\0\0\0\1\0\0\0\10\0\0"
302  "\0\37\0\0\0;\0\0\0I\0\0\0J\0\0\0K\226\0\0\0L\6\0\0\0K\0\0\0I\0\0\0D\0"
303  "\0\0.\0\0\0\20\0\0\0\2\235\0\0\0\0\6\0\0\0\1\0\0\0\13\0\0\0(\0\0\0I\0"
304  "\0\0\270\0\0\0\343\230\0\0\0\377\5\12\27\12\377\33\77\33\377\0\0\0""8"
305  "\0\0\0\23\0\0\0\2\235\0\0\0\0\7\0\0\0\1\0\0\0\14\0\0\0+\0\0\0J\0\0\0"
306  "\343nnn\262\276\276\276\222\221\377\377\377\177\202&w&\377\11S\241R\377"
307  "P\241P\377N\241M\377@\210\77\377+`,\377\12\27\12\377\0\0\0;\0\0\0\25"
308  "\0\0\0\2\235\0\0\0\0\6\0\0\0\1\0\0\0\14\0\0\0,\0\0\0K\0\0\0\377\276\276"
309  "\276\222\221\377\377\377\177\202&w&\377\12V\242U\377T\242R\377Q\241P"
310  "\377N\241M\377K\240K\377>\211=\377\0\0\0\377\0\0\0<\0\0\0\26\0\0\0\2"
311  "\235\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\221\377\377\377"
312  "\177\202&w&\377\13X\242W\377V\242U\377T\242R\377Q\241P\377N\241M\377"
313  "L\241K\377I\240I\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\5"
314  "\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\220\262\267\375\257\202&w&"
315  "\377\14[\242Z\377Y\242X\377V\241U\377T\241S\377P\241P\377N\241N\377K"
316  "\241K\377I\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\5\0"
317  "\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\217\226\235\374\313\202&w&\377"
318  "\15^\242\\\377[\242Z\377X\241W\377V\241U\377T\241S\377Q\241P\377N\240"
319  "N\377K\240K\377I\241H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0"
320  "\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\216\226\235\374\313\202"
321  "&w&\377\16`\243^\377^\242\\\377[\242Z\377Y\242W\377V\241U\377S\241R\377"
322  "Q\241P\377N\241M\377L\241K\377H\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0"
323  "\0\0\2\235\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\215\226"
324  "\235\374\313\202&w&\377\17c\243a\377a\242_\377^\243]\377[\242Z\377Y\242"
325  "W\377V\241T\377S\241R\377Q\241O\377N\241M\377L\240K\377H\240I\377\0\0"
326  "\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,"
327  "\0\0\0L\0\0\0\377\214\226\235\374\313\202&w&\377\20e\243d\377c\242a\377"
328  "a\243_\377^\243]\377\\\242Z\377Y\241X\377U\241U\377T\241S\377P\241P\377"
329  "N\241N\377K\240K\377H\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235"
330  "\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\213\226\235\374\313"
331  "\202&w&\377\21h\243g\377f\243d\377d\243b\377`\243_\377^\242\\\377[\242"
332  "Z\377Y\242X\377V\242U\377S\241R\377P\241P\377N\241M\377K\241K\377I\240"
333  "H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\4\0\0\0\1\0\0\0\14"
334  "\0\0\0,\0\0\0L\234\0\0\0\377\3\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\5"
335  "\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\211\226\235\374\313\202&w&"
336  "\377\23n\244k\377k\243h\377h\243f\377f\243d\377c\243a\377a\243_\377^"
337  "\243\\\377\\\242Z\377Y\242X\377V\242U\377S\241S\377Q\241P\377N\241M\377"
338  "K\240K\377H\240I\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\5"
339  "\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\210\226\235\374\313\202&w&"
340  "\377\24p\245n\377m\244k\377k\244h\377h\244f\377f\243c\377c\243a\377a"
341  "\243_\377^\243]\377[\242Z\377X\241W\377V\242U\377S\241S\377P\241P\377"
342  "N\241M\377L\241K\377I\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235"
343  "\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\207\226\235\374\313"
344  "\202&w&\377\25s\245p\377q\244m\377n\244k\377k\243h\377i\243f\377f\243"
345  "d\377d\243b\377a\242_\377]\243\\\377[\242Z\377Y\242W\377V\242U\377S\241"
346  "S\377Q\241P\377N\241N\377L\240K\377H\240H\377\0\0\0\377\0\0\0=\0\0\0"
347  "\26\0\0\0\2\235\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\206"
348  "\226\235\374\313\202&w&\377\26v\245s\377s\244p\377q\244n\377n\244k\377"
349  "l\244h\377i\243f\377e\243c\377c\243a\377`\242_\377^\242\\\377[\242Z\377"
350  "Y\241W\377V\242U\377S\241S\377Q\241P\377N\240N\377K\241K\377I\240H\377"
351  "\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0"
352  "\0,\0\0\0L\0\0\0\377\205\226\235\374\313\202&w&\377\27x\245u\377v\245"
353  "s\377t\245p\377p\244n\377n\244k\377k\244i\377i\244f\377f\243d\377c\243"
354  "a\377a\242_\377]\243]\377[\242Y\377X\242W\377V\242U\377S\241R\377P\241"
355  "P\377N\241N\377K\241K\377I\240I\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2"
356  "\235\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\204\226\235\374"
357  "\313\202&w&\377\30{\246x\377x\245u\377v\245s\377s\244p\377p\244n\377"
358  "n\243k\377k\243i\377i\243f\377f\243c\377c\243b\377`\242_\377^\243]\377"
359  "[\242Z\377Y\242X\377V\242U\377S\242S\377P\241P\377N\241N\377K\240K\377"
360  "I\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\6\0\0\0\1\0"
361  "\0\0\14\0\0\0,\0\0\0K\0\0\0\377{\201\317\323\202\226\235\374\313\202"
362  "&w&\377\31~\246z\377{\245w\377y\245u\377v\244r\377s\245p\377q\245m\377"
363  "n\244k\377k\244i\377i\243f\377f\244d\377d\243b\377`\243_\377]\242\\\377"
364  "[\242Z\377X\242X\377U\241T\377S\242S\377Q\241O\377N\241M\377K\241K\377"
365  ">\210>\377\0\0\0\377\0\0\0<\0\0\0\26\0\0\0\2\235\0\0\0\0\7\0\0\0\1\0"
366  "\0\0\13\0\0\0+\0\0\0J\12\12\26\363RV\212\340{\201\317\323\202&w&\377"
367  "\32\201\246|\377~\246z\377{\245w\377x\244u\377v\245r\377t\245p\377p\244"
368  "n\377n\244k\377k\243i\377h\244f\377e\243c\377c\243a\377a\243_\377^\242"
369  "]\377[\242Z\377X\242W\377V\242U\377S\241R\377Q\241O\377N\241N\377@\210"
370  "@\377,`+\377\12\27\12\377\0\0\0:\0\0\0\24\0\0\0\2\235\0\0\0\0\6\0\0\0"
371  "\1\0\0\0\12\0\0\0&\0\0\0E\36\40B\341\12\13\26\363\230\0\0\0\377\5\12"
372  "\27\12\377\33\77\33\377\0\0\0""7\0\0\0\21\0\0\0\2\235\0\0\0\0\7\0\0\0"
373  "\1\0\0\0\10\0\0\0\33\0\0\0.\0\0\0""8\0\0\0;\0\0\0<\223\0\0\0=\11\0\0"
374  "\0>\0\0\0@\0\0\0D\0\0\0F\0\0\0G\0\0\0B\0\0\0+\0\0\0\14\0\0\0\1\236\0"
375  "\0\0\0\5\0\0\0\3\0\0\0\12\0\0\0\20\0\0\0\23\0\0\0\24\223\0\0\0\26\12"
376  "\0\0\0\27\0\0\0\31\0\0\0\34\0\0\0!\0\0\0&\0\0\0'\0\0\0$\0\0\0\26\0\0"
377  "\0\7\0\0\0\1\236\0\0\0\0\1\0\0\0\1\227\0\0\0\2\11\0\0\0\3\0\0\0\4\0\0"
378  "\0\6\0\0\0\10\0\0\0\12\3173\27\367\307+\23\364\0\0\0\27\0\0\0\5\272\0"
379  "\0\0\0\12\0\0\0\1\3173\27\367\332=\34\377\331<\33\377\271'\21\343\0\0"
380  "\0\34\0\0\0\3\302&\21\377\0\0\0\16\0\0\0\3\266\0\0\0\0\12\3173\27\344"
381  "\332=\34\377\331<\33\377\330:\33\377\3248\31\376\263\40\16\350\302(\22"
382  "\353\3140\26\377\0\0\0I\0\0\0\21\265\0\0\0\0\13\3204\27\360\332=\34\377"
383  "\330<\33\377\327;\32\377\3269\32\377\3248\32\377\3237\31\377\3226\30"
384  "\377\3130\25\377\0\0\0e\0\0\0\25\264\0\0\0\0\14\3204\30\352\332=\34\377"
385  "\331<\33\377\327;\33\377\3269\32\377\3258\32\377\3236\31\377\3226\30"
386  "\377\3215\30\377\312/\25\377\0\0\0j\0\0\0\25\264\0\0\0\0\14\307,\23\377"
387  "\331<\33\377\330;\33\377\3269\32\377\3258\32\377\3237\31\377\3226\31"
388  "\377\3214\30\377\3173\27\377\311.\25\377\0\0\0j\0\0\0\25\264\0\0\0\0"
389  "\14\0\0\0\21\273(\21\352\3248\31\377\3248\32\377\3237\31\377\3226\31"
390  "\377\3204\30\377\3173\27\377\3162\27\377\310-\24\377\0\0\0j\0\0\0\25"
391  "\264\0\0\0\0\14\0\0\0\3\0\0\0\35\264\40\16\352\3236\31\377\3226\30\377"
392  "\3215\30\377\3173\30\377\3162\27\377\3151\26\377\307,\23\377\0\0\0j\0"
393  "\0\0\25\265\0\0\0\0\13\0\0\0\3\302(\22\353\3226\31\377\3214\30\377\317"
394  "3\27\377\3161\27\377\3151\26\377\3140\25\377\306+\23\377\0\0\0j\0\0\0"
395  "\25\265\0\0\0\0\13\303'\22\367\3141\26\377\313/\26\377\312.\25\377\311"
396  ".\25\377\310-\24\377\307,\23\377\306+\23\377\302&\21\377\0\0\0j\0\0\0"
397  "\25\265\0\0\0\0\3\0\0\0\15\0\0\0G\0\0\0d\202\0\0\0i\204\0\0\0j\2\0\0"
398  "\0Y\0\0\0\22\265\0\0\0\0\6\0\0\0\3\0\0\0\20\0\0\0\25\0\0\0\30\0\0\0\36"
399  "\0\0\0!\202\0\0\0#\6\0\0\0\"\0\0\0\34\0\0\0\14\0\0\0\6\0\0\0\4\0\0\0"
400  "\3\225\0\0\0\2\1\0\0\0\1\236\0\0\0\0\14\0\0\0\3\0\0\0\20\0\0\0'\0\0\0"
401  "7\0\0\0:\0\0\0;\0\0\0""9\0\0\0""3\0\0\0*\0\0\0!\0\0\0\32\0\0\0\27\221"
402  "\0\0\0\26\5\0\0\0\24\0\0\0\22\0\0\0\20\0\0\0\12\0\0\0\3\236\0\0\0\0\14"
403  "\0\0\0\5\0\0\0\32\0\0\0C\0\0\0\\\0\0\0_\0\0\0^\0\0\0]\0\0\0W\0\0\0N\0"
404  "\0\0F\0\0\0@\0\0\0>\220\0\0\0=\7\0\0\0<\0\0\0;\0\0\0""8\0\0\0.\0\0\0"
405  "\32\0\0\0\10\0\0\0\1\235\0\0\0\0\5\0\0\0\4\0\0\0\31\0\0\0D\0\0\0\272"
406  "\0\0\0\344\230\0\0\0\377\6\0\0\0\342\0\0\0\266\0\0\0D\0\0\0&\0\0\0\12"
407  "\0\0\0\1\235\0\0\0\0\6\0\0\0\3\0\0\0\27\0\0\0>\0\0\0\343nnn\262\276\276"
408  "\276\222\226\377\377\377\177\7\276\276\276\222nnn\262\0\0\0\342\0\0\0"
409  "I\0\0\0+\0\0\0\13\0\0\0\1\235\0\0\0\0\5\0\0\0\2\0\0\0\26\0\0\0<\0\0\0"
410  "\377\276\276\276\222\230\377\377\377\177\6\276\276\276\222\0\0\0\377"
411  "\0\0\0K\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0"
412  "=\0\0\0\377\226\377\377\377\177\2\366\370\367\202\272\317\305\230\202"
413  "\246\302\265\241\5\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0"
414  "\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\222\262\267\375\257\15\257\265"
415  "\372\260y\223\301\317U{\242\353Iq\233\367En\232\374Cl\232\377Eo\234\377"
416  "Fo\235\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0"
417  "\0\2\0\0\0\26\0\0\0=\0\0\0\377\220\226\235\374\313\17\201\220\342\327"
418  "h\202\307\347Us\272\367Om\271\377Rp\276\377Wt\302\377Yw\304\377Zx\305"
419  "\377Yx\304\377Xy\303\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235"
420  "\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\216\226\235\374\313\21\177"
421  "\220\340\327Wu\272\365Om\271\377Qo\274\377Ur\300\377Zv\305\377]y\307"
422  "\377[y\306\377[y\305\377Zy\305\377Zy\304\377Xx\303\377\0\0\0\377\0\0"
423  "\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0"
424  "\0\377\215\226\235\374\313\6`|\300\355Nm\271\376Ro\274\377[v\305\377"
425  "_y\311\377^y\310\377\202]y\307\377\12[y\306\377[y\305\377Zy\305\377Z"
426  "x\304\377Xx\303\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0"
427  "\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\214\226\235\374\313\4Vt\272"
428  "\367Om\271\377Xt\303\377`y\312\377\202_y\311\377\2^y\310\377]y\310\377"
429  "\202\\y\307\377\11[y\305\377Zy\305\377Yx\304\377Xx\303\377\0\0\0\377"
430  "\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0"
431  "=\0\0\0\377\213\226\235\374\313\5Rq\271\372Om\271\377]v\310\377ay\313"
432  "\377`y\313\377\202_y\311\377\15^y\310\377]y\310\377]y\307\377[y\306\377"
433  "[y\305\377Zy\305\377Yy\304\377Xx\303\377\0\0\0\377\0\0\0L\0\0\0,\0\0"
434  "\0\14\0\0\0\1\235\0\0\0\0\3\0\0\0\2\0\0\0\26\0\0\0=\234\0\0\0\377\4\0"
435  "\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0"
436  "\0\0\377\211\226\235\374\313\202Om\271\377\2cz\315\377by\314\377\202"
437  "ay\313\377\1`y\312\377\202_y\311\377\15^y\310\377]y\310\377]y\307\377"
438  "[y\307\377[y\305\377Zy\305\377Yx\304\377Xx\303\377\0\0\0\377\0\0\0L\0"
439  "\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377"
440  "\210\226\235\374\313\202Om\271\377\6cz\316\377cz\315\377bz\314\377az"
441  "\313\377ay\313\377`y\312\377\202_y\311\377\1^y\310\377\202]y\307\377"
442  "\12[y\307\377[y\305\377Zy\305\377Zy\304\377Xx\303\377\0\0\0\377\0\0\0"
443  "L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0"
444  "\377\207\226\235\374\313\202Om\271\377\4ez\316\377dz\316\377cz\315\377"
445  "by\314\377\202ay\313\377\1`y\313\377\202_y\311\377\1^y\310\377\202]y"
446  "\307\377\12[y\307\377[y\305\377Zy\305\377Zx\304\377Xx\303\377\0\0\0\377"
447  "\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0"
448  "=\0\0\0\377\206\226\235\374\313\202Om\271\377\5fz\320\377ez\316\377d"
449  "z\316\377cz\315\377cz\314\377\202ay\313\377\1`y\312\377\202_y\311\377"
450  "\1^y\310\377\202]y\307\377\12[y\307\377[y\305\377Zx\305\377Yy\304\377"
451  "Xx\303\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0"
452  "\0\2\0\0\0\26\0\0\0=\0\0\0\377\205\226\235\374\313\202Om\271\377\202"
453  "fz\320\377\7ez\316\377cz\316\377cz\315\377bz\315\377az\313\377ay\313"
454  "\377`y\312\377\202_y\311\377\1^y\310\377\202]y\307\377\12[y\306\377["
455  "y\305\377Zy\305\377Yy\304\377Xx\303\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0"
456  "\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\204\226\235"
457  "\374\313\202Om\271\377\1g{\321\377\202fz\320\377\4ez\316\377cz\316\377"
458  "cy\315\377by\315\377\202ay\313\377\1`y\313\377\202_y\311\377\15^y\310"
459  "\377]y\310\377]y\307\377[y\307\377[y\305\377Zy\305\377Yx\304\377Xx\303"
460  "\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\5\0\0\0\2\0"
461  "\0\0\26\0\0\0<\0\0\0\377{\201\317\323\202\226\235\374\313\202Om\271\377"
462  "\13h{\321\377gz\320\377fz\320\377fz\317\377ez\316\377dz\316\377cz\315"
463  "\377bz\315\377ay\313\377az\313\377`y\313\377\202_y\311\377\15^y\310\377"
464  "]y\310\377\\y\307\377[y\307\377[y\305\377Zy\305\377Yy\304\377Kf\246\377"
465  "\0\0\0\377\0\0\0K\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\6\0\0\0\2\0\0\0"
466  "\24\0\0\0:\12\13\26\363RV\212\340{\201\317\323\202Om\271\377\14h{\322"
467  "\377h{\321\377gz\320\377fz\320\377fz\317\377ez\316\377cz\316\377cz\315"
468  "\377by\315\377az\313\377ay\313\377`y\312\377\202_y\311\377\1^y\310\377"
469  "\202]y\307\377\12[y\306\377[y\305\377Zy\305\377Lf\247\3775Hu\377\14\21"
470  "\34\377\0\0\0J\0\0\0+\0\0\0\14\0\0\0\1\235\0\0\0\0\5\0\0\0\2\0\0\0\22"
471  "\0\0\0""8\36\40B\341\12\12\26\363\230\0\0\0\377\6\14\21\34\377\"/L\377"
472  "\0\0\0H\0\0\0(\0\0\0\13\0\0\0\1\235\0\0\0\0\6\0\0\0\2\0\0\0\20\0\0\0"
473  ".\0\0\0D\0\0\0I\0\0\0K\226\0\0\0L\7\0\0\0K\0\0\0J\0\0\0I\0\0\0;\0\0\0"
474  "\37\0\0\0\10\0\0\0\1\235\0\0\0\0\5\0\0\0\2\0\0\0\12\0\0\0\32\0\0\0&\0"
475  "\0\0*\230\0\0\0,\5\0\0\0*\0\0\0(\0\0\0\36\0\0\0\17\0\0\0\4\236\0\0\0"
476  "\0\5\0\0\0\1\0\0\0\3\0\0\0\10\0\0\0\12\0\0\0\13\230\0\0\0\14\202\0\0"
477  "\0\13\3\0\0\0\10\0\0\0\4\0\0\0\1\243\0\0\0\0\230\0\0\0\1\206\0\0\0\0"};
478 
479 
480 
481  return local_pixstream;
482 }
483 
484 /*-------- end ../sfi/sfidl generated code --------*/
485 
486 
Definition: bsecxxmodule.hh:76
Definition: bsecxxvalue.hh:13
Definition: sfiparams.hh:63
Definition: sfiparams.hh:68
Definition: standardsaturator.genidl.hh:69
Definition: sficxx.hh:168
Definition: bsecxxmodule.hh:92
Definition: standardsaturator.genidl.hh:104
Definition: bsecxxbase.hh:14