Annotation of 43BSDReno/contrib/isode-beta/vt/rcv_asr.py, revision 1.1

1.1     ! root        1: -- VTPM: decode ASR PDU
        !             2: 
        !             3: -- $Header: /f/osi/vt/RCS/rcv_asr.py,v 7.0 89/11/23 22:31:36 mrose Rel $
        !             4: --
        !             5: --
        !             6: -- $Log:       rcv_asr.py,v $
        !             7: -- Revision 7.0  89/11/23  22:31:36  mrose
        !             8: -- Release 6.0
        !             9: -- 
        !            10: 
        !            11: --
        !            12: --                               NOTICE
        !            13: --
        !            14: --    Acquisition, use, and distribution of this module and related
        !            15: --    materials are subject to the restrictions of a license agreement.
        !            16: --    Consult the Preface in the User's Manual for the full terms of
        !            17: --    this agreement.
        !            18: --
        !            19: --
        !            20: 
        !            21: 
        !            22: ASRPDU DEFINITIONS ::=
        !            23: 
        !            24: %{
        !            25: #include <stdio.h>
        !            26: #include "sector1.h"
        !            27: 
        !            28: #undef PEPYPARM
        !            29: #define PEPYPARM int *
        !            30: 
        !            31: #undef PEPYTEST
        !            32: 
        !            33: static int l,m,n,q;
        !            34: 
        !            35: #ifdef PEPYTEST
        !            36: 
        !            37: ASR_MSG udr;
        !            38: 
        !            39: rcv_asr(pe)
        !            40: PE pe;
        !            41: {
        !            42: 
        !            43:        int i;
        !            44: 
        !            45:        if(unbuild_ASRPDU_ASRpdu(pe,1,NULLIP,NULLVP,&udr) == NOTOK) 
        !            46:        {
        !            47:                (void)printf("Can't unbuild ASR PDU\n");
        !            48:                return;
        !            49:        }
        !            50: 
        !            51:        (void)printf("Result = %d\n",udr.result);
        !            52:        (void)printf("Version.bitcount = %d; Version = %x\n",
        !            53:                udr.version.bitcount,udr.version.bitstring);
        !            54:        (void)printf("F.U. bitcount = %d; F.U. = %x\n",
        !            55:                udr.func_units.bitcount,udr.func_units.bitstring);
        !            56:        if(udr.valid_coll)
        !            57:                (void)printf("valid_coll = %d; coll_winner = %d\n",
        !            58:                        udr.valid_coll,udr.coll_winner);
        !            59:        (void)printf("Valid_reason = %d\n",udr.valid_reason);
        !            60:        (void)printf("Sp Obj = %d  CDS Obj = %d   CSS Obj = %d   DEV Obj = %d\n",
        !            61:                udr.arg_list.num_sp_param,udr.arg_list.num_cds_objects,
        !            62:                udr.arg_list.num_css_objects,udr.arg_list.num_dev_objects);
        !            63: 
        !            64:        for(l=0; l<udr.arg_list.num_sp_param; l++)
        !            65:        {
        !            66:                (void)printf("\n");
        !            67:                (void)printf("Special Num = %d  Special Type = %d",
        !            68:                        udr.arg_list.sp_val[l].param_num,
        !            69:                        udr.arg_list.sp_val[l].param_type);
        !            70:                if(udr.arg_list.sp_val[l].param_type == 0)
        !            71:                {
        !            72:                        (void)printf("Boolean Type = %d\n",
        !            73:                                udr.arg_list.sp_val[l].args.bool_arg);
        !            74:                }
        !            75:                else if(udr.arg_list.sp_val[l].param_type == 1)
        !            76:                {
        !            77:                        (void)printf("Integer Type = %d\n",
        !            78:                                udr.arg_list.sp_val[l].args.int_arg);
        !            79:                }
        !            80:                else 
        !            81:                        (void)printf("Bad Special Param Type\n");
        !            82:        }
        !            83: 
        !            84:        for(l=0;l<udr.arg_list.num_cds_objects; l++)
        !            85:        {
        !            86:                (void)printf("\n\nObject Name = %s\n",udr.arg_list.cds_val[l].obj_name);
        !            87:                (void)printf("Valid:\n");
        !            88:                (void)printf("\tdimen(%d)   x_dim(%d)   y_dim(%d)   z_dim(%d)\n",
        !            89:                        udr.arg_list.cds_val[l].dimensions,
        !            90:                        udr.arg_list.cds_val[l].valid_x_dim,
        !            91:                        udr.arg_list.cds_val[l].valid_y_dim,
        !            92:                        udr.arg_list.cds_val[l].valid_z_dim);
        !            93:                (void)printf("\terase(%d)   repertoire(%d)   emph(%d)   fore(%d)\n",
        !            94:                        udr.arg_list.cds_val[l].valid_erasure,
        !            95:                        udr.arg_list.cds_val[l].valid_rep_list,
        !            96:                        udr.arg_list.cds_val[l].valid_emp_list,
        !            97:                        udr.arg_list.cds_val[l].valid_fore_color);
        !            98:                (void)printf("\tback(%d)   access right(%d)\n",
        !            99:                        udr.arg_list.cds_val[l].valid_back_color,
        !           100:                        udr.arg_list.cds_val[l].valid_access_right);
        !           101:                (void)printf("X Dimension:\n");
        !           102:                (void)printf("\tBound(%d)  addressing(%d)  absolute(%d)  window(%d)\n",
        !           103:                        udr.arg_list.cds_val[l].x_dim.bound_type,
        !           104:                        udr.arg_list.cds_val[l].x_dim.valid_addr,
        !           105:                        udr.arg_list.cds_val[l].x_dim.valid_abs,
        !           106:                        udr.arg_list.cds_val[l].x_dim.window_type);
        !           107:                (void)printf("\twindow size = %d\n",udr.arg_list.cds_val[l].x_dim.window);
        !           108:                (void)printf("Repertoires: (Number = %d)\n",
        !           109:                        udr.arg_list.cds_val[l].rep_value.num_reps);
        !           110:                for(i=0;i<udr.arg_list.cds_val[l].rep_value.num_reps;i++)
        !           111:                {
        !           112:                        (void)printf("\ttype(%d)   rep(%s)   capability(%d)   fonts(%d)\n",
        !           113:                                udr.arg_list.cds_val[l].rep_value.repertoire[i].rep_type,
        !           114:                                udr.arg_list.cds_val[l].rep_value.repertoire[i].rep_assign,
        !           115:                                udr.arg_list.cds_val[l].rep_value.repertoire[i].valid_font_cap,
        !           116:                                udr.arg_list.cds_val[l].rep_value.repertoire[i].num_fonts);
        !           117:                }
        !           118:        }
        !           119: 
        !           120: }
        !           121: 
        !           122: #endif
        !           123: 
        !           124: 
        !           125: #define        bitstr2int(arg,val,cnt) \
        !           126: { \
        !           127:     char   *cp; \
        !           128:  \
        !           129:     cp = bitstr2strb (arg, &cnt); \
        !           130:     val = strb2int (cp, cnt); \
        !           131:     free (cp); \
        !           132: }
        !           133: 
        !           134: %}
        !           135: 
        !           136: BEGIN
        !           137: 
        !           138: SECTIONS none unbuild none
        !           139: 
        !           140: ASRpdu ::= CHOICE
        !           141: 
        !           142: {
        !           143:        asrpdu [1] IMPLICIT ASRcontent [[p (PEPYPARM)parm]]
        !           144: }
        !           145: 
        !           146: ASRcontent 
        !           147: %{
        !           148:        ASR_MSG *arg = (ASR_MSG *)parm;
        !           149: %}
        !           150:        ::= SEQUENCE
        !           151: %{
        !           152:        arg->valid_reason = 0;
        !           153:        arg->valid_imp = 0;
        !           154:        arg->valid_coll = 0;
        !           155:        arg->version.bitcount = 0;
        !           156:        arg->func_units.bitcount = 0;
        !           157:        arg->arg_list.num_sp_param = 0;
        !           158: %}
        !           159: {
        !           160:        
        !           161:        userReason [0] IMPLICIT PrintableString [[s arg->reason.usr_reason]]
        !           162:        %{arg->reason.type = 0;
        !           163:          arg->valid_reason = 1;%}
        !           164:        OPTIONAL,
        !           165: 
        !           166:        provReason [1] IMPLICIT INTEGER [[i arg->reason.provider_reason]]
        !           167:        %{arg->reason.type = 1;
        !           168:        arg->valid_reason = 1;%}
        !           169:        OPTIONAL,
        !           170: 
        !           171:        [2] IMPLICIT INTEGER [[i arg->result]],
        !           172: 
        !           173:        [3] IMPLICIT ImplemIdent [[p (PEPYPARM)&(arg->imp_id)]]
        !           174:        %{arg->valid_imp = 1;%}
        !           175:        OPTIONAL,
        !           176: 
        !           177:        [4] IMPLICIT BITSTRING
        !           178:        %{ bitstr2int ($$, arg->version.bitstring, arg->version.bitcount); %},
        !           179: 
        !           180:        [5] IMPLICIT ArgumValueList [[p (PEPYPARM)&(arg->arg_list)]],
        !           181: 
        !           182:        [6] IMPLICIT BITSTRING
        !           183:        %{ bitstr2int ($$, arg->func_units.bitstring, arg->func_units.bitcount) ;%},
        !           184: 
        !           185:        [7] IMPLICIT INTEGER [[i arg->coll_winner]]
        !           186:        %{arg->valid_coll = 1;%}
        !           187:        OPTIONAL
        !           188: }
        !           189: 
        !           190: ImplemIdent 
        !           191: %{
        !           192:        IMPLEM_ID       *arg = (IMPLEM_ID *)parm;
        !           193: %}
        !           194:        ::= SEQUENCE
        !           195: %{
        !           196:        arg->oid_true = 0;
        !           197:        arg->name_true = 0;
        !           198:        arg->version_true = 0;
        !           199: %}
        !           200: {
        !           201:        impIdent [0] IMPLICIT OBJECT IDENTIFIER
        !           202:        [[O arg->imp_oid]]
        !           203:        %{arg->oid_true = 1;%},
        !           204: 
        !           205:        impName [1] IMPLICIT PrintableString
        !           206:        [[s arg->name]]
        !           207:        %{arg->name_true = 1;%},
        !           208: 
        !           209:        impVersion [2] IMPLICIT PrintableString
        !           210:        [[s arg->version]]
        !           211:        %{arg->version_true = 1;%}
        !           212: }
        !           213: 
        !           214: ArgumValueList 
        !           215: %{
        !           216:        ARG_VAL_LIST    *arg = (ARG_VAL_LIST *)parm;
        !           217: %}
        !           218:        ::= SET OF %{q = arg->num_sp_param;%} Squat [[p parm]]
        !           219: 
        !           220: 
        !           221: Squat ::= CHOICE
        !           222: {
        !           223:        specArgs        [0] IMPLICIT SpecialArgs [[p parm]],
        !           224:        vteParams       [1] IMPLICIT ParamValueList [[p parm]]
        !           225: }
        !           226: 
        !           227: SpecialArgs 
        !           228: %{
        !           229:        ARG_VAL_LIST    *arg = (ARG_VAL_LIST *)parm;
        !           230: %}
        !           231:        ::= SEQUENCE
        !           232: {
        !           233:        identifier INTEGER [[i arg->sp_val[q].param_num]],
        !           234:        value CHOICE
        !           235:        {
        !           236:                BOOLEAN [[b arg->sp_val[q].args.bool_arg]]
        !           237:                %{arg->sp_val[q].param_type = 0;%},
        !           238:                INTEGER [[i arg->sp_val[q].args.int_arg]]
        !           239:                %{arg->sp_val[q].param_type = 1;%},
        !           240:                PrintableString[[s arg->sp_val[q].args.string_arg]]
        !           241:                %{arg->sp_val[q].param_type = 2;%}
        !           242:        }
        !           243: 
        !           244:        %{++arg->num_sp_param;
        !           245:          if(arg->num_sp_param >= MAXSPARGS) return(OK);
        !           246:        %}
        !           247: }
        !           248: 
        !           249: ParamValueList 
        !           250: %{
        !           251:        ARG_VAL_LIST    *arg = (ARG_VAL_LIST *)parm;
        !           252: %}
        !           253:        ::= SEQUENCE
        !           254: %{
        !           255: /*     arg->num_cds_objects = 0;*/
        !           256: %}
        !           257: {
        !           258:        displayObjects  [0] IMPLICIT CDSValues [[p parm]]
        !           259:        OPTIONAL,
        !           260: 
        !           261: --     controlObjects  [1] IMPLICIT CSSValues [[p parm]]
        !           262: --     OPTIONAL,
        !           263: 
        !           264: --     deviceObjects   [2] IMPLICIT DEVValues [[p parm]]
        !           265: --     OPTIONAL,
        !           266: 
        !           267:        deliveryControl [3] IMPLICIT INTEGER
        !           268:        [[i arg->del_ctrl]]
        !           269:        OPTIONAL
        !           270: }
        !           271: 
        !           272: --Note Problem with IMPLICIT SEQUENCE Definition below.  PEPY does not accept
        !           273: --it as defined in 9041 and in fact that definition is ridiculous.  At the
        !           274: --moment it is not clear if even hand coding available in ISODE 3.0 can
        !           275: --produce the requirement of 9041.
        !           276: 
        !           277: CDSValues 
        !           278: %{
        !           279:        ARG_VAL_LIST    *arg = (ARG_VAL_LIST *)parm;
        !           280: %}
        !           281:        ::= 
        !           282: SET OF %{l = arg->num_cds_objects;%} SEQUENCE
        !           283: {
        !           284:        objectName PrintableString
        !           285:                [[s arg->cds_val[l].obj_name]],
        !           286: 
        !           287:        ObjectOffer [[p (PEPYPARM)&(arg->cds_val[l])]]
        !           288:        %{ ++arg->num_cds_objects;
        !           289:           if(arg->num_cds_objects >= MAXCDSOBJ) return(OK);
        !           290:        %}
        !           291: }
        !           292: 
        !           293: CSSValues ::= NULL --Unused for now--
        !           294: 
        !           295: DEVValues ::= NULL --Unused for now--
        !           296: 
        !           297: ObjectOffer 
        !           298: %{
        !           299:        CDS_VALUE       *arg = (CDS_VALUE *)parm;
        !           300: %}
        !           301:        ::= SEQUENCE
        !           302: %{
        !           303:        arg->dimensions = 0;
        !           304:        arg->valid_x_dim = 0;
        !           305:        arg->valid_y_dim = 0;
        !           306:        arg->valid_z_dim = 0;
        !           307:        arg->valid_erasure = 0;
        !           308:        arg->valid_rep_list = 0;
        !           309:        arg->valid_emp_list = 0;
        !           310:        arg->valid_fore_color = 0;
        !           311:        arg->valid_back_color = 0;
        !           312:        arg->valid_access_right = 0;
        !           313: %}
        !           314: {
        !           315:        dimensionValue [0]      IMPLICIT INTEGER
        !           316:        [[i arg->dimensions]]
        !           317:        OPTIONAL,
        !           318: 
        !           319:        xParamValue [1]         IMPLICIT DimValue [[p (PEPYPARM)&(arg->x_dim)]]
        !           320:        %{arg->valid_x_dim = 1;%}
        !           321:        OPTIONAL,
        !           322: 
        !           323:        yParamValue [2]         IMPLICIT DimValue [[p (PEPYPARM)&(arg->y_dim)]]
        !           324:        %{arg->valid_y_dim = 1;%}
        !           325:        OPTIONAL,
        !           326: 
        !           327:        zParamValue [3]         IMPLICIT DimValue [[p (PEPYPARM)&(arg->z_dim)]]
        !           328:        %{arg->valid_z_dim = 1;%}
        !           329:        OPTIONAL,
        !           330: 
        !           331: --     erasurevalue [4]        IMPLICIT BOOLEAN
        !           332: --     [[b arg->erasure]]
        !           333: --     %{arg->valid_erasure = 1;%}
        !           334: --     OPTIONAL,
        !           335: 
        !           336:        repValueList [5]        IMPLICIT CompRepValue [[p (PEPYPARM)&(arg->rep_value)]]
        !           337:        %{arg->valid_rep_list = 1;%}
        !           338:        OPTIONAL,
        !           339: 
        !           340: --     empValueList [6]        IMPLICIT CompEmpValue [[p (PEPYPARM)&(arg->emp_value)]]
        !           341: --     %{arg->valid_emp_list = 1;%}
        !           342: --     OPTIONAL,
        !           343: 
        !           344: --     foreColorVal [7]        IMPLICIT ColorValue [[p (PEPYPARM)&(arg->fore_color_list)]]
        !           345: --     %{arg->valid_fore_color = 1;%}
        !           346: --     OPTIONAL,
        !           347: 
        !           348: --     backColorVal [8]        IMPLICIT ColorValue [[p (PEPYPARM)&(arg->back_color_list)]]
        !           349: --     %{arg->valid_back_color = 1;%}
        !           350: --     OPTIONAL,
        !           351: 
        !           352:        objectAccRight [9]      IMPLICIT INTEGER
        !           353:        [[i arg->access_right]]
        !           354:        %{arg->valid_access_right = 1;%}
        !           355:        OPTIONAL
        !           356: }
        !           357: 
        !           358: DimValue 
        !           359: %{
        !           360:        DIMEN_VALUE     *arg = (DIMEN_VALUE *)parm;
        !           361: %}
        !           362:        ::= SEQUENCE
        !           363: %{
        !           364:        arg->bound_type = 0;
        !           365:        arg->valid_addr = 0;
        !           366:        arg->valid_abs = 0;
        !           367:        arg->window_type = 0;
        !           368: %}
        !           369: {
        !           370:        bound           [0] CHOICE
        !           371:        {
        !           372:                unbounded NULL
        !           373:                %{arg->bound_type = 1;%},
        !           374: 
        !           375:                limit INTEGER
        !           376:                [[i arg->bound]]
        !           377:                %{arg->bound_type = 2;%}
        !           378:        }
        !           379:        OPTIONAL,
        !           380: 
        !           381:        addressing      [1] IMPLICIT INTEGER
        !           382:        [[i arg->addressing]]
        !           383:        OPTIONAL,
        !           384: 
        !           385:        absolute        [2] IMPLICIT INTEGER
        !           386:        [[i arg->absolute]]
        !           387:        OPTIONAL,
        !           388: 
        !           389:        window          [3] CHOICE
        !           390:        {
        !           391:                unbounded NULL
        !           392:                %{arg->window_type = 1;%},
        !           393: 
        !           394:                limit INTEGER
        !           395:                [[i arg->window]]
        !           396:                %{arg->window_type = 2;%}
        !           397:        }
        !           398:        OPTIONAL
        !           399: }
        !           400: 
        !           401: CompRepValue 
        !           402: %{
        !           403:        REP_VALUE       *arg = (REP_VALUE *)parm;
        !           404: %}
        !           405:        ::= SEQUENCE
        !           406: %{
        !           407:        arg->valid_cap = 0;
        !           408:        arg->num_reps = 0;
        !           409: %}
        !           410: {
        !           411:        repCapability   [0] IMPLICIT INTEGER
        !           412:        [[i arg->capability]]
        !           413:        %{arg->valid_cap = 1;%}
        !           414:        OPTIONAL,
        !           415:                        [1] IMPLICIT SEQUENCE OF 
        !           416:        %{m =  arg->num_reps;%}
        !           417:        RepFontValue [[p (PEPYPARM)&(arg->repertoire[m])]]
        !           418:        %{++arg->num_reps;
        !           419:          if(arg->num_reps >= MAXREPS) return(OK);
        !           420:        %}
        !           421:        OPTIONAL
        !           422: }
        !           423: 
        !           424: RepFontValue 
        !           425: %{
        !           426:        FONT_VALUE      *arg = (FONT_VALUE *)parm;
        !           427: %}
        !           428:        ::= 
        !           429: CHOICE
        !           430: %{
        !           431:        arg->valid_font_cap = 0;
        !           432:        arg->num_fonts = 0;
        !           433:        arg->rep_assign = 0;
        !           434: %}
        !           435: {
        !           436:        NULL
        !           437:        %{arg->rep_type = 1;%},
        !           438: 
        !           439:        SEQUENCE
        !           440:        {
        !           441:                repertoire      [0] IMPLICIT PrintableString
        !           442:                [[s arg->rep_assign]]
        !           443:                OPTIONAL,
        !           444: 
        !           445:                fontCapability  [1] IMPLICIT INTEGER
        !           446:                [[i arg->capability]]
        !           447:                %{++arg->valid_font_cap;%}
        !           448:                OPTIONAL,
        !           449: 
        !           450:                [2] IMPLICIT SEQUENCE OF
        !           451:                %{n = arg->num_fonts;%}
        !           452:                PrintableString
        !           453:                [[s arg->font_names[n] ]]
        !           454:                %{
        !           455:                        ++arg->num_fonts;
        !           456:                        if(arg->num_fonts >= MAXFONTS) return(OK);
        !           457:                %}
        !           458:                OPTIONAL
        !           459:        }
        !           460: }
        !           461: 
        !           462: --CompEmpValue 
        !           463: --%{
        !           464: --             EMP_VALUE       *arg = (EMP_VALUE *)parm;
        !           465: --%}
        !           466: --     ::= SEQUENCE
        !           467: --%{arg->valid_cap = 0;
        !           468: --  arg->num_emps = 0;
        !           469: --%}
        !           470: --{
        !           471: --     empCap          [0] IMPLICIT INTEGER
        !           472: --                     [[i arg->capability]]
        !           473: --                     %{arg->valid_cap = 1;%}
        !           474: --                     OPTIONAL,
        !           475: 
        !           476: --                     SEQUENCE OF %{m = arg->num_emps;%}
        !           477: --                             PrintableString
        !           478: --                             [[s arg->emp_string[m] ]]
        !           479: --                             %{++arg->num_emps;
        !           480: --                               if(arg->num_emps >= MAXEMPS) return(OK);
        !           481: --                             %}
        !           482: --                     OPTIONAL
        !           483: --}
        !           484: 
        !           485: --ColorValue 
        !           486: --%{
        !           487: --             COLOR_VALUE     *arg = (COLOR_VALUE *)parm;
        !           488: --%}
        !           489: --     ::= SEQUENCE
        !           490: --%{
        !           491: --     arg->valid_cap = 0;
        !           492: --     arg->num_colors = 0;
        !           493: --%}
        !           494: --{
        !           495: --     colorCap        [0] IMPLICIT INTEGER
        !           496: --                     [[i arg->capability]]
        !           497: --                     %{arg->valid_cap = 1;%}
        !           498: --                     OPTIONAL,
        !           499: 
        !           500: --     colorNames      SEQUENCE OF %{m = arg->num_colors;%}
        !           501: --                             PrintableString
        !           502: --                             [[s arg->color_string[m] ]]
        !           503: --                             %{++arg->num_colors;
        !           504: --                               if(arg->num_colors >= MAXCOLORS) return(OK);
        !           505: --                             %}
        !           506: --}
        !           507: 
        !           508: END
        !           509: 
        !           510: %{
        !           511: 
        !           512: 
        !           513: %}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.