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

📄 u2extraops.c

📁 UML语言构建的电梯管理系统
💻 C
字号:

/* Program generated by Cbasic 2.2.20  */
#define XSCT_CBASIC

#define C_TRANSLATOR_2_2
#define XENABLE_VERSION_CHECK

#include "scttypes.h"
#include "U2ExtraOps.h"
#ifdef XINCLUDE_HS_FILE
#include "LiftSystem.hs"
#endif
#ifdef XCTRACE
static char  xFileName[] = "U2ExtraOps.c";
#endif


/*************************************************************************
**                  #CODE directives, #BODY sections                    **
*************************************************************************/

/*************************************************************************
**                  SECTION Variables and Functions                     **
*************************************************************************/

/*****
* PACKAGE U2ExtraOps
* #SDTREF(TEXT,"C:\\Program\\Telelogic\\Tau 2.2\\bin\\..\\addins\\sdlkernels\\ADT\\u2ExtraOps.pr",26,9)
******/
XCONST struct xPackageIdStruct yPacR_z_U2ExtraOps__U2ExtraOps = {xPackageEC ,
  (xIdNode)0, (xIdNode)0, (xIdNode)&xSymbolTableIdRec,
  "U2ExtraOps" xIdNumber(0) XCOMMON_EXTRAS xIdNames(0) XPAC_EXTRAS};

/*****
* NEWTYPE ProcessInst  (BODY section)
* <<PACKAGE U2ExtraOps>>
* #SDTREF(TEXT,"C:\\Program\\Telelogic\\Tau 2.2\\bin\\..\\addins\\sdlkernels\\ADT\\u2ExtraOps.pr",27,9)
******/
tSDLTypeInfo ySDL_z_U2ExtraOps_0_ProcessInst = {type_SDL_EmptyType, 0,
  (xptrint)sizeof(z_U2ExtraOps_0_ProcessInst) T_SDL_OPFUNCS(0)
  T_SDL_EXTRA_VALUE T_SDL_Names("ProcessInst")
  xRaWF((xIdNode)&yPacR_z_U2ExtraOps__U2ExtraOps)
  xRaWF(&ySrtR_z_U2ExtraOps_0_ProcessInst)};
#ifndef XOPTSORT
XCONST struct xSortIdStruct ySrtR_z_U2ExtraOps_0_ProcessInst = {xSortEC ,
  (xIdNode)0, (xIdNode)0, (xIdNode)&yPacR_z_U2ExtraOps__U2ExtraOps,
  "ProcessInst" xIdNumber(0) XCOMMON_EXTRAS xFreF(0) xAssF(0) xEqF(0)
  xTestF(0), (xptrint)sizeof(z_U2ExtraOps_0_ProcessInst), xEnum,
  (xSortIdNode)0, (xSortIdNode)0, 0, 0, 0, 0
  xRaWF((tSDLTypeInfo *)&ySDL_z_U2ExtraOps_0_ProcessInst) XSRT_EXTRAS};
#endif
                /* #SDTREF(TEXT,"C:\\Program\\Telelogic\\Tau 2.2\\bin\\..\\addins\\sdlkernels\\ADT\\u2ExtraOps.pr",32,46) */

#ifdef XSCT_CMICRO
SDL_Integer z_U2ExtraOps_00_numberactive(int PartId)
{
  xInstanceId InstId;
  XCONST_INST xPartTable *PartData;
  int Number = 0;

  PartData = xPartData[PartId];
  for (InstId = 0; InstId < PartData->MaxInstances; InstId++) {
    if (INSTANCE_VAR(InstId)->State != XDORMANT)
      Number++;
  }
  return Number;
}

SDL_PId z_U2ExtraOps_02_getpid(int PartId, SDL_Integer PartIndex)
{
  xInstanceId InstId;
  XCONST_INST xPartTable *PartData;
  int Number = 0;

  PartData = xPartData[PartId];
  for (InstId = 0; InstId < PartData->MaxInstances; InstId++) {
    if (INSTANCE_VAR(InstId)->State != XDORMANT) {
      if (Number == PartIndex)
        return XPID(PartId, InstId);
      Number++;
    }
  }
  return SDL_NULL;
}

#else

static SDL_Boolean xxxSameBlockInstSet(xPrsNode PFrom, xPrsNode PTo)
{
  if (PTo->NameNode->InBlockInst == 0 ||
      PFrom->BlockInstNumber == PTo->BlockInstNumber)
    return SDL_True;
  return SDL_False;
}

SDL_Integer z_U2ExtraOps_00_numberactive(xIdNode BlockId, int ContIndex, xPrsNode VarP)
{
  xPrsNode P;
  xPrsIdNode PrsId;
  SDL_Integer Result = 0;
  PrsId = xPrsInst((xIdNode)VarP->NameNode, BlockId, ContIndex);
  THREADED_LISTREAD_START
  P = *(((xPrsIdNode)PrsId)->ActivePrsList);
  while (P) {
    if (xxxSameBlockInstSet(VarP, P))
      Result++;
    P = P->NextPrs;
  }
  THREADED_LISTACCESS_END
  return Result;
}

SDL_Integer z_U2ExtraOps_01_numberactive2(xIdNode PrsId)
{
  xPrsNode P;
  SDL_Integer Result = 0;
  THREADED_LISTREAD_START
  P = *(((xPrsIdNode)PrsId)->ActivePrsList);
  while (P) {
    P = P->NextPrs;
    Result++;
  }
  THREADED_LISTACCESS_END
  return Result;
}

SDL_PId z_U2ExtraOps_02_getpid(xIdNode BlockId, int ContIndex, xPrsNode VarP, SDL_Integer PrsIndex)
{
  xPrsNode P;
  xPrsIdNode PrsId;
  if (PrsIndex <= 0) return SDL_NULL;
  PrsId = xPrsInst((xIdNode)VarP->NameNode, BlockId, ContIndex);
  THREADED_LISTREAD_START
  P = *(((xPrsIdNode)PrsId)->ActivePrsList);
  while (P && (PrsIndex>1)) {
    if (xxxSameBlockInstSet(VarP, P))
      PrsIndex--;
    P = P->NextPrs;
  }
  while (P && !xxxSameBlockInstSet(VarP, P)) {
    P = P->NextPrs;
  }
  THREADED_LISTACCESS_END
  if (P) return P->Self;
  return SDL_NULL;
}

SDL_PId z_U2ExtraOps_03_getpid2(xIdNode PrsId, SDL_Integer PrsIndex)
{
  xPrsNode P;
  if (PrsIndex <= 0) return SDL_NULL;
  THREADED_LISTREAD_START
  P = *(((xPrsIdNode)PrsId)->ActivePrsList);
  while (P && (PrsIndex>1)) {
    P = P->NextPrs;
    PrsIndex--;
  }
  THREADED_LISTACCESS_END
  if (P) return P->Self;
  return SDL_NULL;
}
#endif


/*************************************************************************
**                       SECTION Initialization                         **
*************************************************************************/
extern void yInit_U2ExtraOps (void)
{
  static int IsCalled = 0;
  int  Temp;
  YINIT_TEMP_VARS
  if (IsCalled) return;
  IsCalled = 1;
  xInsertIdNode((xIdNode)&yPacR_z_U2ExtraOps__U2ExtraOps);
#ifndef XOPTSORT
  xInsertIdNode((xIdNode)&ySrtR_z_U2ExtraOps_0_ProcessInst);
#endif
}

⌨️ 快捷键说明

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