Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
P
proview
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Esteban Blanc
proview
Commits
ff2e66bf
Commit
ff2e66bf
authored
Dec 21, 2017
by
Claes Sjofors
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Ge dynamics RefUpdate implemented
parent
4f54233d
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
1395 additions
and
277 deletions
+1395
-277
java/exe/jpwr_rt_gdh/src/jpwr_rt_gdh.c
java/exe/jpwr_rt_gdh/src/jpwr_rt_gdh.c
+16
-1
java/jpwr/jopg/src/Dyn.java
java/jpwr/jopg/src/Dyn.java
+346
-66
java/jpwr/jopg/src/Graph.java
java/jpwr/jopg/src/Graph.java
+166
-18
java/jpwr/jopg/src/GraphIfc.java
java/jpwr/jopg/src/GraphIfc.java
+8
-0
src/msg/ge/src/ge_msg.msg
src/msg/ge/src/ge_msg.msg
+1
-1
xtt/lib/ge/src/ge_attrnav.cpp
xtt/lib/ge/src/ge_attrnav.cpp
+1
-0
xtt/lib/ge/src/ge_dyn.cpp
xtt/lib/ge/src/ge_dyn.cpp
+483
-121
xtt/lib/ge/src/ge_dyn.h
xtt/lib/ge/src/ge_dyn.h
+103
-46
xtt/lib/ge/src/ge_graph.cpp
xtt/lib/ge/src/ge_graph.cpp
+258
-22
xtt/lib/ge/src/ge_graph.h
xtt/lib/ge/src/ge_graph.h
+13
-2
No files found.
java/exe/jpwr_rt_gdh/src/jpwr_rt_gdh.c
View file @
ff2e66bf
...
...
@@ -2159,6 +2159,21 @@ static void gdh_AttrToString( int type_id, void *value_ptr,
*
len
=
sprintf
(
str
,
"%s"
,
hiername
);
break
;
}
case
pwr_eType_DataRef
:
{
pwr_tAName
hiername
;
pwr_tDataRef
*
dataref
;
dataref
=
(
pwr_tDataRef
*
)
value_ptr
;
sts
=
gdh_AttrrefToName
(
&
dataref
->
Aref
,
hiername
,
sizeof
(
hiername
),
cdh_mNName
);
if
(
EVEN
(
sts
))
{
strcpy
(
str
,
""
);
*
len
=
0
;
break
;
}
*
len
=
sprintf
(
str
,
"%s"
,
hiername
);
break
;
}
case
pwr_eType_Time
:
{
sts
=
time_AtoAscii
(
(
pwr_tTime
*
)
value_ptr
,
time_eFormat_DateAndTime
,
...
...
@@ -3157,4 +3172,4 @@ static int gdh_JidRemove( pwr_tRefId r)
#else
return
1
;
#endif
}
\ No newline at end of file
}
java/jpwr/jopg/src/Dyn.java
View file @
ff2e66bf
This diff is collapsed.
Click to expand it.
java/jpwr/jopg/src/Graph.java
View file @
ff2e66bf
...
...
@@ -42,7 +42,6 @@ import java.util.*;
public
class
Graph
implements
GraphIfc
,
GrowApplIfc
{
public
GrowCmn
cmn
;
public
GrowCtx
ctx
;
public
GlowDraw
gdraw
;
...
...
@@ -238,7 +237,7 @@ public class Graph implements GraphIfc, GrowApplIfc {
index
=
new
Integer
(
str
.
substring
(
idx1
+
1
,
idx2
)).
intValue
();
}
catch
(
NumberFormatException
e
)
{
System
.
out
.
println
(
"Element syntax error, "
+
str
);
System
.
out
.
println
(
"
stringToIndex:
Element syntax error, "
+
str
);
return
1
;
}
return
index
;
...
...
@@ -247,6 +246,10 @@ public class Graph implements GraphIfc, GrowApplIfc {
}
public
DynParsedAttrName
parseAttrName
(
String
name
)
{
return
parseAttrName
(
name
,
0
);
}
public
DynParsedAttrName
parseAttrName
(
String
name
,
int
options
)
{
if
(
name
==
null
)
return
null
;
...
...
@@ -324,25 +327,28 @@ public class Graph implements GraphIfc, GrowApplIfc {
else
break
;
}
// Translate index variable
for
(
int
i
=
0
;
i
<
4
;
i
++)
{
if
(
(
idx
=
str
.
indexOf
(
"[&("
))
!=
-
1
)
{
String
iname
=
str
.
substring
(
idx
+
3
);
int
idx2
=
iname
.
indexOf
(
')'
);
if
(
idx2
!=
-
1
)
{
String
rest
=
iname
.
substring
(
idx2
+
1
);
iname
=
iname
.
substring
(
0
,
idx2
);
CdhrInt
ret
=
getGdh
().
getObjectInfoInt
(
iname
);
if
(
ret
.
evenSts
())
break
;
str
=
str
.
substring
(
0
,
idx
+
1
)
+
ret
.
value
+
rest
;
if
(
(
options
&
GraphIfc
.
mParseOpt_KeepIndex
)
==
0
)
{
// Translate index variable
for
(
int
i
=
0
;
i
<
4
;
i
++)
{
if
(
(
idx
=
str
.
indexOf
(
"[&("
))
!=
-
1
)
{
String
iname
=
str
.
substring
(
idx
+
3
);
int
idx2
=
iname
.
indexOf
(
')'
);
if
(
idx2
!=
-
1
)
{
String
rest
=
iname
.
substring
(
idx2
+
1
);
iname
=
iname
.
substring
(
0
,
idx2
);
CdhrInt
ret
=
getGdh
().
getObjectInfoInt
(
iname
);
if
(
ret
.
evenSts
())
break
;
str
=
str
.
substring
(
0
,
idx
+
1
)
+
ret
.
value
+
rest
;
}
else
break
;
}
else
break
;
}
else
break
;
}
for
(
int
i
=
0
;
i
<
4
;
i
++)
{
...
...
@@ -383,7 +389,7 @@ public class Graph implements GraphIfc, GrowApplIfc {
pname
.
elements
=
new
Integer
(
str
.
substring
(
eidx
+
1
)).
intValue
();
}
catch
(
NumberFormatException
e
)
{
System
.
out
.
println
(
"Element syntax error, "
+
str
);
System
.
out
.
println
(
"
parseAttrName:
Element syntax error, "
+
str
);
pname
.
elements
=
1
;
}
str
=
str
.
substring
(
0
,
eidx
);
...
...
@@ -392,7 +398,8 @@ public class Graph implements GraphIfc, GrowApplIfc {
pname
.
elements
=
1
;
}
else
{
pname
.
index
=
stringToIndex
(
str
);
if
(
(
options
&
GraphIfc
.
mParseOpt_KeepIndex
)
==
0
||
str
.
indexOf
(
"[&("
)
==
-
1
)
pname
.
index
=
stringToIndex
(
str
);
pname
.
elements
=
1
;
// if ((eidx = str.lastIndexOf('#')) != -1 &&
// str.charAt(eidx-1) != '#')
...
...
@@ -449,6 +456,146 @@ public class Graph implements GraphIfc, GrowApplIfc {
return
str
;
}
public
GdhrRefObjectInfo
refObjectInfo
(
String
attributeName
)
{
String
str
=
new
String
(
attributeName
);
int
idx
;
// Replace references
if
(
(
idx
=
str
.
indexOf
(
"&("
))
!=
-
1
)
{
String
ref_name
;
String
end
;
CdhrString
ret
;
int
idx2
;
if
(
str
.
substring
(
idx
+
2
).
startsWith
(
"&("
))
{
idx2
=
str
.
indexOf
(
")"
);
if
(
idx2
==
-
1
)
return
null
;
ref_name
=
str
.
substring
(
idx
+
4
,
idx2
);
end
=
str
.
substring
(
idx2
+
1
);
ret
=
getGdh
().
getObjectInfoString
(
ref_name
);
if
(
ret
.
evenSts
())
return
null
;
str
=
str
.
substring
(
0
,
idx
+
2
)
+
ret
.
str
+
end
;
}
idx2
=
str
.
lastIndexOf
(
")"
);
if
(
idx2
==
-
1
)
return
null
;
ref_name
=
str
.
substring
(
idx
+
2
,
idx2
);
end
=
str
.
substring
(
idx2
+
1
);
ret
=
getGdh
().
getObjectInfoString
(
ref_name
);
if
(
ret
.
evenSts
())
return
null
;
str
=
str
.
substring
(
0
,
idx
)
+
ret
.
str
+
end
;
}
return
getGdh
().
refObjectInfo
(
str
);
}
public
int
getRefUpdate
(
String
in
,
String
ref_name
[],
int
ref_tid
[],
int
ref_size
[],
String
idx_ref_name
[],
int
idx_ref_tid
[],
int
idx_ref_size
[],
int
ref_cnt
[],
Object
dyn
)
{
int
idx
,
lidx
;
ref_cnt
[
0
]
=
0
;
ref_cnt
[
1
]
=
0
;
String
str
=
new
String
(
in
);
// Get index variable and replace
for
(
int
i
=
0
;
i
<
2
;
i
++)
{
if
(
(
idx
=
str
.
indexOf
(
"[&("
))
!=
-
1
)
{
String
iname
=
str
.
substring
(
idx
+
3
);
int
idx2
=
iname
.
indexOf
(
')'
);
if
(
idx2
!=
-
1
)
{
String
rest
=
iname
.
substring
(
idx2
+
1
);
iname
=
iname
.
substring
(
0
,
idx2
);
idx_ref_name
[
ref_cnt
[
1
]]
=
iname
;
ref_cnt
[
1
]++;
CdhrInt
ret
=
getGdh
().
getObjectInfoInt
(
iname
);
if
(
ret
.
evenSts
())
return
0
;
str
=
str
.
substring
(
0
,
idx
+
1
)
+
ret
.
value
+
rest
;
}
else
break
;
}
else
break
;
}
// Get reference
if
(
(
idx
=
str
.
indexOf
(
"&("
))
!=
-
1
)
{
if
(
str
.
substring
(
idx
+
2
).
startsWith
(
"&("
))
{
int
idx2
=
str
.
indexOf
(
")"
);
if
(
idx2
==
-
1
)
return
0
;
ref_name
[
ref_cnt
[
0
]]
=
str
.
substring
(
idx
+
4
,
idx2
);
CdhrAttrRef
attrRef
=
getGdh
().
nameToAttrRef
(
ref_name
[
ref_cnt
[
0
]]);
if
(
attrRef
.
oddSts
())
{
CdhrTypeId
cdhrTypeId
=
getGdh
().
getAttrRefTid
(
attrRef
.
aref
);
ref_tid
[
ref_cnt
[
0
]]
=
cdhrTypeId
.
getTypeId
();
}
ref_cnt
[
0
]++;
String
end
=
str
.
substring
(
idx2
+
1
);
CdhrString
ret
=
getGdh
().
getObjectInfoString
(
ref_name
[
ref_cnt
[
0
]-
1
]);
if
(
ret
.
evenSts
())
return
0
;
str
=
str
.
substring
(
0
,
idx
+
2
)
+
ret
.
str
+
end
;
}
int
idx2
=
str
.
lastIndexOf
(
")"
);
if
(
idx2
==
-
1
)
return
0
;
ref_name
[
ref_cnt
[
0
]]
=
str
.
substring
(
idx
+
2
,
idx2
);
CdhrAttrRef
attrRef
=
getGdh
().
nameToAttrRef
(
ref_name
[
ref_cnt
[
0
]]);
if
(
attrRef
.
oddSts
())
{
CdhrTypeId
cdhrTypeId
=
getGdh
().
getAttrRefTid
(
attrRef
.
aref
);
ref_tid
[
ref_cnt
[
0
]]
=
cdhrTypeId
.
getTypeId
();
}
ref_cnt
[
0
]++;
}
for
(
int
i
=
0
;
i
<
4
;
i
++)
{
// Remove attribute before
if
(
(
idx
=
str
.
indexOf
(
".<"
))
!=
-
1
)
{
String
rest
=
str
.
substring
(
idx
+
2
);
int
idx2
=
str
.
lastIndexOf
(
'.'
,
idx
-
2
);
if
(
idx2
!=
-
1
)
str
=
str
.
substring
(
0
,
idx2
)
+
rest
;
else
break
;
}
else
break
;
}
for
(
int
i
=
0
;
i
<
4
;
i
++)
{
// Remove segment name before
if
(
(
idx
=
str
.
indexOf
(
"-<"
))
!=
-
1
)
{
String
rest
=
str
.
substring
(
idx
+
2
);
int
idx2
=
str
.
lastIndexOf
(
'-'
,
idx
-
2
);
if
(
idx2
!=
-
1
)
str
=
str
.
substring
(
0
,
idx2
)
+
rest
;
else
break
;
}
else
break
;
}
return
1
;
}
public
Object
growUserdataOpen
(
BufferedReader
reader
,
Object
object
,
int
type
)
{
switch
(
type
)
{
case
Glow
.
eUserdataCbType_Ctx
:
...
...
@@ -467,6 +614,7 @@ public class Graph implements GraphIfc, GrowApplIfc {
return
null
;
}
@SuppressWarnings
(
"fallthrough"
)
public
void
eventHandler
(
GlowEvent
e
)
{
boolean
cmn_popped
=
false
;
...
...
java/jpwr/jopg/src/GraphIfc.java
View file @
ff2e66bf
...
...
@@ -46,7 +46,11 @@ public interface GraphIfc {
public
static
final
int
eType_Bit
=
(
1
<<
15
)
+
1
;
public
static
final
int
mParseOpt_KeepIndex
=
1
<<
0
;
public
DynParsedAttrName
parseAttrName
(
String
name
);
public
DynParsedAttrName
parseAttrName
(
String
name
,
int
options
);
public
Gdh
getGdh
();
public
GraphLocalDb
getLdb
();
public
GrowCtx
getCtx
();
...
...
@@ -70,6 +74,10 @@ public interface GraphIfc {
public
double
getFastScanTime
();
public
double
getAnimationScanTime
();
public
String
getCommand
(
String
cmd
);
public
GdhrRefObjectInfo
refObjectInfo
(
String
attributeName
);
public
int
getRefUpdate
(
String
in
,
String
ref_name
[],
int
ref_tid
[],
int
ref_size
[],
String
idx_ref_name
[],
int
idx_ref_tid
[],
int
idx_ref_size
[],
int
ref_cnt
[],
Object
dyn
);
public
void
setClickActive
(
int
active
);
public
void
signalSend
(
String
signalName
);
}
src/msg/ge/src/ge_msg.msg
View file @
ff2e66bf
...
...
@@ -69,6 +69,6 @@ fileopen <Unable to open file> /error
needconv <Unable to save, graph needs conversion> /error
javanamesyntax <Java name syntax error> /error
notsaved <Graph is not saved> /error
noref <Attribute is not of reference type> /error
xtt/lib/ge/src/ge_attrnav.cpp
View file @
ff2e66bf
...
...
@@ -115,6 +115,7 @@ static attrnav_sEnumElement elem_dyn_type2[] = {
{
(
unsigned
int
)
ge_mDynType2_DigBackgroundColor
,
"DigBackgroundColor"
},
{
(
unsigned
int
)
ge_mDynType2_DigSwap
,
"DigSwap"
},
{
(
unsigned
int
)
ge_mDynType2_DigScript
,
"DigScript"
},
{
(
unsigned
int
)
ge_mDynType2_RefUpdate
,
"RefUpdate"
},
{
0
,
""
}};
static
attrnav_sEnumElement
elem_dyn_type1_tone
[]
=
{
...
...
xtt/lib/ge/src/ge_dyn.cpp
View file @
ff2e66bf
This diff is collapsed.
Click to expand it.
xtt/lib/ge/src/ge_dyn.h
View file @
ff2e66bf
This diff is collapsed.
Click to expand it.
xtt/lib/ge/src/ge_graph.cpp
View file @
ff2e66bf
...
...
@@ -3773,7 +3773,7 @@ static int graph_trace_connect_bc( grow_tObject object,
}
}
dyn
->
connect
(
object
,
trace_data
);
dyn
->
connect
(
object
,
trace_data
,
false
);
if
(
ctx_popped
)
graph
->
grow
->
push
();
...
...
@@ -4723,7 +4723,7 @@ void Graph::get_command( char *in, char *out, GeDyn *dyn)
sts
=
gdh_GetObjectInfo
(
iname
,
&
idx
,
sizeof
(
idx
));
if
(
ODD
(
sts
)
&&
idx
>=
0
&&
idx
<=
100
)
{
len
=
sprintf
(
s
,
"%d"
,
idx
);
strcpy
(
s
+
len
,
rest
);
strcpy
(
s
+
len
,
rest
);
}
}
else
...
...
@@ -4774,8 +4774,242 @@ void Graph::get_command( char *in, char *out, GeDyn *dyn)
}
}
int
Graph
::
get_refupdate
(
char
*
in
,
pwr_tAName
ref
[],
pwr_tTid
ref_tid
[],
int
ref_size
[],
int
*
ref_cnt
,
pwr_tAName
idx_ref
[],
pwr_tTid
idx_ref_tid
[],
int
idx_ref_size
[],
int
*
idx_ref_cnt
,
GeDyn
*
dyn
)
{
char
*
s
,
*
t0
;
char
*
s0
=
in
;
char
str
[
500
];
bool
object_found
=
false
;
char
out
[
512
];
*
ref_cnt
=
0
;
*
idx_ref_cnt
=
0
;
pwr_tAName
oname
[
4
];
if
(
grow
->
stack_cnt
==
0
)
{
for
(
int
i
=
0
;
i
<
4
;
i
++
)
strcpy
(
oname
[
i
],
object_name
[
i
]);
}
else
{
grow_GetOwner
(
grow
->
ctx
,
oname
[
0
]);
if
(
strcmp
(
object_name
[
0
],
""
)
!=
0
)
{
pwr_tOName
n
;
t0
=
n
;
s0
=
oname
[
0
];
while
(
(
s
=
strstr
(
s0
,
"$object"
)))
{
strncpy
(
t0
,
s0
,
s
-
s0
);
t0
+=
s
-
s0
;
strcpy
(
t0
,
object_name
[
0
]);
t0
+=
strlen
(
object_name
[
0
]);
s0
=
s
+
strlen
(
"$object"
);
}
cdh_Strcpy
(
t0
,
s0
);
strcpy
(
oname
[
0
],
n
);
}
for
(
int
i
=
1
;
i
<
4
;
i
++
)
strcpy
(
oname
[
i
],
object_name
[
i
]);
}
s0
=
in
;
if
(
dyn
&&
(
dyn
->
total_dyn_type1
&
ge_mDynType1_HostObject
||
strcmp
(
dyn
->
recursive_hostobject
,
""
)
!=
0
))
{
pwr_tAName
hostobject
;
dyn
->
get_hostobject
(
hostobject
);
t0
=
str
;
s0
=
in
;
while
(
(
s
=
strstr
(
s0
,
"$hostobject"
)))
{
cdh_Strncpy
(
t0
,
s0
,
s
-
s0
);
t0
+=
s
-
s0
;
strcpy
(
t0
,
hostobject
);
t0
+=
strlen
(
hostobject
);
s0
=
s
+
strlen
(
"$hostobject"
);
}
cdh_Strcpy
(
t0
,
s0
);
if
(
strcmp
(
oname
[
0
],
""
)
==
0
)
{
strcpy
(
out
,
str
);
}
s0
=
str
;
}
else
if
(
strcmp
(
oname
[
0
],
""
)
==
0
)
{
cdh_Strcpy
(
out
,
in
);
}
if
(
strcmp
(
oname
[
0
],
""
)
!=
0
)
{
t0
=
out
;
while
(
(
s
=
strstr
(
s0
,
"$object"
)))
{
int
idx
;
object_found
=
true
;
char
*
sidx
=
s
+
strlen
(
"$object"
);
switch
(
*
sidx
)
{
case
'2'
:
idx
=
1
;
break
;
case
'3'
:
idx
=
2
;
break
;
case
'4'
:
idx
=
3
;
break
;
default:
idx
=
0
;
}
cdh_Strncpy
(
t0
,
s0
,
s
-
s0
);
t0
+=
s
-
s0
;
strcpy
(
t0
,
oname
[
idx
]);
t0
+=
strlen
(
oname
[
idx
]);
s0
=
s
+
strlen
(
"$object"
)
+
(
idx
>
0
?
1
:
0
);
}
cdh_Strcpy
(
t0
,
s0
);
t0
=
out
;
}
// Get index variables and replace
for
(
int
i
=
0
;
i
<
2
;
i
++
)
{
if
(
(
s
=
strstr
(
out
,
"[&("
)))
{
int
idx
;
pwr_tAName
iname
,
rest
;
pwr_tStatus
sts
;
int
len
;
char
*
s1
;
s
++
;
strcpy
(
iname
,
s
+
2
);
s1
=
strchr
(
iname
,
')'
);
strncpy
(
rest
,
s1
+
1
,
sizeof
(
rest
));
if
(
!
s1
)
return
GE__SYNTAX
;
*
s1
=
0
;
sts
=
gdh_GetObjectInfo
(
iname
,
&
idx
,
sizeof
(
idx
));
if
(
ODD
(
sts
)
&&
idx
>=
0
&&
idx
<=
100
)
{
len
=
sprintf
(
s
,
"%d"
,
idx
);
strcpy
(
s
+
len
,
rest
);
}
strcpy
(
idx_ref
[
*
idx_ref_cnt
],
iname
);
idx_ref_size
[
*
ref_cnt
]
=
sizeof
(
pwr_tInt32
);
idx_ref_tid
[
*
ref_cnt
]
=
pwr_eType_Int32
;
(
*
idx_ref_cnt
)
++
;
}
else
break
;
}
// Get references
if
(
(
s
=
strchr
(
out
,
'&'
))
&&
*
(
s
+
1
)
==
'('
)
{
// Replace attribute in parenthesis with its value
if
(
*
(
s
+
2
)
==
'&'
&&
*
(
s
+
3
)
==
'('
)
{
pwr_tAName
refname
;
pwr_tStatus
sts
;
char
*
start
,
*
end
,
*
start2
;
pwr_tTid
atid
;
pwr_tUInt32
asize
;
start
=
s
;
strcpy
(
refname
,
s
+
4
);
if
(
(
s
=
strchr
(
refname
,
')'
))
==
0
)
return
GE__SYNTAX
;
*
s
=
0
;
sts
=
gdh_GetAttributeCharacteristics
(
refname
,
&
atid
,
&
asize
,
0
,
0
);
if
(
EVEN
(
sts
))
return
sts
;
strcpy
(
ref
[
*
ref_cnt
],
refname
);
ref_tid
[
*
ref_cnt
]
=
atid
;
ref_size
[
*
ref_cnt
]
=
asize
;
(
*
ref_cnt
)
++
;
end
=
start
+
strlen
(
refname
)
+
5
;
start2
=
s
+
1
;
switch
(
atid
)
{
case
pwr_eType_AttrRef
:
{
pwr_tAttrRef
aref
;
sts
=
gdh_GetObjectInfo
(
refname
,
&
aref
,
sizeof
(
aref
));
if
(
EVEN
(
sts
))
return
sts
;
sts
=
gdh_AttrrefToName
(
&
aref
,
str
,
sizeof
(
str
),
cdh_mName_volumeStrict
);
if
(
EVEN
(
sts
))
return
sts
;
break
;
}
case
pwr_eType_DataRef
:
{
pwr_tDataRef
dref
;
sts
=
gdh_GetObjectInfo
(
refname
,
&
dref
,
sizeof
(
dref
));
if
(
EVEN
(
sts
))
return
sts
;
sts
=
gdh_AttrrefToName
(
&
dref
.
Aref
,
str
,
sizeof
(
str
),
cdh_mName_volumeStrict
);
if
(
EVEN
(
sts
))
return
sts
;
break
;
}
case
pwr_eType_Objid
:
{
pwr_tOid
oid
;
sts
=
gdh_GetObjectInfo
(
refname
,
&
oid
,
sizeof
(
oid
));
if
(
EVEN
(
sts
))
return
sts
;
sts
=
gdh_ObjidToName
(
oid
,
str
,
sizeof
(
str
),
cdh_mName_volumeStrict
);
if
(
EVEN
(
sts
))
return
sts
;
break
;
}
default:
return
GE__NOREF
;
}
if
(
(
s
=
strchr
(
start2
,
')'
))
==
0
)
return
GE__SYNTAX
;
*
s
=
0
;
end
=
start2
+
strlen
(
start2
)
+
1
;
strncat
(
str
,
start2
,
sizeof
(
str
));
strcpy
(
refname
,
str
);
sts
=
gdh_GetAttributeCharacteristics
(
refname
,
&
atid
,
&
asize
,
0
,
0
);
if
(
EVEN
(
sts
))
return
sts
;
strcpy
(
ref
[
*
ref_cnt
],
refname
);
ref_tid
[
*
ref_cnt
]
=
atid
;
ref_size
[
*
ref_cnt
]
=
asize
;
(
*
ref_cnt
)
++
;
}
else
{
pwr_tAName
refname
;
pwr_tStatus
sts
;
char
*
start
,
*
end
;
pwr_tTid
atid
;
pwr_tUInt32
asize
;
start
=
s
;
strcpy
(
refname
,
s
+
2
);
if
(
(
s
=
strchr
(
refname
,
')'
))
==
0
)
return
GE__SYNTAX
;
*
s
=
0
;
end
=
start
+
strlen
(
refname
)
+
3
;
sts
=
gdh_GetAttributeCharacteristics
(
refname
,
&
atid
,
&
asize
,
0
,
0
);
if
(
EVEN
(
sts
))
return
sts
;
strcpy
(
ref
[
*
ref_cnt
],
refname
);
ref_size
[
*
ref_cnt
]
=
asize
;
ref_tid
[
*
ref_cnt
]
=
atid
;
(
*
ref_cnt
)
++
;
}
}
return
GE__SUCCESS
;
}
graph_eDatabase
Graph
::
parse_attr_name
(
char
*
name
,
char
*
parsed_name
,
int
*
inverted
,
int
*
type
,
int
*
size
,
int
*
elem
)
int
*
inverted
,
int
*
type
,
int
*
size
,
int
*
elem
,
graph_mParseOpt
options
)
{
pwr_tAName
str
;
pwr_tAName
str1
;
...
...
@@ -4936,31 +5170,33 @@ graph_eDatabase Graph::parse_attr_name( char *name, char *parsed_name,
break
;
}
// Translate index variable
for
(
int
i
=
0
;
i
<
2
;
i
++
)
{
if
(
(
s
=
strstr
(
str
,
"[&("
)))
{
int
idx
;
pwr_tAName
iname
,
rest
;
pwr_tStatus
sts
;
int
len
;
if
(
!
(
options
&
graph_mParseOpt_KeepIndex
))
{
// Translate index variable
for
(
int
i
=
0
;
i
<
2
;
i
++
)
{
if
(
(
s
=
strstr
(
str
,
"[&("
)))
{
int
idx
;
pwr_tAName
iname
,
rest
;
pwr_tStatus
sts
;
int
len
;
s
++
;
strcpy
(
iname
,
s
+
2
);
s1
=
strchr
(
iname
,
')'
);
strncpy
(
rest
,
s1
+
1
,
sizeof
(
rest
));
if
(
s1
)
{
*
s1
=
0
;
sts
=
gdh_GetObjectInfo
(
iname
,
&
idx
,
sizeof
(
idx
));
if
(
ODD
(
sts
)
&&
idx
>=
0
&&
idx
<=
100
)
{
len
=
sprintf
(
s
,
"%d"
,
idx
);
strcpy
(
s
+
len
,
rest
);
s
++
;
strcpy
(
iname
,
s
+
2
);
s1
=
strchr
(
iname
,
')'
);
strncpy
(
rest
,
s1
+
1
,
sizeof
(
rest
));
if
(
s1
)
{
*
s1
=
0
;
sts
=
gdh_GetObjectInfo
(
iname
,
&
idx
,
sizeof
(
idx
));
if
(
ODD
(
sts
)
&&
idx
>=
0
&&
idx
<=
100
)
{
len
=
sprintf
(
s
,
"%d"
,
idx
);
strcpy
(
s
+
len
,
rest
);
}
}
else
break
;
}
else
break
;
}
else
break
;
}
for
(
int
i
=
0
;
i
<
4
;
i
++
)
{
...
...
xtt/lib/ge/src/ge_graph.h
View file @
ff2e66bf
...
...
@@ -139,6 +139,11 @@ typedef enum {
graph_eKeyboard_AlphabeticShifted
,
//!< Keyboard alphabetic opened in shifted mode.
}
graph_eKeyboard
;
//! Parse options
typedef
enum
{
graph_mParseOpt_None
=
0
,
graph_mParseOpt_KeepIndex
=
1
<<
0
}
graph_mParseOpt
;
//! Extension of proview type pwr_eType. Should not collide with any pwr_eType.
typedef
enum
{
...
...
@@ -1072,7 +1077,8 @@ class Graph {
is inverted (!), of type pwr_eType_String with size 80.
*/
graph_eDatabase
parse_attr_name
(
char
*
name
,
char
*
parsed_name
,
int
*
inverted
,
int
*
type
,
int
*
size
,
int
*
elem
=
0
);
int
*
inverted
,
int
*
type
,
int
*
size
,
int
*
elem
=
0
,
graph_mParseOpt
options
=
graph_mParseOpt_None
);
//! Get the default window size
/*!
...
...
@@ -1260,6 +1266,11 @@ class Graph {
*/
int
set_object_focus
(
const
char
*
name
,
int
empty
);
//! Replace the string $object and get references in attribute connection string.
int
get_refupdate
(
char
*
in
,
pwr_tAName
ref
[],
pwr_tTid
ref_tid
[],
int
ref_size
[],
int
*
ref_cnt
,
pwr_tAName
idx_ref
[],
pwr_tTid
idx_ref_tid
[],
int
idx_ref_size
[],
int
*
idx_ref_cnt
,
GeDyn
*
dyn
);
//! Replace the string $object with the object name for the graph.
/*!
\param in Input command.
...
...
@@ -1615,4 +1626,4 @@ int graph_attr_string_to_value( int type_id, const char *value_str,
void
*
buffer_ptr
,
int
buff_size
,
int
attr_size
);
/*@}*/
#endif
\ No newline at end of file
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment