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

📄 updatetolatest.java

📁 fortran并行计算包
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* *  (C) 2001 by Argonne National Laboratory *      See COPYRIGHT in top-level directory. *//* *  @author  Anthony Chan */package logformat.slog2.update;import base.drawable.Kind;import base.drawable.Topology;import base.drawable.Category;import base.drawable.Drawable;import base.drawable.Primitive;import base.drawable.Composite;import base.drawable.YCoordMap;import logformat.slog2.LineIDMap;import logformat.slog2.CategoryMap;import logformat.slog2.LineIDMapList;import logformat.slog2.TraceName;import logformat.slog2.output.TreeTrunk;import logformat.slog2.output.OutputLog;import java.util.Date;import java.util.Arrays;import java.util.Map;import java.util.HashMap;import java.util.StringTokenizer;public class UpdateToLatest{    private static short    num_children_per_node = 0;    private static int      leaf_bytesize         = 0;    private static String   in_filename, out_filename;    private static boolean  enable_endtime_check;    private static boolean  continue_when_violation;    // Category indexes to be deleted    private static int[]    del_iobjdefs;    public static final void main( String[] args )    {        WrappedInputLog    dobj_ins;        OutputLog          slog_outs;        Kind               next_kind;        Topology           topo;        CategoryMap        objdefs;   // Drawable def'n        Map                shadefs;   // Shadow   def'n        Category           objdef;        LineIDMapList      lineIDmaps;        LineIDMap          lineIDmap;        Primitive          prime_obj;        Composite          cmplx_obj;        long               Nobjs;        TreeTrunk          treetrunk;        double             prev_dobj_endtime;        double             curr_dobj_endtime;        long               offended_Nobjs;        Drawable           offended_dobj;        //  Initialize prev_dobj_endtime to avoid complaint by compiler        prev_dobj_endtime = Double.NEGATIVE_INFINITY;        offended_Nobjs    = Integer.MIN_VALUE;        offended_dobj     = null;        out_filename      = null;        del_iobjdefs      = null;        parseCmdLineArgs( args );        if ( out_filename == null )            out_filename  = TraceName.getDefaultSLOG2Name( in_filename );        objdefs       = new CategoryMap();        shadefs       = new HashMap();        lineIDmaps    = new LineIDMapList();        Nobjs         = 0;        // Initialize the SLOG-2 file for piped-input, output for this program.        dobj_ins   = new WrappedInputLog( in_filename );        if ( dobj_ins == null ) {            System.err.println( "Null input logfile!" );            System.exit( 1 );        }        if ( ! dobj_ins.isSLOG2() ) {            System.err.println( in_filename + " is NOT SLOG-2 file!." );            System.exit( 1 );        }        String err_msg;        if ( (err_msg = dobj_ins.getCompatibleHeader()) != null ) {            System.err.print( err_msg );            WrappedInputLog.stdoutConfirmation();        }        dobj_ins.initialize();        /* */    Date time1 = new Date();        slog_outs  = new OutputLog( out_filename );        //  Set Tree properties, !optional!        //  TreeNode's minimum size, without any drawable/shadow, is 38 bytes.        //  Drawable;s minimum size is 32 bytes, whether it is state/arrow.        //  Arrow( with 2 integer infovalues ) is 40 bytes long.        //  So, for 1 state primitive leaf, the size is 38 + 40 = 78 .        if ( leaf_bytesize > 0 )            slog_outs.setTreeLeafByteSize( leaf_bytesize );        else            slog_outs.setTreeLeafByteSize( dobj_ins.getTreeLeafByteSize() );        if ( num_children_per_node > 0 )            slog_outs.setNumChildrenPerNode( num_children_per_node );        else            slog_outs.setNumChildrenPerNode( dobj_ins.getNumChildrenPerNode() );        treetrunk = new TreeTrunk( slog_outs, shadefs );        /* */    Date time2 = new Date();        while ( ( next_kind = dobj_ins.peekNextKind() ) != Kind.EOF ) {            if ( next_kind == Kind.TOPOLOGY ) {                topo = dobj_ins.getNextTopology();                // Put in the default Shadow categories in case the original                // does not have any shadow categories, i.e no shadows.                objdef = Category.getShadowCategory( topo );                objdefs.put( new Integer( objdef.getIndex() ), objdef );                shadefs.put( topo, objdef );            }            else if ( next_kind == Kind.YCOORDMAP ) {                lineIDmap = new LineIDMap( dobj_ins.getNextYCoordMap() );                lineIDmaps.add( lineIDmap );            }            else if ( next_kind == Kind.CATEGORY ) {                objdef = dobj_ins.getNextCategory();                if ( objdef.isShadowCategory() ) {                    objdefs.put( new Integer( objdef.getIndex() ), objdef );                    shadefs.put( objdef.getTopology(), objdef );                }                // Category can be removed here for efficiency reason.                // Instead let CategoryMap.removeUnusedCategories() do the work.                // if ( isCategoryToBeRemoved( objdef.getIndex() ) )                //     continue;                objdefs.put( new Integer( objdef.getIndex() ), objdef );                objdef.setUsed( false );            }             else if ( next_kind == Kind.PRIMITIVE ) {                prime_obj = dobj_ins.getNextPrimitive();                // Undo InfoBox.resolveCategory() when the Drawable is read.                prime_obj.releaseCategory();                if ( isCategoryToBeRemoved( prime_obj.getCategoryIndex() ) ) {                    // System.out.println( "Removing ... " + prime_obj );                    continue;                }                prime_obj.resolveCategory( objdefs );                // postponed, wait till on-demand decoding of InfoBuffer                // prime_obj.decodeInfoBuffer();                Nobjs++;                // System.out.println( Nobjs + " : " + prime_obj );                if ( enable_endtime_check ) {                    if ( ! prime_obj.isTimeOrdered() ) {                        System.out.println( "**** Primitive Time Error ****" );                        if ( ! continue_when_violation )                            System.exit( 1 );                    }                    curr_dobj_endtime = prime_obj.getLatestTime();                    if ( prev_dobj_endtime > curr_dobj_endtime ) {                        System.err.println( "**** Violation of "                                          + "Increasing Endtime Order ****\n"                                          + "\t Offended Drawable -> "                                          + offended_Nobjs + " : "                                          + offended_dobj + "\n"                                          + "\t Offending Primitive -> "                                          + Nobjs + " : " + prime_obj + "\n"                                          + "   previous drawable endtime ( "                                          + prev_dobj_endtime + " ) "                                          + " > current drawable endtiime ( "                                          + curr_dobj_endtime + " ) " );                        if ( ! continue_when_violation )                            System.exit( 1 );                    }                    offended_Nobjs    = Nobjs;                    offended_dobj     = prime_obj;                    prev_dobj_endtime = curr_dobj_endtime;                }                treetrunk.addDrawable( prime_obj );            }            else if ( next_kind == Kind.COMPOSITE ) {                cmplx_obj = dobj_ins.getNextComposite();                // Undo InfoBox.resolveCategory() when the Drawable is read.                cmplx_obj.releaseCategory();                if ( isCategoryToBeRemoved( cmplx_obj.getCategoryIndex() ) ) {                    // System.out.println( "Removing ... " + cmplx_obj );                    continue;                }                cmplx_obj.resolveCategory( objdefs );                // postponed, wait till on-demand decoding of InfoBuffer                // cmplx_obj.decodeInfoBuffer();                Nobjs++;                // System.out.println( Nobjs + " : " + cmplx_obj );                if ( enable_endtime_check ) {                    if ( ! cmplx_obj.isTimeOrdered() ) {                        System.out.println( "**** Composite Time Error ****" );                        if ( ! continue_when_violation )                            System.exit( 1 );                    }                    curr_dobj_endtime = cmplx_obj.getLatestTime();                    if ( prev_dobj_endtime > curr_dobj_endtime ) {                        System.err.println( "***** Violation of "                                          + "Increasing Endtime Order! *****\n"                                          + "\t Offended Drawable -> "                                          + offended_Nobjs + " : "                                          + offended_dobj + "\n"                                          + "\t Offending Composite -> "                                          + Nobjs + " : " + cmplx_obj + "\n"                                          + "   previous drawable endtime ( "                                          + prev_dobj_endtime + " ) "                                          + " > current drawable endtiime ( "                                          + curr_dobj_endtime + " ) " );                        if ( ! continue_when_violation )                            System.exit( 1 );                    }                    offended_Nobjs    = Nobjs;                    offended_dobj     = cmplx_obj;                    prev_dobj_endtime = curr_dobj_endtime;

⌨️ 快捷键说明

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