SOL9 2.0 Class: HandlerList

 SOL9 C++ Class Library  SOL9 Samples  SOL9 Tutorial  SOL9 FAQ  SOL9 ClassTree 

Source code

/*
 * HandlerList.h 
 * Copyright (c) 2011 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */


// SOL++2000
#pragma once

#include <sol\HandlerEntry.h>
#include <sol\List.h>

namespace SOL {

class HandlerList :public List {
private:
    HandlerEntry* entry;
  
public:
    HandlerList() { 
        entry = NULL; 
    }

public:
    ~HandlerList()
    {
        HandlerEntry* ptr = entry;
        HandlerEntry* prev;
        while(ptr) {
            prev = ptr;
            ptr  = ptr -> getNext();
            delete prev;
        }
    }

public:
    void add(UINT msg, Object* object, Handler proc, void* data)
    {
        HandlerEntry* ent = new HandlerEntry(msg, object, proc, data);
        ent -> add(entry);
        entry = ent;
    }

public:
    Boolean call(Event& event, ulong* value) 
    {
        WORD msg = event.getMessage();
        HandlerEntry* ptr = entry;
        while(ptr) {
            if(msg == ptr->getMessage()) {
                Sleep(0);    //2009/11/16
                *value = ptr -> call(event);
                return TRUE;
            }
            ptr = ptr -> getNext();
        }
        return FALSE;
    }

public:
    void HandlerList::clear()
    {
        HandlerEntry* ptr = entry;
        HandlerEntry* prev = entry;

        while(ptr) {
            prev = ptr;
            ptr = ptr -> getNext();
            delete prev;
        }
        entry = NULL;
    }

};

}


Last modified: 1 Feb 2012

Copyright (c) 2009-2012 Antillia.com ALL RIGHTS RESERVED.