
[01;34mwith[m Ada[31m.[mNumerics[31m.[mDiscrete_Random[31m;[m

[01;34mwith[m Text_Io[31m;[m                           [01;34muse[m Text_Io[31m;[m
[01;34mpackage[m [01;34mbody[m Gmface[31m.[mGm_Virtual [01;34mis[m
   [31m-------------------------------------------------------------[m
   [31m--[m
   
   [01;34mfunction[m [01;30mIs_Formed[m[31m([mTrue_Table [31m:[m True_Table_Type[31m;[m
		      Category_Index [31m:[m Category_Index_Type[31m;[m
		      Prev       [31m:[m Break_Type [31m:=[m Null_Break[31m;[m
		      Next       [31m:[m Break_Type [31m:=[m Null_Break[31m)[m [01;34mreturn[m [32mBoolean[m [01;34mis[m
      

   [01;34mbegin[m
      [01;34mreturn[m [01;30mTrue_Table[m[31m([mCategory_Index[31m,[m Prev[31m,[m Next[31m);[m

   [01;34mend[m Is_Formed[31m;[m
   
   
   [01;34mpackage[m Bool_Rand [01;34mis[m [01;34mnew[m Ada[31m.[mNumerics[31m.[m[01;30mDiscrete_Random[m[31m([m[32mBoolean[m[31m);[m
   
   [01;34mprocedure[m [01;30mTrue_Table_Initialize[m[31m([mTrue_Table [31m:[m [01;34min[m [01;34mout[m True_Table_Type[31m)[m [01;34mis[m
      
      Bool_Gen [31m:[m Bool_Rand[31m.[mGenerator[31m;[m
      
   [01;34mbegin[m	 
      Bool_Rand[31m.[m[01;30mReset[m[31m([mBool_Gen[31m);[m
      
      [01;34mfor[m Next_Id [01;34min[m Break_Type'[01;34mRange[m [01;34mloop[m
	 [01;34mfor[m Prev_Id [01;34min[m Break_Type'[01;34mRange[m [01;34mloop[m
	    [01;34mfor[m Category_Id [01;34min[m Category_Index_Type'[01;34mRange[m [01;34mloop[m		  		  
	       [01;30mTrue_Table[m[31m([mCategory_id[31m,[m Prev_id[31m,[m Next_id[31m)[m [31m:=[m 		 
		 Bool_Rand[31m.[m[01;30mRandom[m[31m([mBool_Gen[31m)[m [01;34mor[m Bool_Rand[31m.[m[01;30mRandom[m[31m([mBool_Gen[31m)[m [01;34mor[m
		 Bool_Rand[31m.[m[01;30mRandom[m[31m([mBool_Gen[31m)[m [01;34mor[m Bool_Rand[31m.[m[01;30mRandom[m[31m([mBool_Gen[31m);[m
	    [01;34mend[m [01;34mloop[m[31m;[m
	 [01;34mend[m [01;34mloop[m[31m;[m
      [01;34mend[m [01;34mloop[m[31m;[m      
   [01;34mend[m True_Table_Initialize[31m;[m
   
   
   [31m--[m
   [31m--------------------------------------------------------------[m
   
      
   [01;34mprocedure[m [01;30mInitialize[m [31m([mPlug      [31m:[m [01;34min[m [01;34mout[m Plugin_Class[31m;[m
			 Id        [31m:[m [01;34min[m Plugin_Num[31m;[m
			 Device    [31m:[m [01;34min[m Device_Num[31m;[m
			 Ch        [31m:[m [01;34min[m Channel_Num[31m)[m [01;34mis[m
   [01;34mbegin[m
      Plug[31m.[mId [31m:=[m Id[31m;[m
      Plug[31m.[mDevice_Id [31m:=[m Device[31m;[m
      Plug[31m.[mCh_Id [31m:=[m Ch[31m;[m
   [01;34mend[m Initialize[31m;[m
   
   [01;34mprocedure[m [01;30mSet_Id[m[31m([mPlug       [31m:[m [01;34min[m [01;34mout[m Plugin_Class[31m;[m
		    Id        [31m:[m [01;34min[m Plugin_Num[31m)[m [01;34mis[m
   [01;34mbegin[m
      Plug[31m.[mId [31m:=[m Id[31m;[m
   [01;34mend[m Set_Id[31m;[m
   
   [01;34mfunction[m [01;30mGet_Id[m[31m([mPlug        [31m:[m [01;34min[m Plugin_Class[31m)[m [01;34mreturn[m Plugin_Num [01;34mis[m
   [01;34mbegin[m
      [01;34mreturn[m Plug[31m.[mId[31m;[m
   [01;34mend[m Get_Id[31m;[m
   
   [01;34mprocedure[m [01;30mSet_Device[m[31m([mPlug       [31m:[m [01;34min[m [01;34mout[m Plugin_Class[31m;[m
			Device    [31m:[m [01;34min[m Device_Num[31m)[m [01;34mis[m
   [01;34mbegin[m
      Plug[31m.[mDevice_Id [31m:=[m Device[31m;[m
   [01;34mend[m Set_Device[31m;[m
   
   [01;34mfunction[m [01;30mGet_Device[m[31m([mPlug        [31m:[m [01;34min[m Plugin_Class[31m)[m [01;34mreturn[m Device_Num [01;34mis[m
   [01;34mbegin[m
      [01;34mreturn[m Plug[31m.[mDevice_Id[31m;[m
   [01;34mend[m Get_Device[31m;[m
   
   [01;34mprocedure[m [01;30mSet_Channel[m[31m([mPlug       [31m:[m [01;34min[m [01;34mout[m Plugin_Class[31m;[m
			 Ch        [31m:[m [01;34min[m Channel_Num[31m)[m [01;34mis[m
   [01;34mbegin[m
      Plug[31m.[mCh_Id [31m:=[m Ch[31m;[m
   [01;34mend[m Set_Channel[31m;[m
   
   [01;34mfunction[m [01;30mGet_Channel[m[31m([mPlug        [31m:[m [01;34min[m Plugin_Class[31m)[m [01;34mreturn[m Channel_Num [01;34mis[m
   [01;34mbegin[m
      [01;34mreturn[m Plug[31m.[mCh_Id[31m;[m
   [01;34mend[m Get_Channel[31m;[m
   
   

   [01;34mprocedure[m [01;30mPrint[m[31m([mFilename [31m:[m [01;34min[m [32mString[m[31m;[m Plug [31m:[m [01;34min[m Plugin_Class[31m)[m [01;34mis[m
      File [31m:[m File_Type[31m;[m
   [01;34mbegin[m
      [01;30mOpen[m[31m([mFile[31m,[m Append_File[31m,[m Filename[31m);[m      
      [01;30mPut_Line[m[31m([mFile[31m,[m [32mBoolean[m'[01;30mImage[m[31m([mPlug[31m.[mPrinted[31m));[m
      [01;30mPut_Line[m[31m([mFile[31m,[m [32mBoolean[m'[01;30mImage[m[31m([mPlug[31m.[mMutted[31m));[m            
      [01;30mPut_Line[m[31m([mFile[31m,[m Channel_Num'[01;30mImage[m[31m([mPlug[31m.[mCh_Id[31m));[m      
      [01;30mPut_Line[m[31m([mFile[31m,[m Device_Num'[01;30mImage[m[31m([mPlug[31m.[mDevice_Id[31m));[m
      [01;30mPut_Line[m[31m([mFile[31m,[m Plug[31m.[mName[31m.[m[01;34mall[m[31m);[m
      [01;30mClose[m[31m([mFile[31m);[m
   [01;34mend[m Print[31m;[m
[01;34mend[m Gmface[31m.[mGm_Virtual[31m;[m
