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

📄 sctpred.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
/*
# clearcase: CmicroPatchRel2.3.3
*/

/*
+------------------------------------------------------------------------------+
|                                                                              |
|  Copyright by Telelogic AB 1993 - 1998                                       |
|  Copyright by S&P Media GmbH Germany 1993 - 1998                             |
|                                                                              |
|  This Program is owned by Telelogic and is protected by national             |
|  copyright laws and international copyright treaties. Telelogic              |
|  grants you the right to use this Program on one computer or in              |
|  one local computer network at any one time.                                 |
|  Under this License you may only modify the source code for the purpose      |
|  of adapting it to your environment. You must reproduce and include          |
|  any copyright and trademark notices on all copies of the source code.       |
|  You may not use, copy, merge, modify or transfer the Program except as      |
|  provided in this License.                                                   |
|  Telelogic does not warrant that the Program will meet your                  |
|  requirements or that the operation of the Program will be                   |
|  uninterrupted and error free. You are solely responsible that the           |
|  selection of the Program and the modification of the source code            |
|  will achieve your intended results and that the results are actually        |
|  obtained.                                                                   |
|                                                                              |
+------------------------------------------------------------------------------+
*/

/*
$Id: sctpred.c,v 1.2 2004/08/13 03:17:52 chenlang Exp $ 
*/


/* This file contains implementation of operators and the read and
   write functions for the predefined data types except PId.
*/
/*
FILE INDEX
01   IdNodes for package Predefined (not relevant for Cmicro)
02   Operator implementations
03   Read and Write functions (not relevant for Cmicro)
*/

#if defined(XSCT_CADVANCED) || defined(XSCT_CBASIC)

#include "scttypes.h"


/********  SDT VALIDATOR ********/
#ifdef XVALIDATOR_LIB
#ifndef XSYSD
#define XSYSD
#endif
SDL_Time xMaxTime = {2147483647,0};

#endif /* ... XVALIDATOR_LIB */

#else /* then XSCT_CMICRO */

#include "ml_typw.h"

#ifndef XSYSD
#define XSYSD
#endif

#endif /* ... defined(XSCT_CADVANCED) || defined(XSCT_CBASIC) */


/****+***************************************************************
01   IdNodes for package Predefined
********************************************************************/

#if defined(XSCT_CADVANCED) || defined(XSCT_CBASIC)

#ifndef XOPTSORT

/*---+---------------------------------------------------------------
     Package Predefined
-------------------------------------------------------------------*/

struct xPackageIdStruct yPacR_Predefined = {xPackageEC
  xSymbTLink((xIdNode)0, (xIdNode)0), xSymbolTableRoot xIdNames("Predefined")
  XCOMMON_EXTRAS xIdNames(0) XPAC_EXTRAS};

/*---+---------------------------------------------------------------
     Boolean
-------------------------------------------------------------------*/

XCONST struct xSortIdStruct xSrtR_SDL_Boolean = {xSortEC xSymbTLink((xIdNode)0,
  (xIdNode)0), (xIdNode)&yPacR_Predefined xIdNames("boolean")
  XCOMMON_EXTRAS xFreF(0) xAssF(0) xEqF(0) xRaWF(0) xRaWF(0) xTestF(0),
  (xptrint)sizeof(SDL_Boolean), xPredef, (xSortIdNode)0, (xSortIdNode)0, 0,
  0 XSRT_EXTRAS};
#ifndef XOPTLIT

#error "warning_static_in_use_DLH"
static XCONST struct xLiteralIdStruct yFalseR = {xLiteralEC xSymbTLink((xIdNode)0,
  (xIdNode)0), (xIdNode)&xSrtR_SDL_Boolean xIdNames("false")
  XCOMMON_EXTRAS XLIT_EXTRAS};

#error "warning_static_in_use_DLH"
static XCONST struct xLiteralIdStruct yTrueR = {xLiteralEC  xSymbTLink((xIdNode)0,
  (xIdNode)0), (xIdNode)&xSrtR_SDL_Boolean xIdNames("true")
  XCOMMON_EXTRAS XLIT_EXTRAS};
#endif

/*---+---------------------------------------------------------------
     Bit
-------------------------------------------------------------------*/

XCONST struct xSortIdStruct xSrtR_SDL_Bit = {xSortEC xSymbTLink((xIdNode)0,
  (xIdNode)0), (xIdNode)&yPacR_Predefined xIdNames("bit")
  XCOMMON_EXTRAS xFreF(0) xAssF(0) xEqF(0) xRaWF(xRead_SDL_Bit)
  xRaWF(xWri_SDL_Bit) xTestF(0), (xptrint)sizeof(SDL_Bit),
  xPredef, (xSortIdNode)0, (xSortIdNode)0, 0, 0 XSRT_EXTRAS};

