qiFramework 1.6.9

Complete support of optional libqi type

  • In C++, optional type is boost::optional<T>
  • In qilang, optional type is Opt<T>
  • In Python, everywhere an Opt<T> is expected, either a T valuer or None can be used

Note

qilang C++ code generator (qicc) declares all struct fields of Opt type as optional fields, in order that compatibility with other versions of the struct where Opt fields are missing (typically older versions) is kept.

IDL example


            
             struct MyData // v1
x: Opt<int>
End

interface MyObject
fn action(data:MyData)
end

            
           

Then later we can add new data fields as long as they are optional without breaking the protocol compatibility:


            
             struct MyData // v2
x: Opt<int>
y: Opt<int>
End

            
           

Optional types can also be used as normal function parameters or returned value:


            
             interface MyObject
fn action(data:Opt<int>) -> Opt<int>
End