Esempio n. 1
0
class Hybrid(object):
  """Python 'Outer' clone that delegates 'Middle'(c++) work to bindings."""

  def __init__(self, fieldA=0.0,
               mid1=None, mid2=None,
               in1=None, in2=None):
    self.fieldA = fieldA
    if mid1 is not None:
      if in1 is not None:
        inner = Inner(in1, in2)
        self.middle = Middle(mid1, mid2, inner)
      else:
        self.middle = Middle(mid1, mid2)
    else:
      self.middle = Middle()

  def writeToFile(self, f):
    proto = OuterProto.new_message()
    self.write(proto)
    proto.write(f)

  def write(self, proto):
    proto.out1 = self.fieldA
    middle = proto.middle
    # This is using the C++ Middle implementation to write to the MiddleProto inside
    # proto.
    self.middle.write(middle, proto)

  def readFromFile(self, f):
    proto = OuterProto.read(f)
    self.read(proto)

  def read(self, proto):
    self.fieldA = proto.out1
    self.middle.read(proto.middle, proto)
Esempio n. 2
0
 def __init__(self, fieldA=0.0,
              mid1=None, mid2=None,
              in1=None, in2=None):
   self.fieldA = fieldA
   if mid1 is not None:
     if in1 is not None:
       inner = Inner(in1, in2)
       self.middle = Middle(mid1, mid2, inner)
     else:
       self.middle = Middle(mid1, mid2)
   else:
     self.middle = Middle()