/*---+---------------------------------------------------------------
     Bit_String
-------------------------------------------------------------------*/

#ifndef XNOUSEOFOCTETBITSTRING
XCONST struct xSortIdStruct xSrtR_SDL_Bit_String = {xSortEC xSymbTLink((xIdNode)0,
  (xIdNode)0), (xIdNode)&yPacR_Predefined xIdNames("bit_string")
  XCOMMON_EXTRAS xFreF(xFree_SDL_Bit_String) xAssF(xAss_SDL_Bit_String)
  xEqF(xEq_SDL_Bit_String) xRaWF(xRead_SDL_Bit_String)
  xRaWF(xWri_SDL_Bit_String) xTestF(0), (xptrint)sizeof(SDL_Bit_String),
  xPredef, (xSortIdNode)0, (xSortIdNode)0, 0, 0 XSRT_EXTRAS};
#endif
       /* XNOUSEOFOCTETBITSTRING */

/*---+---------------------------------------------------------------
     Octet
-------------------------------------------------------------------*/

#ifndef XNOUSEOFOCTETBITSTRING
XCONST struct xSortIdStruct xSrtR_SDL_Octet = {xSortEC xSymbTLink((xIdNode)0,
  (xIdNode)0), (xIdNode)&yPacR_Predefined xIdNames("octet")
  XCOMMON_EXTRAS xFreF(0) xAssF(0) xEqF(0) xRaWF(xRead_SDL_Octet)
  xRaWF(xWri_SDL_Octet) xTestF(0), (xptrint)sizeof(SDL_Octet),
  xPredef, (xSortIdNode)0, (xSortIdNode)0, 0, 0 XSRT_EXTRAS};
#endif
       /* XNOUSEOFOCTETBITSTRING */

/*---+---------------------------------------------------------------
     Octet_String
-------------------------------------------------------------------*/

#ifndef XNOUSEOFOCTETBITSTRING
XCONST struct xSortIdStruct xSrtR_SDL_Octet_String = {xSortEC xSymbTLink((xIdNode)0,
  (xIdNode)0), (xIdNode)&yPacR_Predefined xIdNames("octet_string")
  XCOMMON_EXTRAS xFreF(xFree_SDL_Bit_String) xAssF(xAss_SDL_Bit_String)
  xEqF(xEq_SDL_Bit_String) xRaWF(xRead_SDL_Octet_String)
  xRaWF(xWri_SDL_Octet_String) xTestF(0), (xptrint)sizeof(SDL_Octet_String),
  xPredef, (xSortIdNode)0, (xSortIdNode)0, 0, 0 XSRT_EXTRAS};
#endif
       /* XNOUSEOFOCTETBITSTRING */

/*---+---------------------------------------------------------------
     Character
-------------------------------------------------------------------*/

XCONST struct xSortIdStruct xSrtR_SDL_Character = {xSortEC xSymbTLink((xIdNode)0,
  (xIdNode)0), (xIdNode)&yPacR_Predefined xIdNames("character")
  XCOMMON_EXTRAS xFreF(0) xAssF(0) xEqF(0) xRaWF(xRead_SDL_Character)
  xRaWF(xWri_SDL_Character) xTestF(0), (xptrint)sizeof(SDL_Character),
  xPredef, (xSortIdNode)0, (xSortIdNode)0, 0, 0 XSRT_EXTRAS};

/*---+---------------------------------------------------------------
     Charstring
-------------------------------------------------------------------*/

XCONST struct xSortIdStruct xSrtR_SDL_Charstring = {xSortEC xSymbTLink((xIdNode)0,
  (xIdNode)0), (xIdNode)&yPacR_Predefined xIdNames("charstring")
  XCOMMON_EXTRAS xFreF(xFree_SDL_Charstring) xAssF(xAss_SDL_Charstring)
  xEqF(xEq_SDL_Charstring) xRaWF(xRead_SDL_Charstring)
  xRaWF(xWri_SDL_Charstring) xTestF(0), (xptrint)sizeof(SDL_Charstring),
  xPredef, (xSortIdNode)0, (xSortIdNode)0, 0, 0 XSRT_EXTRAS};

/*---+---------------------------------------------------------------
     IA5String
-------------------------------------------------------------------*/

