예제 #1
0
def renderTypedefSequence(out, typedef):
    assert (not typedef.extended_attributes)
    assert (not typedef.type_extended_attributes)

    template = { \
      'type' : typedef.name,
      'name' : instanceName(typedef.name),
      't' : emitType(typedef.type.t)}

    print >> out, "#define CSSOM_%(type)s_acquire(%(name)s) \\" % template
    print >> out, "  (CSSOM_Sequence_acquire((%(name)s)))" % template
    print >> out
    print >> out
    print >> out
    print >> out, "#define CSSOM_%(type)s_release(%(name)s, index) \\" % template
    print >> out, "  (CSSOM_Sequence_release((%(name)s)))" % template
    print >> out
    print >> out
    print >> out
    print >> out, "#define CSSOM_%(type)s_length(%(name)s) \\" % template
    print >> out, "  (CSSOM_Sequence_length((%(name)s)))" % template
    print >> out
    print >> out
    print >> out
    print >> out, "#define CSSOM_%(type)s_at(%(name)s, index) \\" % template
    print >> out, "  ((%(t)s)CSSOM_Sequence_at((%(name)s), (index)))" % template
예제 #2
0
def renderTypedefSequence(out, typedef):
  assert(not typedef.extended_attributes)
  assert(not typedef.type_extended_attributes)

  template = { \
    'type' : typedef.name,
    'name' : instanceName(typedef.name),
    't' : emitType(typedef.type.t)}

  print >>out, "#define CSSOM_%(type)s_acquire(%(name)s) \\" % template
  print >>out, "  (CSSOM_Sequence_acquire((%(name)s)))" % template
  print >>out
  print >>out
  print >>out
  print >>out, "#define CSSOM_%(type)s_release(%(name)s, index) \\" % template
  print >>out, "  (CSSOM_Sequence_release((%(name)s)))" % template
  print >>out
  print >>out
  print >>out
  print >>out, "#define CSSOM_%(type)s_length(%(name)s) \\" % template
  print >>out, "  (CSSOM_Sequence_length((%(name)s)))" % template
  print >>out
  print >>out
  print >>out
  print >>out, "#define CSSOM_%(type)s_at(%(name)s, index) \\" % template
  print >>out, "  ((%(t)s)CSSOM_Sequence_at((%(name)s), (index)))" % template
예제 #3
0
def renderInterface(out, interface, definitions):
    assert (not interface.extended_attributes)
    assert (not interface.callback)

    template = { \
      'iface' : interface.name,
      'inst' : instanceName(interface.name) }

    if not interface.parent:
        print >> out, "void CSSOM_%(iface)s_acquire(" % template
        print >> out, "  CSSOM_%(iface)s * %(inst)s);" % template

        print >> out
        print >> out
        print >> out
        print >> out, "void CSSOM_%(iface)s_release(" % template
        print >> out, "  CSSOM_%(iface)s * %(inst)s);" % template
    else:
        template['parent'] = interface.parent

        print >> out, "#define CSSOM_%(iface)s_acquire(%(inst)s) \\" % template
        print >>out, "  CSSOM_%(parent)s_acquire((CSSOM_%(parent)s*)(%(inst)s))" % \
          template

        print >> out
        print >> out
        print >> out
        print >> out, "#define CSSOM_%(iface)s_release(%(inst)s) \\" % template
        print >>out, "  CSSOM_%(parent)s_release((CSSOM_%(parent)s*)(%(inst)s))" % \
          template

    for member in interface.members:
        renderInterfaceMember(out, interface, member, definitions)
예제 #4
0
def renderInterface(out, interface, definitions):
  assert(not interface.extended_attributes)
  assert(not interface.callback)

  template = { \
    'iface' : interface.name,
    'inst' : instanceName(interface.name) }

  if not interface.parent:
    print >>out, "void CSSOM_%(iface)s_acquire(" % template
    print >>out, "  CSSOM_%(iface)s * %(inst)s);" % template

    print >>out
    print >>out
    print >>out
    print >>out, "void CSSOM_%(iface)s_release(" % template
    print >>out, "  CSSOM_%(iface)s * %(inst)s);" % template
  else:
    template['parent'] = interface.parent

    print >>out, "#define CSSOM_%(iface)s_acquire(%(inst)s) \\" % template
    print >>out, "  CSSOM_%(parent)s_acquire((CSSOM_%(parent)s*)(%(inst)s))" % \
      template

    print >>out
    print >>out
    print >>out
    print >>out, "#define CSSOM_%(iface)s_release(%(inst)s) \\" % template
    print >>out, "  CSSOM_%(parent)s_release((CSSOM_%(parent)s*)(%(inst)s))" % \
      template

  for member in interface.members:
    renderInterfaceMember(out, interface, member, definitions)
예제 #5
0
def attributeSetterSignature(interface, attribute):
    return "CSSOM_%(iface)s_%(setter)s" \
      "(CSSOM_%(iface)s * %(inst)s, %(type)s %(attr)s)" % { \
      "iface" : interface.name,
      "inst" : instanceName(interface.name),
      "setter" : attributeSetterName(interfaceMemberName(interface, attribute)),
      "type" : emitType(attribute.type),
      "attr" : attribute.name }
