コード例 #1
0
ファイル: btSimpleBroadphase.cpp プロジェクト: 1vanK/Urho3D
btBroadphaseProxy*	btSimpleBroadphase::createProxy(  const btVector3& aabbMin,  const btVector3& aabbMax,int shapeType,void* userPtr , int collisionFilterGroup, int collisionFilterMask, btDispatcher* /*dispatcher*/)
{
	if (m_numHandles >= m_maxHandles)
	{
		btAssert(0);
		return 0; //should never happen, but don't let the game crash ;-)
	}
	btAssert(aabbMin[0]<= aabbMax[0] && aabbMin[1]<= aabbMax[1] && aabbMin[2]<= aabbMax[2]);

	int newHandleIndex = allocHandle();
	btSimpleBroadphaseProxy* proxy = new (&m_pHandles[newHandleIndex])btSimpleBroadphaseProxy(aabbMin,aabbMax,shapeType,userPtr,collisionFilterGroup,collisionFilterMask);

	return proxy;
}
コード例 #2
0
ファイル: winio.c プロジェクト: primitivorm/kaffe
/*
 * Threaded socket accept.
 */
static
int
Naccept(int fd, struct sockaddr* addr, size_t* len)
{
    int nfd;

    nfd = allocHandle();
    if (nfd == -1) {
        return (-1);
    }

    fhand[nfd].sock = WSAAccept(fhand[fd].sock, addr, len, NULL, 0);

    if (fhand[nfd].sock == INVALID_SOCKET) {
        freeHandle(nfd);
        return (-1);
    }
    return (nfd);
}
コード例 #3
0
ファイル: winio.c プロジェクト: primitivorm/kaffe
/*
 * Threaded file open.
 */
static
int
Fopen(const char* path, int mode)
{
    int fd;

    fd = allocHandle();
    if (fd == -1) {
        return (-1);
    }
    switch (mode) {
    case JOPEN_READ:
        fhand[fd].hand = CreateFile(path, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE,
                                    NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
        break;
    case JOPEN_WRITE:
        fhand[fd].hand = CreateFile(path, GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,
                                    NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
        break;
    case JOPEN_APPEND:
        fhand[fd].hand = CreateFile(path, GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,
                                    NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
        break;
    case JOPEN_READWRITE:
        fhand[fd].hand = CreateFile(path, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,
                                    NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
        break;
    default:
        freeHandle(fd);
        return (-1);
    }

    // printf("Opening %s on %d %x\n", path, fd, fhand[fd].hand);

    if (fhand[fd].hand == INVALID_HANDLE_VALUE) {
        freeHandle(fd);
        return (-1);
    }
    else {
        return (fd);
    }
}
コード例 #4
0
ファイル: block.c プロジェクト: atiselsts/osw
static void *blkOpen(const char *path, fsMode_t mode)
{
    struct fsFileControlBlock *fcb;

    if (mode & FS_RDWR || !(mode & (FS_READ | FS_APPEND)) ||
        (mode & FS_READ && mode & FS_APPEND))
    {
        fsSetError(FS_ERR_INVAL);
        return NULL;
    }

    fcb = fsBlockOpenFile(path, mode & FS_APPEND);
    if (fcb)
    {
        struct fsBlockHandle *handle = allocHandle(fcb);
        if (handle)
        {
            handle->mode = mode;

            mos_mutex_lock(&fcb->mutex);
            if (mode & FS_READ) /* Read mode */
            {
                handle->pos     = 0;
                handle->curr    = fcb->first;
                handle->readEnd = 0;
            }
            else /* Write mode */
            {
                /* Traverse blocks until the last one */
                seekBlock(handle, fcb->size);

                handle->pos = fcb->size;
            }
            mos_mutex_unlock(&fcb->mutex);
        }
        else
            fsBlockCloseFile(fcb);
        return handle;
    }
    else
        return NULL;
}
コード例 #5
0
ファイル: winio.c プロジェクト: primitivorm/kaffe
/*
 * Threaded socket create.
 */
static
int
Nsocket(int stream)
{
    int fd;

    fd = allocHandle();
    if (fd == -1) {
        return (-1);
    }
    if (stream == 0) {
        fhand[fd].sock = WSASocket(AF_INET, SOCK_DGRAM, 0, NULL, 0, 0);
    }
    else {
        fhand[fd].sock = WSASocket(AF_INET, SOCK_STREAM, 0, NULL, 0, 0);
    }
    if (fhand[fd].sock == INVALID_SOCKET) {
        freeHandle(fd);
        return (-1);
    }
    else {
        return (fd);
    }
}