XCONST struct xSortIdStruct xSrtR_SDL_IA5String = {xSortEC xSymbTLink((xIdNode)0,
  (xIdNode)0), (xIdNode)&yPacR_Predefined xIdNames("IA5String")
  XCOMMON_EXTRAS xFreF(xFree_SDL_Charstring) xAssF(xAss_SDL_Charstring)
  xEqF(xEq_SDL_Charstring) xRaWF(xRead_SDL_Charstring)
  xRaWF(xWri_SDL_Charstring) xTestF(0), (xptrint)sizeof(SDL_Charstring),
  xSyntype, &xSrtR_SDL_Charstring, (xSortIdNode)0, 0, 0 XSRT_EXTRAS};

/*---+---------------------------------------------------------------
     NumericString
-------------------------------------------------------------------*/

XCONST struct xSortIdStruct xSrtR_SDL_NumericString = {xSortEC
  xSymbTLink((xIdNode)0, (xIdNode)0), (xIdNode)&yPacR_Predefined
  xIdNames("NumericString") XCOMMON_EXTRAS xFreF(xFree_SDL_Charstring)
  xAssF(xAss_SDL_Charstring) xEqF(xEq_SDL_Charstring)
  xRaWF(xRead_SDL_NumericString)
  xRaWF(xWri_SDL_NumericString) xTestF(xTest_SDL_NumericString),
  (xptrint)sizeof(SDL_Charstring), xSyntype, &xSrtR_SDL_Charstring,
  (xSortIdNode)0, 0, 0 XSRT_EXTRAS};

/*---+---------------------------------------------------------------
     PrintableString
-------------------------------------------------------------------*/

XCONST struct xSortIdStruct xSrtR_SDL_PrintableString = {xSortEC
  xSymbTLink((xIdNode)0, (xIdNode)0), (xIdNode)&yPacR_Predefined
  xIdNames("PrintableString") XCOMMON_EXTRAS xFreF(xFree_SDL_Charstring)
  xAssF(xAss_SDL_Charstring) xEqF(xEq_SDL_Charstring)
  xRaWF(xRead_SDL_PrintableString)
  xRaWF(xWri_SDL_PrintableString) xTestF(xTest_SDL_PrintableString),
  (xptrint)sizeof(SDL_Charstring), xSyntype, &xSrtR_SDL_Charstring,
  (xSortIdNode)0, 0, 0 XSRT_EXTRAS};

/*---+---------------------------------------------------------------
     VisibleString
-------------------------------------------------------------------*/

XCONST struct xSortIdStruct xSrtR_SDL_VisibleString = {xSortEC
  xSymbTLink((xIdNode)0, (xIdNode)0), (xIdNode)&yPacR_Predefined
  xIdNames("VisibleString") XCOMMON_EXTRAS xFreF(xFree_SDL_Charstring)
  xAssF(xAss_SDL_Charstring) xEqF(xEq_SDL_Charstring)
  xRaWF(xRead_SDL_VisibleString)
  xRaWF(xWri_SDL_VisibleString) xTestF(xTest_SDL_PrintableString),
  (xptrint)sizeof(SDL_Charstring), xSyntype, &xSrtR_SDL_Charstring,
  (xSortIdNode)0, 0, 0 XSRT_EXTRAS};

/*---+---------------------------------------------------------------
     Duration
-------------------------------------------------------------------*/

XCONST struct xSortIdStruct xSrtR_SDL_Duration = {xSortEC xSymbTLink((xIdNode)0,
  (xIdNode)0), (xIdNode)&yPacR_Predefined xIdNames("duration")
  XCOMMON_EXTRAS xFreF(0) xAssF(0) xEqF(xEq_SDL_Duration)
  xRaWF(xRead_SDL_Duration) xRaWF(xWri_SDL_Duration) xTestF(0),
  (xptrint)sizeof(SDL_Duration), xPredef, (xSortIdNode)0, (xSortIdNode)0,
  0, 0 XSRT_EXTRAS};

/*---+---------------------------------------------------------------
     Integer
-------------------------------------------------------------------*/

XCONST struct xSortIdStruct xSrtR_SDL_Integer = {xSortEC xSymbTLink((xIdNode)0,
  (xIdNode)0), (xIdNode)&yPacR_Predefined xIdNames("integer")
  XCOMMON_EXTRAS xFreF(0) xAssF(0) xEqF(0) xRaWF(xRead_SDL_Integer)
  xRaWF(xWri_SDL_Integer) xTestF(0), (xptrint)sizeof(SDL_Integer),
  xPredef, (xSortIdNode)0, (xSortIdNode)0, 0, 0 XSRT_EXTRAS};

/*---+---------------------------------------------------------------
     Natural
-------------------------------------------------------------------*/

XCONST struct xSortIdStruct xSrtR_SDL_Natural = {xSortEC xSymbTLink((xIdNode)0,
  (xIdNode)0), (xIdNode)&yPacR_Predefined xIdNames("natural")
  XCOMMON_EXTRAS xFreF(0) xAssF(0) xEqF(0) xRaWF(xRead_SDL_Integer)
  xRaWF(xWri_SDL_Integer) xTestF(xTest_SDL_Natural),
  (xptrint)sizeof(SDL_Integer), xSyntype, &xSrtR_SDL_Integer,
  (xSortIdNode)0, 0, 0 XSRT_EXTRAS};

/*---+---------------------------------------------------------------
     Null
-------------------------------------------------------------------*/

XCONST struct xSortIdStruct xSrtR_SDL_Null = {xSortEC xSymbTLink((xIdNode)0,
  (xIdNode)0), (xIdNode)&yPacR_Predefined xIdNames("null")
  XCOMMON_EXTRAS xFreF(0) xAssF(0) xEqF(0) xRaWF(xRead_SDL_Null)
  xRaWF(xWri_SDL_Null) xTestF(0), (xptrint)sizeof(SDL_Null),
  xPredef, (xSortIdNode)0, (xSortIdNode)0, 0, 0 XSRT_EXTRAS};

/*---+---------------------------------------------------------------
     Object_Identifier
-------------------------------------------------------------------*/

#ifndef XNOUSEOFOBJECTIDENTIFIER
XCONST struct xSortIdStruct xSrtR_SDL_Object_Identifier = {xSortEC
  xSymbTLink((xIdNode)0, (xIdNode)0), (xIdNode)&yPacR_Predefined
  xIdNames("object_identifier") XCOMMON_EXTRAS xFreF(yFree_SDL_Object_Identifier)
  xAssF(yAss_SDL_Object_Identifier) xEqF(yEq_SDL_Object_Identifier)
  xRaWF(yRead_SDL_Object_Identifier) xRaWF(yWri_SDL_Object_Identifier)
  xTestF(0), (xptrint)sizeof(SDL_Object_Identifier), xString, &xSrtR_SDL_Natural,
  (xSortIdNode)0, 0, 0 XSRT_EXTRAS};
#endif
       /* XNOUSEOFOBJECTIDENTIFIER */

/*---+---------------------------------------------------------------
     PId
-------------------------------------------------------------------*/

XCONST struct xSortIdStruct xSrtR_SDL_PId = {xSortEC xSymbTLink((xIdNode)0,
  (xIdNode)0), (xIdNode)&yPacR_Predefined xIdNames("pid")
  XCOMMON_EXTRAS xFreF(0) xAssF(0) xEqF(yEq_SDL_PId) xRaWF(xRead_SDL_PId)
  xRaWF(xWri_SDL_PId) xTestF(0), (xptrint)sizeof(SDL_PId), xPredef,
  (xSortIdNode)0, (xSortIdNode)0, 0, 0 XSRT_EXTRAS};

/*---+---------------------------------------------------------------
     Real
-------------------------------------------------------------------*/

#ifndef XNOUSEOFREAL
XCONST struct xSortIdStruct xSrtR_SDL_Real = {xSortEC xSymbTLink((xIdNode)0,
  (xIdNode)0), (xIdNode)&yPacR_Predefined xIdNames("real") XCOMMON_EXTRAS
  xFreF(0) xAssF(0) xEqF(0) xRaWF(xRead_SDL_Real) xRaWF(xWri_SDL_Real)
  xTestF(0), (xptrint)sizeof(SDL_Real), xPredef, (xSortIdNode)0,
  (xSortIdNode)0, 0, 0 XSRT_EXTRAS};
#endif

/*---+---------------------------------------------------------------
     Time
-------------------------------------------------------------------*/

XCONST struct xSortIdStruct xSrtR_SDL_Time = {xSortEC xSymbTLink((xIdNode)0,
  (xIdNode)0), (xIdNode)&yPacR_Predefined xIdNames("time") XCOMMON_EXTRAS
  xFreF(0) xAssF(0) xEqF(xEq_SDL_Duration) xRaWF(xRead_SDL_Time)
  xRaWF(xWri_SDL_Time) xTestF(0), (xptrint)sizeof(SDL_Time), xPredef,
  (xSortIdNode)0, (xSortIdNode)0, 0, 0 XSRT_EXTRAS};
#endif


/*---+---------------------------------------------------------------
     yInit_Predefined
-------------------------------------------------------------------*/

