Esempio n. 1
0
/*! Adds member definition \a md to the list of all members of this file */
void FileDef::insertMember(MemberDef *md)
{
  if (md->isHidden()) return;
  //printf("%s:FileDef::insertMember(%s (=%p) list has %d elements)\n",
  //    name().data(),md->name().data(),md,allMemberList.count());
  MemberList *allMemberList = getMemberList(MemberList::allMembersList);
  if (allMemberList && allMemberList->findRef(md)!=-1)  // TODO optimize the findRef!
  { 
    return;
  }

  if (allMemberList==0)
  {
    allMemberList = new MemberList(MemberList::allMembersList);;
    m_memberLists.append(allMemberList);
  }
  allMemberList->append(md); 
  //::addFileMemberNameToIndex(md);
  switch (md->memberType())
  {
    case MemberDef::Variable:     
    case MemberDef::Property:     
      addMemberToList(MemberList::decVarMembers,md);
      addMemberToList(MemberList::docVarMembers,md);
      break;
    case MemberDef::Function: 
      addMemberToList(MemberList::decFuncMembers,md);
      addMemberToList(MemberList::docFuncMembers,md);
      break;
    case MemberDef::Typedef:      
      addMemberToList(MemberList::decTypedefMembers,md);
      addMemberToList(MemberList::docTypedefMembers,md);
      break;
    case MemberDef::Enumeration:  
      addMemberToList(MemberList::decEnumMembers,md);
      addMemberToList(MemberList::docEnumMembers,md);
      break;
    case MemberDef::EnumValue:    // enum values are shown inside their enums
      break;
    case MemberDef::Define:       
      addMemberToList(MemberList::decDefineMembers,md);
      addMemberToList(MemberList::docDefineMembers,md);
      break;
    default:
       err("FileDef::insertMembers(): "
           "member `%s' with class scope `%s' inserted in file scope `%s'!\n",
           md->name().data(),
           md->getClassDef() ? md->getClassDef()->name().data() : "<global>",
           name().data());
  }
  //addMemberToGroup(md,groupId);
}
Esempio n. 2
0
void NamespaceDef::insertMember(MemberDef *md)
{
    if (md->isHidden()) return;
    MemberList *allMemberList = getMemberList(MemberListType_allMembersList);
    if (allMemberList==0)
    {
        allMemberList = new MemberList(MemberListType_allMembersList);
        m_memberLists.append(allMemberList);
    }
    allMemberList->append(md);
    if (m_allMembersDict==0)
    {
        m_allMembersDict = new MemberSDict;
    }
    //printf("%s::m_allMembersDict->append(%s)\n",name().data(),md->localName().data());
    m_allMembersDict->append(md->localName(),md);
    //::addNamespaceMemberNameToIndex(md);
    //static bool sortBriefDocs=Config_getBool("SORT_BRIEF_DOCS");
    switch(md->memberType())
    {
    case MemberType_Variable:
        addMemberToList(MemberListType_decVarMembers,md);
        addMemberToList(MemberListType_docVarMembers,md);
        break;
    case MemberType_Function:
        addMemberToList(MemberListType_decFuncMembers,md);
        addMemberToList(MemberListType_docFuncMembers,md);
        break;
    case MemberType_Typedef:
        addMemberToList(MemberListType_decTypedefMembers,md);
        addMemberToList(MemberListType_docTypedefMembers,md);
        break;
    case MemberType_Enumeration:
        addMemberToList(MemberListType_decEnumMembers,md);
        addMemberToList(MemberListType_docEnumMembers,md);
        break;
    case MemberType_EnumValue:
        break;
    case MemberType_Define:
        addMemberToList(MemberListType_decDefineMembers,md);
        addMemberToList(MemberListType_docDefineMembers,md);
        break;
    default:
        err("NamespaceDef::insertMembers(): "
            "member `%s' with class scope `%s' inserted in namespace scope `%s'!\n",
            md->name().data(),
            md->getClassDef() ? md->getClassDef()->name().data() : "",
            name().data());
    }
}
Esempio n. 3
0
/*Determine packet and act accordingly*/
int dissectPacket(void* packet, int socket_fd) {

	/*Grab type of packet from header*/
  uint16_t headerType;

  headerType = ( (struct data_packet*)packet  )->head.packet_type;

  if(headerType == PACKET_TYPE_DATA) {
    struct data_packet* data_pack = (struct data_packet*)packet;


	/*Assume dest is this*/

	/* I'm definitely dest so write to me */
	tap_write(tap_fd, data_pack->datagram, data_pack->head.packet_length);


  } else if(headerType == PACKET_TYPE_LEAVE) {
    broadcast(routesList, packet);

  } else if(headerType == PACKET_TYPE_QUIT) {
    broadcast(routesList, packet);
    globalStatus = 0;

  } else if(headerType == PACKET_TYPE_LINKSTATE) {
    struct linkstate_packet* lstate_pack = (struct linkstate_packet*)packet;
    addMemberToList(members, lstate_pack->linkstate_head);

  } else {
    fprintf(stderr, "Wrong packet type: %u\n", headerType);
    return -1;
  }

  return 1;
}
Esempio n. 4
0
bool GroupDef::insertMember(MemberDef *md,bool docOnly)
{
  if (md->isHidden()) return FALSE;
  //printf("GroupDef(%s)::insertMember(%s)\n", title.data(), md->name().data());
  MemberNameInfo *mni=0;
  if ((mni=(*allMemberNameInfoSDict)[md->name()]))
  { // member with this name already found
    MemberNameInfoIterator srcMnii(*mni); 
    MemberInfo *srcMi;
    for ( ; (srcMi=srcMnii.current()) ; ++srcMnii )
    {
      MemberDef *srcMd = srcMi->memberDef;
      if (srcMd==md) return FALSE; // already added before!

      bool sameScope = srcMd->getOuterScope()==md->getOuterScope() || // same class or namespace
          // both inside a file => definition and declaration do not have to be in the same file
           (srcMd->getOuterScope()->definitionType()==Definition::TypeFile &&
            md->getOuterScope()->definitionType()==Definition::TypeFile); 

      LockingPtr<ArgumentList> srcMdAl  = srcMd->argumentList();
      LockingPtr<ArgumentList> mdAl     = md->argumentList();
      LockingPtr<ArgumentList> tSrcMdAl = srcMd->templateArguments();
      LockingPtr<ArgumentList> tMdAl    = md->templateArguments();
      
      if (srcMd->isFunction() && md->isFunction() && // both are a function
          ((tSrcMdAl.pointer()==0 && tMdAl.pointer()==0) || 
           (tSrcMdAl.pointer()!=0 && tMdAl.pointer()!=0 && tSrcMdAl->count()==tMdAl->count())
          ) &&       // same number of template arguments
          matchArguments2(srcMd->getOuterScope(),srcMd->getFileDef(),srcMdAl.pointer(),
                          md->getOuterScope(),md->getFileDef(),mdAl.pointer(),
                          TRUE
                         ) && // matching parameters
          sameScope // both are found in the same scope
         )
      {
        if (srcMd->getGroupAlias()==0) 
        {
          md->setGroupAlias(srcMd); 
        }
        else
        {
          md->setGroupAlias(srcMd->getGroupAlias()); 
        }
        return FALSE; // member is the same as one that is already added
      }
    }
    mni->append(new MemberInfo(md,md->protection(),md->virtualness(),FALSE));
  }
  else
  {
    mni = new MemberNameInfo(md->name());
    mni->append(new MemberInfo(md,md->protection(),md->virtualness(),FALSE));
    allMemberNameInfoSDict->append(mni->memberName(),mni);
  }
  //printf("Added member!\n");
  allMemberList->append(md); 
  switch(md->memberType())
  {
    case MemberDef::Variable:     
      if (!docOnly)
      {
        addMemberToList(MemberList::decVarMembers,md);
      }
      addMemberToList(MemberList::docVarMembers,md);
      break;
    case MemberDef::Function: 
      if (!docOnly)
      {
        addMemberToList(MemberList::decFuncMembers,md);
      }
      addMemberToList(MemberList::docFuncMembers,md);
      break;
    case MemberDef::Typedef:      
      if (!docOnly)
      {
        addMemberToList(MemberList::decTypedefMembers,md);
      }
      addMemberToList(MemberList::docTypedefMembers,md);
      break;
    case MemberDef::Enumeration:  
      if (!docOnly)
      {
        addMemberToList(MemberList::decEnumMembers,md);
      }
      addMemberToList(MemberList::docEnumMembers,md);
      break;
    case MemberDef::EnumValue:    
      if (!docOnly)
      {
        addMemberToList(MemberList::decEnumValMembers,md);
      }
      addMemberToList(MemberList::docEnumValMembers,md);
      break;
    case MemberDef::Define:       
      if (!docOnly)
      {
        addMemberToList(MemberList::decDefineMembers,md);
      }
      addMemberToList(MemberList::docDefineMembers,md);
      break;
    case MemberDef::Signal:       
      if (!docOnly)
      {
        addMemberToList(MemberList::decSignalMembers,md);
      }
      addMemberToList(MemberList::docSignalMembers,md);
      break;
    case MemberDef::Slot:       
      if (md->protection()==Public)
      {
        if (!docOnly)
        {
          addMemberToList(MemberList::decPubSlotMembers,md);
        }
        addMemberToList(MemberList::docPubSlotMembers,md);
      }
      else if (md->protection()==Protected)
      {
        if (!docOnly)
        {
          addMemberToList(MemberList::decProSlotMembers,md);
        }
        addMemberToList(MemberList::docProSlotMembers,md);
      }
      else
      {
        if (!docOnly)
        {
          addMemberToList(MemberList::decPriSlotMembers,md);
        }
        addMemberToList(MemberList::docPriSlotMembers,md);
      }
      break;
    case MemberDef::Event:       
      if (!docOnly)
      {
        addMemberToList(MemberList::decEventMembers,md);
      }
      addMemberToList(MemberList::docEventMembers,md);
      break;
    case MemberDef::Property:       
      if (!docOnly)
      {
        addMemberToList(MemberList::decPropMembers,md);
      }
      addMemberToList(MemberList::docPropMembers,md);
      break;
    case MemberDef::Friend:       
      if (!docOnly)
      {
        addMemberToList(MemberList::decFriendMembers,md);
      }
      addMemberToList(MemberList::docFriendMembers,md);
      break;
    default:
      err("GroupDef::insertMembers(): "
           "member `%s' (typeid=%d) with scope `%s' inserted in group scope `%s'!\n",
           md->name().data(),md->memberType(),
           md->getClassDef() ? md->getClassDef()->name().data() : "",
           name().data());
  }
  return TRUE;
}
void getMemberListByPhone(NODEDATA * value)
{
    if (checkStringMatch(value->member->phone))
        addMemberToList(value->member);
}
void getMemberListByAll(NODEDATA * value)
{
    addMemberToList(value->member);
}
Esempio n. 7
0
void newConnHandler(void* newConnection) {
  int remote_fd = (int) newConnection;


  struct AddressInfo localInfo;
  getLocalAddrInfo(remote_fd, &localInfo);

  struct AddressInfo remoteInfo;
  getRemoteAddrInfo(remote_fd, &remoteInfo);

  /*Check if member*/
   if(!checkForMember(members, &localInfo, &remoteInfo)) {
	   void *packet;
	   /*Get LinkStateNode*/
    uint16_t headerType = readPacketFromSock(remote_fd, &packet);


    if(headerType == PACKET_TYPE_LINKSTATE &&
        ((struct linkstate_packet *)packet)->num_neighbors == 1) {
    	/*Received proper linkstate packet with only 1 neighbor: us!*/
      struct linkstate_packet* link_pack = (struct linkstate_packet*)packet;

      /* Manipulate dest to include your mac address TODO  getlocalinfo */
      struct AddressInfo dest;
      getLocalAddrInfo(remote_fd, &dest);
      link_pack->linkstate_head->remote= dest;

      /* Reverse local & dest and add to membership list  TODO */
      /* Reverse local & dest and add to membership list  TODO */
      /* Reverse local & dest and add to membership list  TODO */

      struct LinkStateNode* linkstate = malloc(sizeof(struct LinkStateNode));
      linkstate->local = dest;
      linkstate->remote = link_pack->linkstate_head->local;
      linkstate->ID = getTime();
      linkstate->avg_RTT = 1;
      linkstate->next = NULL;

      /* Add client to Membership list */
      addMemberToList(members, linkstate);

      /* Send the unreversed but manipulated lstate pack back, but change source to you TODO */
      link_pack->source = link_pack->linkstate_head->local;
      sendPacketToSock(link_pack, remote_fd);

    }
    else {
    	printf("New connection sent packet other than linkstate. Dropping...\n");
      close(remote_fd);
    }

  }

  while(globalStatus) {
    void* packet;
    uint16_t headerType = readPacketFromSock(remote_fd, &packet);
    if(dissectPacket(packet, remote_fd) < 0) {
      printf("ERROR: Couldn't read packet properly..\n");
      break;
    }
  }

}