Example #1
0
int
Swig_MembergetToFunction(Node *n, String *classname, int flags) {
  String   *name;
  ParmList *parms;
  SwigType *t;
  SwigType *ty;
  SwigType *type;
  String   *membername;
  String   *mangled;
  String   *self = 0;

  if (flags & CWRAP_SMART_POINTER) {
    self = NewString("(*this)->");
  }

  name = Getattr(n,"name");
  type = Getattr(n,"type");

  membername = Swig_name_member(classname, Swig_name_get(name));
  mangled = Swig_name_mangle(membername);

  t = NewString(classname);
  SwigType_add_pointer(t);
  parms = NewParm(t,"self");
  Delete(t);

  ty = Swig_wrapped_var_type(type);
  if (flags & CWRAP_EXTEND) {
    String *code = Getattr(n,"code");
    if (code) {
      String *tmp = NewStringf("%s(%s)", mangled, ParmList_str(parms));
      String *s = SwigType_str(ty,tmp);
      Delete(tmp);
      Printv(s,code,"\n",NIL);
      Setattr(n,"wrap:code",s);
      Delete(s);
    }
    Setattr(n,"wrap:action", Swig_cresult(ty,"result",Swig_cfunction_call(mangled,parms)));
  } else {
    Setattr(n,"wrap:action", Swig_cresult(ty,"result",Swig_cmemberget_call(name,type,self)));
  }
  Setattr(n,"type",ty);
  Setattr(n,"parms", parms);
  Delete(parms);
  Delete(ty);
  Delete(membername);
  Delete(mangled);
  return SWIG_OK;
}
int Swig_MembergetToFunction(Node *n, String *classname, int flags) {
  String *name;
  ParmList *parms;
  SwigType *t;
  SwigType *ty;
  SwigType *type;
  String *membername;
  String *mangled;
  String *self = 0;
  String *gname;

  int varcref = flags & CWRAP_NATURAL_VAR;

  if (flags & CWRAP_SMART_POINTER) {
    if (checkAttribute(n, k_storage, k_static)) {
      Node *sn = Getattr(n, k_cplusstaticbase);
      String *base = Getattr(sn, k_name);
      self = NewStringf("%s::", base);
    } else {
      self = NewString("(*this)->");
    }
  }

  name = Getattr(n, k_name);
  type = Getattr(n, k_type);

  gname = Swig_name_get(name);
  membername = Swig_name_member(classname, gname);
  mangled = Swig_name_mangle(membername);

  t = NewString(classname);
  SwigType_add_pointer(t);
  parms = NewParm(t, k_self);
  Setattr(parms, k_self, "1");
  Setattr(parms, k_hidden, "1");
  Delete(t);

  ty = Swig_wrapped_member_var_type(type, varcref);
  if (flags & CWRAP_EXTEND) {
    String *call;
    String *cres;

    String *code = Getattr(n, k_code);
    if (code) {
      Swig_add_extension_code(n, mangled, parms, ty, code, cparse_cplusplus, k_self);
    }
    call = Swig_cfunction_call(mangled, parms);
    cres = Swig_cresult(ty, k_result, call);
    Setattr(n, k_wrapaction, cres);
    Delete(cres);
    Delete(call);
  } else {
    String *call = Swig_cmemberget_call(name, type, self, varcref);
    String *cres = Swig_cresult(ty, k_result, call);
    Setattr(n, k_wrapaction, cres);
    Delete(call);
    Delete(cres);
  }
  Setattr(n, k_type, ty);
  Setattr(n, k_parms, parms);
  Delete(parms);
  Delete(ty);
  Delete(membername);
  Delete(gname);
  Delete(mangled);

  return SWIG_OK;
}
Example #3
0
int Swig_MembergetToFunction(Node *n, String *classname, int flags) {
    String *name;
    ParmList *parms;
    SwigType *t;
    SwigType *ty;
    SwigType *type;
    String *membername;
    String *mangled;
    String *self = 0;
    String *gname;

    int varcref = flags & CWRAP_NATURAL_VAR;

    if (flags & CWRAP_SMART_POINTER) {
        if (checkAttribute(n, "storage", "static")) {
            Node *sn = Getattr(n, "cplus:staticbase");
            String *base = Getattr(sn, "name");
            self = NewStringf("%s::", base);
        } else {
            self = NewString("(*this)->");
        }
    }
    if (flags & CWRAP_ALL_PROTECTED_ACCESS) {
        self = NewStringf("darg->");
    }

    name = Getattr(n, "name");
    type = Getattr(n, "type");

    gname = Swig_name_get(name);
    membername = Swig_name_member(classname, gname);
    mangled = Swig_name_mangle(membername);

    t = NewString(classname);
    SwigType_add_pointer(t);
    parms = NewParm(t, "self");
    Setattr(parms, "self", "1");
    Setattr(parms, "hidden","1");
    Delete(t);

    ty = Swig_wrapped_member_var_type(type, varcref);
    if (flags & CWRAP_EXTEND) {
        String *call;
        String *cres;

        String *code = Getattr(n, "code");
        if (code) {
            /* I don't think this ever gets run - WSF */
            Swig_add_extension_code(n, mangled, parms, ty, code, cparse_cplusplus, "self");
        }
        call = Swig_cfunction_call(mangled, parms);
        cres = Swig_cresult(ty, "result", call);
        Setattr(n, "wrap:action", cres);
        Delete(cres);
        Delete(call);
    } else {
        String *call = Swig_cmemberget_call(name, type, self, varcref);
        String *cres = Swig_cresult(ty, "result", call);
        Setattr(n, "wrap:action", cres);
        Delete(call);
        Delete(cres);
    }
    Setattr(n, "type", ty);
    Setattr(n, "parms", parms);
    Delete(parms);
    Delete(ty);
    Delete(membername);
    Delete(gname);
    Delete(mangled);

    return SWIG_OK;
}