#ifndef XOPTSORT
void yInit_Predefined XPP((void))
{
  xInsertIdNode((xIdNode)&yPacR_Predefined);
  xInsertIdNode((xIdNode)&xSrtR_SDL_Boolean);
#ifndef XOPTLIT
  xInsertIdNode((xIdNode)&yFalseR);
  xInsertIdNode((xIdNode)&yTrueR);
#endif
  xInsertIdNode((xIdNode)&xSrtR_SDL_Bit);
#ifndef XNOUSEOFOCTETBITSTRING
  xInsertIdNode((xIdNode)&xSrtR_SDL_Bit_String);
#endif
  xInsertIdNode((xIdNode)&xSrtR_SDL_Character);
  xInsertIdNode((xIdNode)&xSrtR_SDL_Charstring);
  xInsertIdNode((xIdNode)&xSrtR_SDL_Duration);
  xInsertIdNode((xIdNode)&xSrtR_SDL_IA5String);
  xInsertIdNode((xIdNode)&xSrtR_SDL_Integer);
  xInsertIdNode((xIdNode)&xSrtR_SDL_Natural);
  xInsertIdNode((xIdNode)&xSrtR_SDL_Null);
  xInsertIdNode((xIdNode)&xSrtR_SDL_NumericString);
#ifndef XNOUSEOFOBJECTIDENTIFIER
  xInsertIdNode((xIdNode)&xSrtR_SDL_Object_Identifier);
#endif
#ifndef XNOUSEOFOCTETBITSTRING
  xInsertIdNode((xIdNode)&xSrtR_SDL_Octet);
  xInsertIdNode((xIdNode)&xSrtR_SDL_Octet_String);
#endif
  xInsertIdNode((xIdNode)&xSrtR_SDL_PId);
  xInsertIdNode((xIdNode)&xSrtR_SDL_PrintableString);
#ifndef XNOUSEOFREAL
  xInsertIdNode((xIdNode)&xSrtR_SDL_Real);
#endif
  xInsertIdNode((xIdNode)&xSrtR_SDL_Time);
  xInsertIdNode((xIdNode)&xSrtR_SDL_VisibleString);
}
#endif

#endif /* ... defined(XSCT_CADVANCED) || defined(XSCT_CBASIC) */


/****+***************************************************************
02   Operator implementations
********************************************************************/

/*** Bit_String ***************************************************/

#ifndef XNOUSEOFOCTETBITSTRING

/*---+---------------------------------------------------------------
     xAss_SDL_Bit_String
-------------------------------------------------------------------*/
#ifndef XNOPROTO
void xAss_SDL_Bit_String (
  SDL_Bit_String *BVar,
  SDL_Bit_String  BExpr,
  int             AssType )
#else
void xAss_SDL_Bit_String (BVar, BExpr, AssType)
  SDL_Bit_String *BVar;
  SDL_Bit_String  BExpr;
  int             AssType;
#endif
{
  int IsXASSPARA = XMK_FALSE ;
  /* Needed because *BVar equals BExpr in XASSCOPY case : */
  SDL_Bit_String tmpv; /* only needed for XASSCOPY case */
  PRINTF((" XASSPARA = %d", AssType));
  if (AssType == XASSPARA)
  {
      PRINTF((" XASSPARA = %d", AssType));
    /*
    ** Default setting of octet_string variable - used in the
    ** case of output only (corrected by fbi)
    */
    (*BVar).Bits = 0;
    (*BVar).Length = 0;
    (*BVar).IsAssigned = (xbool)1;
    IsXASSPARA = XMK_TRUE ;
    AssType = XASS ;
  }
  else if (AssType == XASSCOPY)
  {
    /* 
    ** When a PRD with FPAR IN is called, the incoming variable must
    ** be duplicated. This concerns the dynamic memory as well.
    ** In the case of Bit_String / Octet_String, a C struct value
    ** is passed into the PRD C function, which is already a copy
    ** of the incoming variable. So, only the dynamic memory must be
    ** allocated newly (if there was some allocated in the incoming variable).
    */
    if ( (*BVar).Bits != (SDL_Bit *)0 )
    {
      if ( ! ( (*BVar).IsAssigned ) && ( (*BVar).Length != 0) )
      {
        (*BVar).IsAssigned = (xbool)1;
      }
      else
      {
        tmpv.IsUsedInSignal = (xbool)0;
        /* Incoming Variable FPAR IN contains a value */
        tmpv.Bits = xAlloc_SDL_Bit_String((xptrint)(BExpr.Length));
        (void)memcpy((void *)(tmpv).Bits, (void *)BExpr.Bits, BExpr.Length);
        (*BVar).Bits = tmpv.Bits;
        (*BVar).IsAssigned = (xbool)1; /* FBI */
      }
    }

⌨️ 快捷键说明

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