예제 #6
0
def attributeSetterSignature(interface, attribute):
  return "CSSOM_%(iface)s_%(setter)s" \
    "(CSSOM_%(iface)s * %(inst)s, %(type)s %(attr)s)" % { \
    "iface" : interface.name,
    "inst" : instanceName(interface.name),
    "setter" : attributeSetterName(interfaceMemberName(interface, attribute)),
    "type" : emitType(attribute.type),
    "attr" : attribute.name }
예제 #7
0
def operationSignature(interface, operation):
  inst = "CSSOM_%(iface)s * %(inst)s" % {
    "iface" : interface.name,
    "inst" : instanceName(interface.name)}

  if isGetterOperation(operation): inst = "const %s" % inst

  return "CSSOM_%(iface)s_%(op)s(%(inst)s, %(args)s)" % { \
    "iface" : interface.name,
    "inst" : inst,
    "op" : interfaceMemberName(interface, operation),
    "args" : ", ".join([emitArgument(arg) for arg in operation.arguments])}
예제 #8
0
def operationSignature(interface, operation):
    inst = "CSSOM_%(iface)s * %(inst)s" % {
        "iface": interface.name,
        "inst": instanceName(interface.name)
    }

    if isGetterOperation(operation): inst = "const %s" % inst

    return "CSSOM_%(iface)s_%(op)s(%(inst)s, %(args)s)" % { \
      "iface" : interface.name,
      "inst" : inst,
      "op" : interfaceMemberName(interface, operation),
      "args" : ", ".join([emitArgument(arg) for arg in operation.arguments])}
예제 #9
0
def renderInterface(out, interface, definitions):
    assert (not interface.extended_attributes)
    assert (not interface.callback)

    classDef = interface.name
    if interface.parent:        classDef = "%s : public cssom::%s" % ( \
classDef, interface.parent)

    template = {'name': interface.name}
    print >> out, "class %s {" % classDef
    print >> out, "  public:"
    print >> out, "    typedef CSSOM_%(name)s * Impl;" % template
    print >> out

    if interface.parent:
        template.update({
            'inst': instanceName(interface.parent),
            'parent': interface.parent
        })
        print >>out, "    static cssom::%(name)s cast(" \
          "const cssom::%(parent)s & %(inst)s);" % template
        print >>out, "    static cssom::%(name)s & cast(" \
          "cssom::%(parent)s & %(inst)s);" % template
        print >> out

    print >> out, "    %(name)s();" % template
    print >> out, "    explicit %(name)s(cssom::%(name)s::Impl impl);" % template
    if not interface.parent:
        print >> out, "    %(name)s(const cssom::%(name)s &copy);" % template
        print >> out, "    ~%(name)s();" % template
        print >> out
        print >>out, "    cssom::%(name)s& operator=(" \
          "const cssom::%(name)s &rhs);" % template
        print >> out
        print >>out, "    bool operator==(" \
          "const cssom::%(name)s &rhs) const;" % template
        print >> out
        print >> out, "    bool isNull() const;"
        print >> out
        print >> out, "    void swap(cssom::%(name)s &rhs);" % template

    renderSpecialOperations(out, interface.members)

    for member in interface.members:
        renderInterfaceMember(out, interface, member, definitions)

    if not interface.parent:
        print >> out
        print >> out, "  protected:"
        print >> out, "    cssom::%(name)s::Impl _impl;" % template
    print >> out, "};"
예제 #10
0
def renderInterface(out, interface, definitions):
  assert(not interface.extended_attributes)
  assert(not interface.callback)

  classDef = interface.name
  if interface.parent: classDef = "%s : public cssom::%s" % ( \
    classDef, interface.parent)

  template = { 'name' : interface.name }
  print >>out, "class %s {" % classDef
  print >>out, "  public:"
  print >>out, "    typedef CSSOM_%(name)s * Impl;" % template;
  print >>out

  if interface.parent:
    template.update({
      'inst' : instanceName(interface.parent),
      'parent' : interface.parent})
    print >>out, "    static cssom::%(name)s cast(" \
      "const cssom::%(parent)s & %(inst)s);" % template
    print >>out, "    static cssom::%(name)s & cast(" \
      "cssom::%(parent)s & %(inst)s);" % template
    print >>out

  print >>out, "    %(name)s();" % template
  print >>out, "    explicit %(name)s(cssom::%(name)s::Impl impl);" % template
  if not interface.parent:
    print >>out, "    %(name)s(const cssom::%(name)s &copy);" % template
    print >>out, "    ~%(name)s();" % template
    print >>out
    print >>out, "    cssom::%(name)s& operator=(" \
      "const cssom::%(name)s &rhs);" % template
    print >>out
    print >>out, "    bool operator==(" \
      "const cssom::%(name)s &rhs) const;" % template
    print >>out
    print >>out, "    bool isNull() const;"
    print >>out
    print >>out, "    void swap(cssom::%(name)s &rhs);" % template

  renderSpecialOperations(out, interface.members)

  for member in interface.members:
    renderInterfaceMember(out, interface, member, definitions)
  
  if not interface.parent:
    print >>out
    print >>out, "  protected:"
    print >>out, "    cssom::%(name)s::Impl _impl;" % template
  print >>out, "};"
