All Downloads are FREE. Search and download functionalities are using the official Maven repository.

smetana.core.Z Maven / Gradle / Ivy

Go to download

PlantUML is a component that allows to quickly write : * sequence diagram, * use case diagram, * class diagram, * activity diagram, * component diagram, * state diagram * object diagram

The newest version!
/* ========================================================================
 * PlantUML : a free UML diagram generator
 * ========================================================================
 *
 * Project Info:  http://plantuml.com
 * 
 * If you like this project or if you find it useful, you can support us at:
 * 
 * http://plantuml.com/patreon (only 1$ per month!)
 * http://plantuml.com/paypal
 * 
 * This file is part of Smetana.
 * Smetana is a partial translation of Graphviz/Dot sources from C to Java.
 *
 * (C) Copyright 2009-2017, Arnaud Roques
 *
 * This translation is distributed under the same Licence as the original C program.
 * 
 * THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
 * LICENSE ("AGREEMENT"). [Eclipse Public License - v 1.0]
 * 
 * ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES
 * RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
 * 
 * You may obtain a copy of the License at
 * 
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */

package smetana.core;

import static smetana.core.JUtils.function;
import gen.lib.cdt.dttree__c;
import gen.lib.cgraph.attr__c;
import gen.lib.cgraph.edge__c;
import gen.lib.cgraph.graph__c;
import gen.lib.cgraph.id__c;
import gen.lib.cgraph.mem__c;
import gen.lib.cgraph.node__c;
import gen.lib.cgraph.utils__c;
import gen.lib.common.arrows__c;
import gen.lib.common.shapes__c;
import gen.lib.dotgen.dotsplines__c;
import h.Agdesc_s;
import h.Agedge_s;
import h.Agiddisc_s;
import h.Agmemdisc_s;
import h.Agnode_s;
import h.Agraph_s;
import h.Agsubnode_s;
import h.Agsym_s;
import h.Agtag_s;
import h._dt_s;
import h._dtdisc_s;
import h._dtmethod_s;
import h.arrowname_t;
import h.arrowtype_t;
import h.boxf;
import h.deque_t;
import h.elist;
import h.nlist_t;
import h.pointf;
import h.pointnlink_t;
import h.polygon_t;
import h.port;
import h.refstr_t;
import h.shape_desc;
import h.shape_functions;
import h.splineInfo;
import h.textfont_t;

import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;

public class Z {

	private static final ThreadLocal> instances2 = new ThreadLocal>();

	public final Map all = new HashMap();

	public final __struct__<_dtmethod_s> _Dttree = __struct__.from(_dtmethod_s.class);
	public final _dtmethod_s Dttree = _Dttree.amp();

	public final __struct__<_dtdisc_s> AgDataDictDisc = __struct__.from(_dtdisc_s.class);

	public final __struct__ ProtoDesc = __struct__.from(Agdesc_s.class);

	public Agraph_s ProtoGraph;

	public final __struct__ Tag = __struct__.from(Agtag_s.class);

	public final __struct__<_dtdisc_s> Ag_mainedge_seq_disc = __struct__.from(_dtdisc_s.class);

	public final __struct__<_dtdisc_s> Ag_subedge_seq_disc = __struct__.from(_dtdisc_s.class);

	public final __struct__<_dtdisc_s> Ag_subedge_id_disc = __struct__.from(_dtdisc_s.class);

	public final __struct__<_dtdisc_s> Ag_subgraph_id_disc = __struct__.from(_dtdisc_s.class);

	public final __struct__ AgIdDisc = __struct__.from(Agiddisc_s.class);

	public final __struct__ AgMemDisc = __struct__.from(Agmemdisc_s.class);

	public final __struct__<_dtdisc_s> Ag_subnode_id_disc = __struct__.from(_dtdisc_s.class);

	public final __struct__<_dtdisc_s> Ag_subnode_seq_disc = __struct__.from(_dtdisc_s.class);

	public int HTML_BIT;

	public int CNT_BITS;

	public final __struct__<_dtdisc_s> Refstrdisc = __struct__.from(_dtdisc_s.class);

	public _dt_s Refdict_default;

	public Agraph_s Ag_dictop_G;

	public final __array_of_struct__ Arrowsynonyms = __array_of_struct__.malloc(arrowname_t.class, 1);

	public final __array_of_struct__ Arrownames = __array_of_struct__.malloc(arrowname_t.class, 3);

	public final __array_of_struct__ Arrowmods = __array_of_struct__.malloc(arrowname_t.class, 1);

	public final __array_of_struct__ Arrowtypes = __array_of_struct__.malloc(arrowtype_t.class, 9);

	public __ptr__ Show_boxes;

	public int CL_type;

	public boolean Concentrate;

	public int MaxIter;

	public int State;

	public int EdgeLabelsDone;

	public double Initial_dist;

	public Agsym_s G_activepencolor, G_activefillcolor, G_selectedpencolor, G_selectedfillcolor, G_visitedpencolor,
			G_visitedfillcolor, G_deletedpencolor, G_deletedfillcolor, G_ordering, G_peripheries, G_penwidth,
			G_gradientangle, G_margin;

	public Agsym_s N_height, N_width, N_shape, N_color, N_fillcolor, N_activepencolor, N_activefillcolor,
			N_selectedpencolor, N_selectedfillcolor, N_visitedpencolor, N_visitedfillcolor, N_deletedpencolor,
			N_deletedfillcolor, N_fontsize, N_fontname, N_fontcolor, N_margin, N_label, N_xlabel, N_nojustify, N_style,
			N_showboxes, N_sides, N_peripheries, N_ordering, N_orientation, N_skew, N_distortion, N_fixed,
			N_imagescale, N_layer, N_group, N_comment, N_vertices, N_z, N_penwidth, N_gradientangle;

	public Agsym_s E_weight, E_minlen, E_color, E_fillcolor, E_activepencolor, E_activefillcolor, E_selectedpencolor,
			E_selectedfillcolor, E_visitedpencolor, E_visitedfillcolor, E_deletedpencolor, E_deletedfillcolor,
			E_fontsize, E_fontname, E_fontcolor, E_label, E_xlabel, E_dir, E_style, E_decorate, E_showboxes, E_arrowsz,
			E_constr, E_layer, E_comment, E_label_float, E_samehead, E_sametail, E_arrowhead, E_arrowtail, E_headlabel,
			E_taillabel, E_labelfontsize, E_labelfontname, E_labelfontcolor, E_labeldistance, E_labelangle, E_tailclip,
			E_headclip, E_penwidth;

	public int N_nodes, N_edges;

	public int Minrank, Maxrank;

	public int S_i;

	public int Search_size;

	public final __struct__ Tree_node = __struct__.from(nlist_t.class);

	public final __struct__ Tree_edge = __struct__.from(elist.class);

	public Agedge_s Enter;

	public int Low, Lim, Slack;

	public int Rankdir;

	public boolean Flip;

	public final __struct__ Offset = __struct__.from(pointf.class);

	public int nedges, nboxes;

	public int routeinit;

	public __ptr__ ps;

	public int maxpn;

	public __ptr__ polypoints;

	public int polypointn;

	public __ptr__ edges;

	public int edgen;

	public __array_of_struct__ boxes = __array_of_struct__.malloc(boxf.class, 1000);

	public int MinQuit;

	public double Convergence;

	public Agraph_s Root;

	public int GlobalMinRank, GlobalMaxRank;

	public boolean ReMincross;

	public __ptr__ TE_list;

	public __ptr__ TI_list;

	public Agnode_s Last_node_decomp;
	public Agnode_s Last_node_rank;

	public char Cmark;

	public int trin, tril;

	public __ptr__ tris;

	public int pnln, pnll;

	public pointnlink_t pnls;
	public __ptr__ pnlps;

	public final __struct__ Center = __struct__.from(port.class);

	public final __struct__ p_ellipse = __struct__.from(polygon_t.class);

	public final __struct__ p_box = __struct__.from(polygon_t.class);

	public final __struct__ poly_fns = __struct__.from(shape_functions.class);

	public __ptr__ tnas;
	public int tnan;

	public final shape_desc Shapes[] = { __Shapes__("box", poly_fns.amp(), p_box.amp()),
			__Shapes__("ellipse", poly_fns.amp(), p_ellipse.amp()), __Shapes__(null, null, null) };

	public final __struct__<_dtdisc_s> Ag_mainedge_id_disc = __struct__.from(_dtdisc_s.class);

	public final __struct__ dq = __struct__.from(deque_t.class);

	public final __struct__ Agdirected = __struct__.from(Agdesc_s.class);

	public final __struct__ sinfo = __struct__.from(splineInfo.class);

	public Agnode_s lastn; /* last node argument */
	public polygon_t poly;
	public int last, outp, sides;
	public final __struct__ O = __struct__.from(pointf.class); /* point (0,0) */
	public pointf vertex;
	public double xsize, ysize, scalex, scaley, box_URx, box_URy;

	public final __struct__ tf = __struct__.from(textfont_t.class);

	public __ptr__ pointfs;
	public __ptr__ pointfs2;
	public int numpts;
	public int numpts2;

	public __ptr__ Count;
	public int C;

	public int ctr = 1;

	public __struct__ template = __struct__.from(Agsubnode_s.class);
	public __struct__ dummy = __struct__.from(Agnode_s.class);

	public Agraph_s G_ns;
	public Agraph_s G_decomp;

	public int opl;

	public int opn_route;
	public int opn_shortest;

	public __ptr__ ops_route;
	public __ptr__ ops_shortest;

	public static Z z() {
		return instances2.get().peekFirst();
	}

	public static void open() {
		LinkedList list = instances2.get();
		if (list == null) {
			list = new LinkedList();
			instances2.set(list);
		}
		list.addFirst(new Z());
	}

	public static void close() {
		instances2.get().removeFirst();
	}

	private shape_desc __Shapes__(String s, shape_functions shape_functions, polygon_t polygon) {
		shape_desc result = (shape_desc) Memory.malloc(shape_desc.class);
		result.setPtr("name", s == null ? null : new CString(s));
		result.setPtr("fns", shape_functions);
		result.setPtr("polygon", polygon);
		return result;
	}

	private final static __struct__ createArrowtypes(int type, double lenfact, CFunction function) {
		final __struct__ result = __struct__.from(arrowtype_t.class);
		result.setInt("type", type);
		result.setDouble("lenfact", lenfact);
		result.setPtr("gen", function);
		return result;
	}

	private final static __struct__ create_arrowname_t(String name, int type) {
		final __struct__ result = __struct__.from(arrowname_t.class);
		result.setCString("name", name == null ? null : new CString(name));
		result.setInt("type", type);
		return result;
	}

	private Z() {

		_Dttree.setPtr("searchf", function(dttree__c.class, "dttree"));
		_Dttree.setInt("type", 0000004);

		AgDataDictDisc.setInt("key", OFFSET.create(Agsym_s.class, "name").toInt());
		AgDataDictDisc.setInt("size", -1);
		AgDataDictDisc.setInt("link", OFFSET.create(Agsym_s.class, "link").toInt());
		AgDataDictDisc.setPtr("makef", null);
		AgDataDictDisc.setPtr("freef", function(attr__c.class, "freesym"));
		AgDataDictDisc.setPtr("comparf", null);
		AgDataDictDisc.setPtr("hashf", null);

		ProtoDesc.setInt("directed", 1);
		ProtoDesc.setInt("strict", 0);
		ProtoDesc.setInt("no_loop", 1);
		ProtoDesc.setInt("maingraph", 0);
		ProtoDesc.setInt("flatlock", 1);
		ProtoDesc.setInt("no_write", 1);

		Ag_mainedge_seq_disc.setInt("key", 0);
		Ag_mainedge_seq_disc.setInt("size", 0);
		Ag_mainedge_seq_disc.setInt("link", OFFSET.create(Agedge_s.class, "seq_link").toInt()); // seq_link is the third
																								// field in Agedge_t
		Ag_mainedge_seq_disc.setPtr("makef", null);
		Ag_mainedge_seq_disc.setPtr("freef", null);
		Ag_mainedge_seq_disc.setPtr("comparf", function(edge__c.class, "agedgeseqcmpf"));
		Ag_mainedge_seq_disc.setPtr("hashf", null);
		Ag_mainedge_seq_disc.setPtr("memoryf", function(utils__c.class, "agdictobjmem"));
		Ag_mainedge_seq_disc.setPtr("eventf", null);

		Ag_subedge_seq_disc.setInt("key", 0);
		Ag_subedge_seq_disc.setInt("size", 0);
		Ag_subedge_seq_disc.setInt("link", -1);
		Ag_subedge_seq_disc.setPtr("makef", null);
		Ag_subedge_seq_disc.setPtr("freef", null);
		Ag_subedge_seq_disc.setPtr("comparf", function(edge__c.class, "agedgeseqcmpf"));
		Ag_subedge_seq_disc.setPtr("hashf", null);
		Ag_subedge_seq_disc.setPtr("memoryf", function(utils__c.class, "agdictobjmem"));
		Ag_subedge_seq_disc.setPtr("eventf", null);

		Ag_subedge_id_disc.setInt("key", 0);
		Ag_subedge_id_disc.setInt("size", 0);
		Ag_subedge_id_disc.setInt("link", -1);
		Ag_subedge_id_disc.setPtr("makef", null);
		Ag_subedge_id_disc.setPtr("freef", null);
		Ag_subedge_id_disc.setPtr("comparf", function(edge__c.class, "agedgeidcmpf"));
		Ag_subedge_id_disc.setPtr("hashf", null);
		Ag_subedge_id_disc.setPtr("memoryf", function(utils__c.class, "agdictobjmem"));
		Ag_subedge_id_disc.setPtr("eventf", null);

		Ag_subgraph_id_disc.setInt("key", 0);
		Ag_subgraph_id_disc.setInt("size", 0);
		Ag_subgraph_id_disc.setInt("link", OFFSET.create(Agraph_s.class, "link").toInt()); // link is the third field in
																							// Agraph_t
		Ag_subgraph_id_disc.setPtr("makef", null);
		Ag_subgraph_id_disc.setPtr("freef", null);
		Ag_subgraph_id_disc.setPtr("comparf", function(graph__c.class, "agraphidcmpf"));
		Ag_subgraph_id_disc.setPtr("hashf", null);
		Ag_subgraph_id_disc.setPtr("memoryf", function(utils__c.class, "agdictobjmem"));
		Ag_subgraph_id_disc.setPtr("eventf", null);

		AgIdDisc.setPtr("open", function(id__c.class, "idopen"));
		AgIdDisc.setPtr("map", function(id__c.class, "idmap"));
		AgIdDisc.setPtr("alloc", function(id__c.class, "idalloc"));
		AgIdDisc.setPtr("free", function(id__c.class, "idfree"));
		AgIdDisc.setPtr("print", function(id__c.class, "idprint"));
		AgIdDisc.setPtr("close", function(id__c.class, "idclose"));
		AgIdDisc.setPtr("idregister", function(id__c.class, "idregister"));

		AgMemDisc.setPtr("open", function(mem__c.class, "memopen"));
		AgMemDisc.setPtr("alloc", function(mem__c.class, "memalloc"));
		AgMemDisc.setPtr("resize", function(mem__c.class, "memresize"));
		AgMemDisc.setPtr("free", function(mem__c.class, "memfree"));
		AgMemDisc.setPtr("close", null);

		Ag_subnode_id_disc.setInt("key", 0);
		Ag_subnode_id_disc.setInt("size", 0);
		Ag_subnode_id_disc.setInt("link", OFFSET.create(Agsubnode_s.class, "id_link").toInt()); // id_link is the second
																								// field in Agsubnode_t
		Ag_subnode_id_disc.setPtr("makef", null);
		Ag_subnode_id_disc.setPtr("freef", null);
		Ag_subnode_id_disc.setPtr("comparf", function(node__c.class, "agsubnodeidcmpf"));
		Ag_subnode_id_disc.setPtr("hashf", null);
		Ag_subnode_id_disc.setPtr("memoryf", function(utils__c.class, "agdictobjmem"));
		Ag_subnode_id_disc.setPtr("eventf", null);

		Ag_subnode_seq_disc.setInt("key", 0);
		Ag_subnode_seq_disc.setInt("size", 0);
		Ag_subnode_seq_disc.setInt("link", OFFSET.create(Agsubnode_s.class, "seq_link").toInt()); // link is the first
																									// field in
																									// Agsubnode_t
		Ag_subnode_seq_disc.setPtr("makef", null);
		Ag_subnode_seq_disc.setPtr("freef", function(node__c.class, "free_subnode"));
		Ag_subnode_seq_disc.setPtr("comparf", function(node__c.class, "agsubnodeseqcmpf"));
		Ag_subnode_seq_disc.setPtr("hashf", null);
		Ag_subnode_seq_disc.setPtr("memoryf", function(utils__c.class, "agdictobjmem"));
		Ag_subnode_seq_disc.setPtr("eventf", null);

		Refstrdisc.setInt("key", OFFSET.create(refstr_t.class, "s").toInt()); // *s is the third field in refstr_t
		Refstrdisc.setInt("size", -1);
		Refstrdisc.setInt("link", 0);
		Refstrdisc.setPtr("makef", null);
		Refstrdisc.setPtr("freef", function(utils__c.class, "agdictobjfree"));
		Refstrdisc.setPtr("comparf", null);
		Refstrdisc.setPtr("hashf", null);
		Refstrdisc.setPtr("memoryf", function(utils__c.class, "agdictobjmem"));
		Refstrdisc.setPtr("eventf", null);

		Arrowsynonyms.plus(0).setStruct(create_arrowname_t(null, 0));

		Arrownames.plus(0).setStruct(create_arrowname_t("normal", 1));
		Arrownames.plus(1).setStruct(create_arrowname_t("none", 8));
		Arrownames.plus(2).setStruct(create_arrowname_t(null, 0));

		Arrowmods.plus(0).setStruct(create_arrowname_t(null, 0));

		Arrowtypes.plus(0).setStruct(createArrowtypes(1, 1.0, function(arrows__c.class, "arrow_type_normal")));
		Arrowtypes.plus(1).setStruct(createArrowtypes(2, 1.0, function(arrows__c.class, "arrow_type_crow")));
		Arrowtypes.plus(2).setStruct(createArrowtypes(3, 0.5, function(arrows__c.class, "arrow_type_tee")));
		Arrowtypes.plus(3).setStruct(createArrowtypes(4, 1.0, function(arrows__c.class, "arrow_type_box")));
		Arrowtypes.plus(4).setStruct(createArrowtypes(5, 1.2, function(arrows__c.class, "arrow_type_diamond")));
		Arrowtypes.plus(5).setStruct(createArrowtypes(6, 0.8, function(arrows__c.class, "arrow_type_dot")));
		Arrowtypes.plus(6).setStruct(createArrowtypes(7, 1.0, function(arrows__c.class, "arrow_type_curve")));
		Arrowtypes.plus(7).setStruct(createArrowtypes(8, 0.5, function(arrows__c.class, "arrow_type_gap")));
		Arrowtypes.plus(8).setStruct(createArrowtypes(0, 0.0, null));

		Center.getStruct("p").setDouble("x", 0);
		Center.getStruct("p").setDouble("y", 0);
		Center.setDouble("theta", -1);
		Center.setPtr("bp", null);
		Center.setInt("defined", 0);
		Center.setInt("constrained", 0);
		Center.setInt("clip", 1);
		Center.setInt("dyna", 0);
		Center.setInt("order", 0);
		Center.setInt("side", 0);

		p_ellipse.setInt("regular", 0);
		p_ellipse.setInt("peripheries", 1);
		p_ellipse.setInt("sides", 1);
		p_ellipse.setDouble("orientation", 0.);
		p_ellipse.setDouble("distortion", 0.);
		p_ellipse.setDouble("skew", 0.);

		p_box.setInt("regular", 0);
		p_box.setInt("peripheries", 1);
		p_box.setInt("sides", 4);
		p_box.setDouble("orientation", 0.);
		p_box.setDouble("distortion", 0.);
		p_box.setDouble("skew", 0.);

		poly_fns.setPtr("initfn", function(shapes__c.class, "poly_init"));
		poly_fns.setPtr("freefn", function(shapes__c.class, "poly_free"));
		poly_fns.setPtr("portfn", function(shapes__c.class, "poly_port"));
		poly_fns.setPtr("insidefn", function(shapes__c.class, "poly_inside"));
		poly_fns.setPtr("pboxfn", function(shapes__c.class, "poly_path"));
		poly_fns.setPtr("codefn", function(shapes__c.class, "poly_gencode"));

		Ag_mainedge_id_disc.setInt("key", 0);
		Ag_mainedge_id_disc.setInt("size", 0);
		Ag_mainedge_id_disc.setInt("link", OFFSET.create(Agedge_s.class, "id_link").toInt()); // id_link is the second
																								// field in Agedge_t
		Ag_mainedge_id_disc.setPtr("makef", null);
		Ag_mainedge_id_disc.setPtr("freef", null);
		Ag_mainedge_id_disc.setPtr("comparf", function(edge__c.class, "agedgeidcmpf"));
		Ag_mainedge_id_disc.setPtr("hashf", null);
		Ag_mainedge_id_disc.setPtr("memoryf", function(utils__c.class, "agdictobjmem"));
		Ag_mainedge_id_disc.setPtr("eventf", null);

		Agdirected.setInt("directed", 1);
		Agdirected.setInt("strict", 0);
		Agdirected.setInt("no_loop", 0);
		Agdirected.setInt("maingraph", 1);

		sinfo.setPtr("swapEnds", function(dotsplines__c.class, "swap_ends_p"));
		sinfo.setPtr("splineMerge", function(dotsplines__c.class, "spline_merge"));

	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy