view Paper/src/context1.c @ 0:dbbe5ef644fb

add
author mir3636
date Tue, 21 Nov 2017 19:56:10 +0900
parents
children
line wrap: on
line source

struct Context {
    enum Code next;
    struct Worker* worker;
    struct TaskManager* taskManager;
    int codeNum;
    __code (**code) (struct Context*);
    void* heapStart;
    void* heap;
    long heapLimit;
    int dataNum;
    int idgCount; //number of waiting dataGear
    int odg;
    int maxOdg;
    int workerId;
    union Data **data;
};

union Data {
    struct Meta {
        enum DataType type;
        long size;
        struct Queue* wait; // tasks waiting this dataGear
    } meta;
    struct Task {
        enum Code code;
        struct Queue* dataGears;
        int idsCount;
    } Task;
    // Stack Interface
    struct Stack {
        union Data* stack;
        union Data* data;
        union Data* data1;
        enum Code whenEmpty;
        enum Code clear;
        enum Code push;
        enum Code pop;
        enum Code isEmpty;
        enum Code get;
        enum Code next;
    } Stack;
    // Stack implementations
    struct SingleLinkedStack {
        struct Element* top;
    } SingleLinkedStack;
    struct Element {
        union Data* data;
        struct Element* next;
    } Element;
    struct Node {
        int key; // comparable data segment
        union Data* value;
        struct Node* left;
        struct Node* right;
        // need to balancing
        enum Color {
            Red,
            Black,
        } color;
    } Node;
}; // union Data end       this is necessary for context generator