Beispiel #1
0
/**
 * Creates the iterator containing one element. Does not support the remove
 * operation.
 */
Iterator * ITR_Singleton(IElementC element)
{
    SingletonIterator * si = MEM_New(SingletonIterator);
    if (si) {
        ITR_Init(&si->itr, &singletonIterator);
        si->element = (IElement)element;
        si->hasNext = True;
        return &si->itr;
    } else {
        return NULL;
    }
}
Beispiel #2
0
/**
 * Creates the read-only iterator which doesn't support remove operation
 */
Iterator * QUEUE_ConstIterator(const Queue * q)
{
    if (QUEUE_IsEmpty(q)) {
        return ITR_Empty();
    } else {
        QueueIterator * qi = MEM_New(QueueIterator);
        if (qi) {
            ITR_Init(&qi->itr, &queueConstIterator);
            qi->entry = NULL;
            qi->next = q->head.next;
            return &qi->itr;
        } else {
            return NULL;
        }
    }
}
Beispiel #3
0
/**
 * Creates the iterator
 */
Iterator * QUEUE_Iterator(Queue * q)
{
    if (QUEUE_IsEmpty(q)) {
        return ITR_Empty();
    } else {
        QueueIterator * qi = MEM_New(QueueIterator);
        if (qi) {
            ITR_Init(&qi->itr, &queueIterator);
            qi->entry = NULL;
            qi->next = QUEUE_First(q);
            return &qi->itr;
        } else {
            return NULL;
        }
    }
}
Beispiel #4
0
/**
 * Creates the iterator that allows to filter the value returned by the
 * iterator and substitute it with something else. NULL callback means
 * no filtering, i.e. the default behavior provided by the target iterator.
 */
Iterator * ITR_Filter(Iterator * target, ItrFilterNext fnext, 
                      ItrFilterRemove fremove, void * ctx)
{
    ASSERT(target);
    if (target) {
        FilterIterator * fi = MEM_New(FilterIterator);
        if (fi) {
            ITR_Init(&fi->itr, &filterIterator);
            fi->target = target;
            fi->next = fnext;
            fi->remove = fremove;
            fi->ctx = ctx;
            return &fi->itr;
        }
    }
    return NULL;
}
void main()
{ 
	Lcd_Init();   //TFT Screen Init
	LCD_Clear(BLACK); //fill screed with black color
	BACK_COLOR=BLACK;
	POINT_COLOR=GREEN;
	DispStr(0,0,"Screen Initialized!");
	DispStr(0,1,"MCU:12C5A60S2,Speed:1MIPS"); //Display MCU Information
	if(ReadTemp()!=0)
	{
		DispStr(0,2,"DS18B20 Ready!");
	}
	else
	{
		DispStr(0,2,"Ds18b20 Error.");
	}
	UART_Init();					//UART Init
	DispStr(0,3,"UART Ready!");
	ITR_Init();						//Interrupt Init
	DispStr(0,4,"Interrupt Onset.");
	DispStr(0,5,"Connecting");
	AT_CMD();							//ESP8266 Init
	DispStr(0,6,"Connectted!");
	DispStr(0,12,"Real:");
	while(1)
	{
		TempVal=ReadTemp();			//Read Celsius
		DispTemp(TempVal);			//Display Celsius Value
		if(Cnt>30)
		{
			Send_TempVal(TempVal);		//Send Temprature to UART
			Cnt=0;
		}
	}

}
Beispiel #6
0
/**
 * Initializer for the platform independent part of the directory iterator.
 * Assumes that the memory has been zeroed.
 */
void DIR_ItrInit(DirIterator * di, const Itr * type)
{
    ITR_Init(&di->itr, type);
    STRBUF_Init(&di->dirName);
    STRBUF_Init(&di->fileName);
}