13.1.26.4 Valuetype Example

For example, consider the following IDL valuetype taken from the CORBA C++ Language Mapping Specification, June 1999, published by the Object Management Group (OMG):

// IDL
valuetype Example {
      short op1();
      long op2(in Example x);
 private short val1;
 public long val2;
 private string val3;
 private float val4;
 private Example val5;
};
The C++ mapping for this valuetype is:
// C++
class Example : public virtual ValueBase {
 public:
    virtual Short op1() = 0;
    virtual Long op2(Example*) = 0;
    virtual Long val2() const = 0;
    virtual void val2(Long) = 0;
    static Example* _downcast(ValueBase*);
protected:
   Example();
   virtual ~Example();
   virtual Short val1() const = 0;
   virtual void val1(Short) = 0;
   virtual const char* val3() const = 0;
   virtual void val3(char*) = 0;
   virtual void val3(const char*) = 0;
   virtual void val3(const String_var&) = 0;

   virtual Float val4() const = 0;
   virtual void val4(Float) = 0;
   virtual Example* val5() const = 0;
   virtual void val5(Example*) = 0;
private:
  // private and unimplemented
  void operator=(const Example&);
};
class OBV_Example : public virtual Example {
   public:
      virtual Long val2() const;
      virtual void val2(Long);
protected:
      OBV_Example();
      OBV_Example(Short init_val1, Long init_val2,
          const char* init_val3, Float init_val4,
          Example* init_val5);
      virtual ~OBV_Example();
      virtual Short val1() const;
      virtual void val1(Short);
      virtual const char* val3() const;
      virtual void val3(char*);
      virtual void val3(const char*);
      virtual void val3(const String_var&);
      virtual Float val4() const;
      virtual void val4(Float);
      virtual Example* val5() const;
      virtual void val5(Example*);
      // ...
};