Sha256: 504c7d65133e6eca171c5f675a0d46ffed5e008cd77961993dd7237f566f13b2

Contents?: true

Size: 1.71 KB

Versions: 49

Compression:

Stored size: 1.71 KB

Contents

#include <Windows.h>

#include "entry.h"

#ifndef WDM_QUEUE_H
#define WDM_QUEUE_H

#ifdef __cplusplus
extern "C" {
#endif // __cplusplus

// ---------------------------------------------------------
// Types
// ---------------------------------------------------------

typedef enum {
    WDM_QUEUE_ITEM_TYPE_ERROR,
    WDM_QUEUE_ITEM_TYPE_DATA
} WDM_QueueItemType;

typedef struct {
    WDM_PEntryUserData user_data;
    BYTE buffer[WDM_BUFFER_SIZE];
} WDM_QueueItemData, *WDM_PQueueItemData;

typedef struct {
    VALUE exception_klass;
    LPSTR message;
} WDM_QueueItemError, *WDM_PQueueItemError;

typedef struct WDM_QueueItem {
    WDM_QueueItemType type;
    union {
        WDM_PQueueItemData data;
        WDM_PQueueItemError error;
    };
    struct WDM_QueueItem* next;
} WDM_QueueItem, *WDM_PQueueItem;

typedef struct {
    CRITICAL_SECTION lock;
    WDM_PQueueItem front;
    WDM_PQueueItem rear;
} WDM_Queue, *WDM_PQueue;

// ---------------------------------------------------------
// Prototypes
// ---------------------------------------------------------

WDM_PQueueItemError wdm_queue_item_error_new(VALUE, LPCSTR, ...);
void wdm_queue_item_error_free(WDM_PQueueItemError);

WDM_PQueueItemData wdm_queue_item_data_new();
void wdm_queue_item_data_free(WDM_PQueueItemData);

WDM_PQueueItem wdm_queue_item_new(WDM_QueueItemType);
void wdm_queue_item_free(WDM_PQueueItem);

WDM_PQueue wdm_queue_new();
void wdm_queue_free(WDM_PQueue);

void wdm_queue_enqueue(WDM_PQueue, WDM_PQueueItem);
WDM_PQueueItem wdm_queue_dequeue(WDM_PQueue);
void wdm_queue_empty(WDM_PQueue);
BOOL wdm_queue_is_empty(WDM_PQueue);

// ---------------------------------------------------------

#ifdef __cplusplus
}
#endif // __cplusplus

#endif // WDM_QUEUE_H

Version data entries

49 entries across 41 versions & 5 rubygems

Version Path
wdm-0.2.0 ext/wdm/queue.h
vagrant-unbundled-2.2.19.0 vendor/bundle/ruby/3.0.0/gems/wdm-0.1.1/ext/wdm/queue.h
vagrant-unbundled-2.2.18.0 vendor/bundle/ruby/3.0.0/gems/wdm-0.1.1/ext/wdm/queue.h
vagrant-unbundled-2.2.16.0 vendor/bundle/ruby/2.7.0/gems/wdm-0.1.1/ext/wdm/queue.h
vagrant-unbundled-2.2.16.0 vendor/bundle/ruby/3.0.0/gems/wdm-0.1.1/ext/wdm/queue.h
vagrant-unbundled-2.2.14.0 vendor/bundle/ruby/2.7.0/gems/wdm-0.1.1/ext/wdm/queue.h
vagrant-unbundled-2.2.10.0 vendor/bundle/ruby/2.7.0/gems/wdm-0.1.1/ext/wdm/queue.h
vagrant-unbundled-2.2.9.0 vendor/bundle/ruby/2.7.0/gems/wdm-0.1.1/ext/wdm/queue.h
vagrant-unbundled-2.2.8.0 vendor/bundle/ruby/2.7.0/gems/wdm-0.1.1/ext/wdm/queue.h
vagrant-unbundled-2.2.7.0 vendor/bundle/ruby/2.4.0/gems/wdm-0.1.1/ext/wdm/queue.h
vagrant-unbundled-2.2.7.0 vendor/bundle/ruby/2.6.0/gems/wdm-0.1.1/ext/wdm/queue.h
vagrant-unbundled-2.2.7.0 vendor/bundle/ruby/2.7.0/gems/wdm-0.1.1/ext/wdm/queue.h
vagrant-unbundled-2.2.6.2 vendor/bundle/ruby/2.6.0/gems/wdm-0.1.1/ext/wdm/queue.h
vagrant-unbundled-2.2.6.1 vendor/bundle/ruby/2.6.0/gems/wdm-0.1.1/ext/wdm/queue.h
vagrant-unbundled-2.2.6.0 vendor/bundle/ruby/2.6.0/gems/wdm-0.1.1/ext/wdm/queue.h
vagrant-unbundled-2.2.5.0 vendor/bundle/ruby/2.5.0/gems/wdm-0.1.1/ext/wdm/queue.h
vagrant-unbundled-2.2.5.0 vendor/bundle/ruby/2.6.0/gems/wdm-0.1.1/ext/wdm/queue.h
vagrant-unbundled-2.2.4.0 vendor/bundle/ruby/2.6.0/gems/wdm-0.1.1/ext/wdm/queue.h
vagrant-unbundled-2.2.4.0 vendor/bundle/ruby/2.5.0/gems/wdm-0.1.1/ext/wdm/queue.h
vagrant-unbundled-2.2.3.0 vendor/bundle/ruby/2.5.0/gems/wdm-0.1.1/ext/wdm/queue.h