예제 #11
0
def attributeGetterSignature(interface, attribute):
    return "CSSOM_%(iface)s_%(attr)s(const CSSOM_%(iface)s * %(inst)s)" % { \
      "attr" : interfaceMemberName(interface, attribute),
      "inst" : instanceName(interface.name),
      "iface" : interface.name }
예제 #12
0
def renderInterface(out, interface, definitions):
  template = { "name" : interface.name }

  if not interface.parent:
    print >>out
    print >>out
    print >>out
    print >>out, "%(name)s::%(name)s() :" % template
    print >>out, "  _impl(NULL)"
    print >>out, "{}"

    print >>out
    print >>out
    print >>out
    print >>out, "%(name)s::%(name)s(cssom::%(name)s::Impl impl) :" % template
    print >>out, "  _impl(impl)"
    print >>out, "{"
    print >>out, "  CSSOM_%(name)s_acquire(_impl);" % template
    print >>out, "}"

    print >>out
    print >>out
    print >>out
    print >>out, "%(name)s::%(name)s(const cssom::%(name)s &copy) :" % template
    print >>out, "  _impl(copy._impl)"
    print >>out, "{"
    print >>out, "  CSSOM_%(name)s_acquire(_impl);" % template
    print >>out, "}"

    print >>out
    print >>out
    print >>out
    print >>out, "%(name)s::~%(name)s() {" % template
    print >>out, "  CSSOM_%(name)s_release(_impl);" % template
    print >>out, "}"

    print >>out
    print >>out
    print >>out
    print >>out, "cssom::%(name)s& %(name)s::operator=(" % template
    print >>out, "  const cssom::%(name)s &rhs)" % template
    print >>out, "{"
    print >>out, "  if (&rhs == this) return *this;"
    print >>out
    print >>out, "  cssom::%(name)s(rhs).swap(*this);" % template
    print >>out
    print >>out, "  return *this;"
    print >>out, "}"

    print >>out
    print >>out
    print >>out
    print >>out, "bool %(name)s::operator==(" % template
    print >>out, "  const cssom::%(name)s &rhs) const" % template
    print >>out, "{"
    print >>out, "  return _impl == rhs._impl;"
    print >>out, "}"

    print >>out
    print >>out
    print >>out
    print >>out, "bool %(name)s::isNull() const {" % template
    print >>out, "  return _impl == NULL;"
    print >>out, "}"

    print >>out
    print >>out
    print >>out
    print >>out, "void %(name)s::swap(cssom::%(name)s &rhs) {" % template
    print >>out, "  std::swap(_impl, rhs._impl);"
    print >>out, "}"

  else:
    template.update({
      'parent' : interface.parent,
      'inst': instanceName(interface.parent)})

    print >>out
    print >>out
    print >>out
    print >>out, "%(name)s %(name)s::cast(" % template
    print >>out, "  const cssom::%(parent)s & %(inst)s)" % template
    print >>out, "{"
    print >>out, "#ifndef NDEBUG"
    print >>out, "  cssom::checkCast<cssom::%(parent)s, cssom::%(name)s>(" \
      "%(inst)s);" % template
    print >>out, "#endif // NDEBUG"
    print >>out, "  return static_cast<const cssom::%(name)s &>(" \
      "%(inst)s);" % template
    print >>out, "}"

    print >>out
    print >>out
    print >>out
    print >>out, "%(name)s & %(name)s::cast(" % template
    print >>out, "  cssom::%(parent)s & %(inst)s)" % template
    print >>out, "{"
    print >>out, "#ifndef NDEBUG"
    print >>out, "  cssom::checkCast<cssom::%(parent)s, cssom::%(name)s>(" \
      "%(inst)s);" % template
    print >>out, "#endif // NDEBUG"
    print >>out, "  return static_cast<cssom::%(name)s &>(" \
      "%(inst)s);" % template
    print >>out, "}"

    print >>out
    print >>out
    print >>out
    print >>out, "%(name)s::%(name)s() :" % template
    print >>out, "  %(parent)s()" % template
    print >>out, "{}"

    print >>out
    print >>out
    print >>out
    print >>out, "%(name)s::%(name)s(cssom::%(name)s::Impl impl) :" % template
    print >>out, "  %(parent)s((cssom::%(parent)s::Impl)impl)" % template
    print >>out, "{}"

  renderSpecialOperations(out, interface)

  for member in interface.members:
    renderInterfaceMember(out, interface, member, definitions)
예제 #13
0
def attributeGetterSignature(interface, attribute):
  return "CSSOM_%(iface)s_%(attr)s(const CSSOM_%(iface)s * %(inst)s)" % { \
    "attr" : interfaceMemberName(interface, attribute),
    "inst" : instanceName(interface.name),
    "iface" : interface.name }