/****************************************************************************
 * This file is part of the project AqHome.
 * AqHome (c) by 2025 Martin Preuss, all rights reserved.
 *
 * The license for this file can be found in the file COPYING which you
 * should have received along with this file.
 ****************************************************************************/

#ifndef AQHOMEREACT_U_MODULE_P_H
#define AQHOMEREACT_U_MODULE_P_H


#include "./u_module.h"

#include "aqhome-react/types/unit.h"

#include <gwenhywfar/list.h>


typedef struct MODULE_PROXY_DESCR MODULE_PROXY_DESCR;
typedef struct AQHREACT_UNIT_MODULE AQHREACT_UNIT_MODULE;

GWEN_LIST_FUNCTION_DEFS(MODULE_PROXY_DESCR, ModuleProxyDescr);



struct MODULE_PROXY_DESCR {
  GWEN_LIST_ELEMENT(MODULE_PROXY_DESCR);
  char *name;
  char *targetObject;
  char *targetName;
  int targetIdForModule;
  AQHREACT_UNIT *targetObjectPtr;
};


static MODULE_PROXY_DESCR *ModuleProxyDescr_new(const char *name, const char *targetObject, const char *targetName);
static void ModuleProxyDescr_free(MODULE_PROXY_DESCR *pd);
static MODULE_PROXY_DESCR *ModuleProxyDescr_List_FindByName(const MODULE_PROXY_DESCR_LIST *pdList, const char *s);



struct AQHREACT_UNIT_MODULE {
  MODULE_PROXY_DESCR_LIST *paramProxyList;
  AQHREACT_UNIT_LIST *unitList;
  int lastPortId;
};


#endif





