00001
00002 package gridlabd;
00003
00004
00011 public class GObject{
00012 private long object_addr;
00013 private GClass oclass;
00014 private long parent;
00016 public long GetAddr(){return object_addr;}
00017 public void SetObject(long object_a){
00018 object_addr = object_a;
00019 }
00020 private GObject(long o){
00021 object_addr = o;
00022 }
00029 public static GObject BuildSingle(GridlabD.Class oc){
00030 long oaddr = GridlabD.create_object(oc.GetAddr(), oc.GetSize());
00031 if(oaddr != 0){
00032 return new GObject(oaddr);
00033 }
00034 else {
00035 GridlabD.error("Unable to create object of type ");
00036 return null;
00037 }
00038 }
00045 public static GObject BuildSingle(GClass oc){
00046 long oaddr = GridlabD.create_object(oc.GetClassAddr(), oc.GetSize());
00047 if(oaddr != 0){
00048 GObject o = new GObject(oaddr);
00049 oc.PutObj(o);
00050 return o;
00051 }
00052 else {
00053 GridlabD.error("Unable to create object of type ");
00054 return null;
00055 }
00056 }
00057
00058 public int GetID(){return _GetID(object_addr);}
00059 private native int _GetID(long oaddr);
00060
00061 public long GetObjectClass(){return _GetOClass(object_addr);}
00062 private native long _GetOClass(long oaddr);
00063
00064 public long GetNext(){return _GetNext(object_addr);}
00065 private native long _GetNext(long oaddr);
00066
00067 public String GetName(){return _GetName(object_addr);}
00068 private native String _GetName(long oaddr);
00069
00070 public long GetParent(){
00071 parent = _GetParent(object_addr);
00072 return parent;
00073 }
00074 private native long _GetParent(long oaddr);
00075
00076 public int GetRank(){return _GetRank(object_addr);}
00077 private native int _GetRank(long oaddr);
00078
00079 public long GetClock(){return _GetClock(object_addr);}
00080 private native long _GetClock(long oaddr);
00081
00082 public double GetLatitude(){return _GetLatitude(object_addr);}
00083 private native double _GetLatitude(long oaddr);
00084
00085 public double GetLongitude(){return _GetLatitude(object_addr);}
00086 private native double _GetLongitude(long oaddr);
00087
00088 public long GetInSvc(){return _GetInSvc(object_addr);}
00089 private native long _GetInSvc(long oaddr);
00090
00091 public long GetOutSvc(){return _GetOutSvc(object_addr);}
00092 private native long _GetOutSvc(long oaddr);
00093
00094 public long GetFlags(){return _GetFlags(object_addr);}
00095 private native long _GetFlags(long oaddr);
00096
00097
00098 private native void _SetParent(long oaddr, long addr);
00099 public void SetParent(long p){
00100 parent = p;
00101 _SetParent(object_addr, p);
00102 }
00103 public void SetFlags(int flags){_SetFlags(object_addr, flags);}
00104 private native void _SetFlags(long oaddr, int flags);
00105
00106
00107
00108 private native String _GetStringProp(long oaddr, long offset, long count);
00109
00110
00111 private native void _SetStringProp(long oaddr, long offset, long count, String str);
00112
00113
00114 private native int _GetInt16Prop(long oaddr, long offset);
00115
00116
00117 public native void _SetInt16Prop(long oaddr, long offset, int val);
00118
00119
00120 private native int _GetInt32Prop(long oaddr, long offset);
00121
00122
00123 public native void _SetInt32Prop(long oaddr, long offset, int val);
00124
00125
00126 private native int _GetInt64Prop(long oaddr, long offset);
00127
00128
00129 public native void _SetInt64Prop(long oaddr, long offset, long val);
00130
00131
00132 private native double _GetDoubleProp(long oaddr, long offset);
00133
00134
00135 public native void _SetDoubleProp(long oaddr, long offset, double val);
00136
00137
00138
00139
00140 private native double _GetComplexRealProp(long oaddr, long offset);
00141 private native double _GetComplexImagProp(long oaddr, long offset);
00142 private native void _SetComplexProp(long oaddr, long offset, double r, double i);
00143
00144 private native long _GetObjectProp(long oaddr, long offset);
00145
00146 public String GetStringProp(GridlabD.Property prop){
00147 if(prop.GetType().startsWith("char")){
00148 return _GetStringProp(object_addr, prop.GetOffset(), prop.GetSize()-1);
00149 } else {
00150 GridlabD.error("Cannot read prop "+prop.GetName()+" as a string");
00151 return new String("[error]");
00152 }
00153 }
00154 public boolean SetStringProp(GridlabD.Property prop, String str){
00155 if(prop.GetType().startsWith("char")){
00156 _SetStringProp(object_addr, prop.GetOffset(), prop.GetSize()-1, str);
00157 return true;
00158 } else {
00159 GridlabD.error("Cannot write prop "+prop.GetName()+" as a string");
00160 return false;
00161 }
00162 }
00163 public int GetInt16Prop(GridlabD.Property prop){
00164 if(prop.GetType().equals("int16")){
00165 return _GetInt16Prop(object_addr, prop.GetOffset());
00166 } else {
00167 GridlabD.error("Cannot read prop "+prop.GetName()+" as an int16");
00168 return 0;
00169 }
00170 }
00171 public boolean SetInt16Prop(GridlabD.Property prop, int val){
00172 if(prop.GetType().equals("int16")){
00173 _SetInt16Prop(object_addr, prop.GetOffset(), val);
00174 return true;
00175 } else {
00176 GridlabD.error("Cannot write prop "+prop.GetName()+" as an int16");
00177 return false;
00178 }
00179 }
00180 public int GetInt32Prop(GridlabD.Property prop){
00181 if(prop.GetType().equals("int32")){
00182 return _GetInt32Prop(object_addr, prop.GetOffset());
00183 } else {
00184 GridlabD.error("Cannot read prop "+prop.GetName()+" as an int32");
00185 return 0;
00186 }
00187 }
00188 public boolean SetInt32Prop(GridlabD.Property prop, int val){
00189 if(prop.GetType().equals("int32")){
00190 _SetInt32Prop(object_addr, prop.GetOffset(), val);
00191 return true;
00192 } else {
00193 GridlabD.error("Cannot write prop "+prop.GetName()+" as an int32");
00194 return false;
00195 }
00196 }
00197 public long GetInt64Prop(GridlabD.Property prop){
00198 if(prop.GetType().equals("int64")){
00199 return _GetInt64Prop(object_addr, prop.GetOffset());
00200 } else {
00201 GridlabD.error("Cannot read prop "+prop.GetName()+" as an int64");
00202 return 0;
00203 }
00204 }
00205 public boolean SetInt64Prop(GridlabD.Property prop, long val){
00206 if(prop.GetType().equals("int64")){
00207 _SetInt64Prop(object_addr, prop.GetOffset(), val);
00208 return true;
00209 } else {
00210 GridlabD.error("Cannot write prop "+prop.GetName()+" as an int64");
00211 return false;
00212 }
00213 }
00214 public double GetDoubleProp(GridlabD.Property prop){
00215 if(prop.GetType().equals("double")){
00216 return _GetDoubleProp(object_addr, prop.GetOffset());
00217 } else {
00218 GridlabD.error("Cannot read prop "+prop.GetName()+" as a double");
00219 return 0;
00220 }
00221 }
00222 public boolean SetDoubleProp(GridlabD.Property prop, long val){
00223 if(prop.GetType().equals("double")){
00224 _SetDoubleProp(object_addr, prop.GetOffset(), val);
00225 return true;
00226 } else {
00227 GridlabD.error("Cannot write prop "+prop.GetName()+" as a double");
00228 return false;
00229 }
00230 }
00231 public long GetObjectProp(GridlabD.Property prop){
00232 if(prop.GetType().equals("object")){
00233 return _GetObjectProp(object_addr, prop.GetOffset());
00234 } else {
00235 GridlabD.error("Cannot read prop "+prop.GetName()+" as an object");
00236 return 0;
00237 }
00238 }
00239 public GridlabD.Complex GetComplexProp(GridlabD.Property prop){
00240 if(prop.GetType().equals("complex")){
00241 return new GridlabD.Complex(_GetComplexRealProp(object_addr, prop.GetOffset()), _GetComplexImagProp(object_addr, prop.GetOffset()));
00242 } else {
00243 GridlabD.error("Cannot read prop "+prop.GetName()+" as a complex");
00244 return null;
00245 }
00246 }
00247 public boolean SetComplexProp(GridlabD.Property prop, GridlabD.Complex val){
00248 if(prop.GetType().equals("complex")){
00249 _SetComplexProp(object_addr, prop.GetOffset(), val.re, val.im);
00250 return true;
00251 } else {
00252 GridlabD.error("Cannot write prop "+prop.GetName()+" as a complex");
00253 return false;
00254 }
00255 }
00256 }