⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 factory.h

📁 这是在PCA下的基于IPP库示例代码例子,在网上下了IPP的库之后,设置相关参数就可以编译该代码.
💻 H
字号:
////               INTEL CORPORATION PROPRIETARY INFORMATION//  This software is supplied under the terms of a license agreement or//  nondisclosure agreement with Intel Corporation and may not be copied//  or disclosed except in accordance with the terms of that agreement.//        Copyright (c) 2005 Intel Corporation. All Rights Reserved.//#ifndef __FACTORY_H#define __FACTORY_H#include "object.h"#include "vm_strings.h"#include "vm_shared_object.h"class Factory{protected:    ObjectsList    m_objects_list;public:    Factory();    ~Factory();    bool Load(vm_char* p_filename,vm_char* p_funcname = NULL);    bool InitStatic(void);protected:    bool          RegObjectsList(ObjectsList* p_list);public:    ObjectsList*  GetObjectsList(void);    template <class T = Object>    class Iterator    {    protected:        ObjectsList* m_plist;        ObjectsList* m_pcurrent_list;        Object*      m_pobject;    public:        Iterator();        Iterator(Factory& factory);        void        operator=(Factory& factory);        bool        operator ==(void*p);        bool        operator !=(void*p);        T*          operator ->();        Iterator<T> operator ++(int);        bool        Find(vm_char*);    protected:        bool        GetNext(void);    };};template <class T>Factory::Iterator<T>::Iterator(){    m_pcurrent_list = m_plist = &g_static_objects_list;    m_pobject = m_pcurrent_list->p_begin;}template <class T>Factory::Iterator<T>::Iterator(Factory& factory){    m_pcurrent_list = m_plist = factory.GetObjectsList();    m_pobject = m_pcurrent_list->p_begin;    GetNext();}template <class T>voidFactory::Iterator<T>::operator=(Factory& factory){    m_pcurrent_list = m_plist = factory.GetObjectsList();    m_pobject = m_pcurrent_list->p_begin;    if (m_pobject == NULL) GetNext();}template <class T>boolFactory::Iterator<T>::operator==(void* p){    return (m_pobject == p);}template <class T>boolFactory::Iterator<T>::operator!=(void* p){    return (m_pobject != p);}template <class T>T*Factory::Iterator<T>::operator ->(){    return (T*)m_pobject;}template <class T>Factory::Iterator<T>Factory::Iterator<T>::operator ++(int){    GetNext();    return *this;}template <class T>boolFactory::Iterator<T>::Find(vm_char* p_name){    ObjectsList* p_list_iterator;    T*           p_obj_iterator;    if (p_name == NULL) return false;    p_list_iterator = m_plist;    while (p_list_iterator != NULL)    {        p_obj_iterator = (T*)p_list_iterator->p_begin;        while (p_obj_iterator != NULL)        {            if (ObjectTypeCheck<T>(p_obj_iterator))            {                if (!vm_string_strcmp(p_obj_iterator->GetName(),p_name))                {                    m_pobject = p_obj_iterator;                    m_pcurrent_list = p_list_iterator;                    return true;                }            }            p_obj_iterator = (T*)p_obj_iterator->m_pnext;        }        p_list_iterator = p_list_iterator->p_next;    }    return false;}template <class T>boolFactory::Iterator<T>::GetNext(void){    ObjectsList*   p_list_iterator;    T*             p_obj_iterator;    if (m_pcurrent_list == NULL)    {        return false;    }    p_list_iterator = m_pcurrent_list;    p_obj_iterator =(T*) m_pobject;    if (p_obj_iterator ) p_obj_iterator = (T*)p_obj_iterator->m_pnext;    for(;;)    {        while (p_obj_iterator != NULL)        {            if (ObjectTypeCheck(p_obj_iterator))            {                m_pobject = p_obj_iterator;                m_pcurrent_list = p_list_iterator;                return true;            }            p_obj_iterator = (T*)p_obj_iterator->m_pnext;        }        p_list_iterator = p_list_iterator->p_next;        if (p_list_iterator == NULL) break;        p_obj_iterator = (T*)p_list_iterator->p_begin;    }    m_pobject = NULL;    m_pcurrent_list = NULL;    return false;}#endif /* __FACTORY_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -