00001
00010 #include <stdlib.h>
00011 #include <stdio.h>
00012 #include <errno.h>
00013 #include <math.h>
00014 #include "network.h"
00015
00016
00017
00018
00020
00022 CLASS* transformer::oclass = NULL;
00023 CLASS* transformer::pclass = NULL;
00024 transformer *transformer::defaults = NULL;
00025
00026 CLASS *transformer_class = (NULL);
00027
00028 transformer::transformer(MODULE *mod) : link(mod)
00029 {
00030
00031 if (oclass==NULL)
00032 {
00033
00034 transformer_class = oclass = gl_register_class(mod,"transformer",sizeof(transformer),PC_BOTTOMUP);
00035 if (oclass==NULL)
00036 throw "unable to register class transformer";
00037 else
00038 oclass->trl = TRL_CONCEPT;
00039
00040
00041 if (gl_publish_variable(oclass,
00042 PT_enumeration,"Type",PADDR(Type),
00043 PT_KEYWORD,"TT_YY",TT_YY,
00044 PT_KEYWORD,"TT_YD",TT_YD,
00045 PT_KEYWORD,"TT_DY",TT_DY,
00046 PT_KEYWORD,"TT_DD",TT_DD,
00047 PT_double, "Sbase", PADDR(Sbase),
00048 PT_double, "Vbase", PADDR(Vbase),
00049 PT_double, "Zpu", PADDR(Zpu),
00050 PT_double, "Vprimary", PADDR(Vprimary),
00051 PT_double, "Vsecondary", PADDR(Vsecondary),
00052 NULL)<1) GL_THROW("unable to publish properties in %s",__FILE__);
00053
00054
00055 defaults = this;
00056 }
00057 }
00058
00059 int transformer::create()
00060 {
00061 int result = link::create();
00062 memcpy(this,defaults,sizeof(*this));
00063 return result;
00064 }
00065
00066 TIMESTAMP transformer::sync(TIMESTAMP t0)
00067 {
00068 node *f = OBJECTDATA(from,node);
00069 node *t = OBJECTDATA(to,node);
00070 if (f==NULL || t==NULL)
00071 return TS_NEVER;
00072
00073 return link::sync(t0);
00074 }
00076
00078
00079 EXPORT int create_transformer(OBJECT **obj, OBJECT *parent)
00080 {
00081 *obj = gl_create_object(transformer_class);
00082 if (*obj!=NULL)
00083 {
00084 transformer *my = OBJECTDATA(*obj,transformer);
00085 gl_set_parent(*obj,parent);
00086 my->create();
00087 return 1;
00088 }
00089 return 0;
00090 }
00091
00092 EXPORT TIMESTAMP sync_transformer(OBJECT *obj, TIMESTAMP t0)
00093 {
00094 TIMESTAMP t1 = OBJECTDATA(obj,transformer)->sync(t0);
00095 obj->clock = t0;
00096 return t1;
00097 }
00098