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 transformer::transformer(MODULE *mod) : link(mod)
00027 {
00028
00029 if (oclass==NULL)
00030 {
00031
00032 transformer_class = oclass = gl_register_class(mod,"transformer",sizeof(transformer),PC_BOTTOMUP);
00033 if (oclass==NULL)
00034 GL_THROW("unable to register object class implemented by %s",__FILE__);
00035
00036
00037 if (gl_publish_variable(oclass,
00038 PT_enumeration,"Type",PADDR(Type),
00039 PT_KEYWORD,"TT_YY",TT_YY,
00040 PT_KEYWORD,"TT_YD",TT_YD,
00041 PT_KEYWORD,"TT_DY",TT_DY,
00042 PT_KEYWORD,"TT_DD",TT_DD,
00043 PT_double, "Sbase", PADDR(Sbase),
00044 PT_double, "Vbase", PADDR(Vbase),
00045 PT_double, "Zpu", PADDR(Zpu),
00046 PT_double, "Vprimary", PADDR(Vprimary),
00047 PT_double, "Vsecondary", PADDR(Vsecondary),
00048 NULL)<1) GL_THROW("unable to publish properties in %s",__FILE__);
00049
00050
00051 defaults = this;
00052 }
00053 }
00054
00055 int transformer::create()
00056 {
00057 int result = link::create();
00058 memcpy(this,defaults,sizeof(*this));
00059 return result;
00060 }
00061
00062 TIMESTAMP transformer::sync(TIMESTAMP t0)
00063 {
00064 node *f = OBJECTDATA(from,node);
00065 node *t = OBJECTDATA(to,node);
00066 if (f==NULL || t==NULL)
00067 return TS_NEVER;
00068
00069 return link::sync(t0);
00070 }
00072
00074
00075 EXPORT int create_transformer(OBJECT **obj, OBJECT *parent)
00076 {
00077 *obj = gl_create_object(transformer_class);
00078 if (*obj!=NULL)
00079 {
00080 transformer *my = OBJECTDATA(*obj,transformer);
00081 gl_set_parent(*obj,parent);
00082 my->create();
00083 return 1;
00084 }
00085 return 0;
00086 }
00087
00088 EXPORT TIMESTAMP sync_transformer(OBJECT *obj, TIMESTAMP t0)
00089 {
00090 TIMESTAMP t1 = OBJECTDATA(obj,transformer)->sync(t0);
00091 obj->clock = t0;
00092 return t1;
00093 }
00094