diff --git a/Makefile b/Makefile index b0da43adc8992ebdab25d66e0717755fcebe62a4..81b45c6930490600f0cde946766acf755836d22e 100644 --- a/Makefile +++ b/Makefile @@ -118,7 +118,7 @@ TOOLOBJ = $(SIMOBJ) \ $(TARGET_DIR)/screen.o $(TARGET_DIR)/node.o \ $(TARGET_DIR)/tool.o $(TARGET_DIR)/utils.o \ $(TARGET_DIR)/pagewriter.o $(TARGET_DIR)/pagereader.o \ - $(TARGET_DIR)/configreader.o + $(TARGET_DIR)/configreader.o $(TARGET_DIR)/attrs.o $(TARGET_DIR)/ana/%.o: $(SRC_DIR)/ana/%.c diff --git a/include/attrs.h b/include/attrs.h new file mode 100644 index 0000000000000000000000000000000000000000..5622569f2019284780633c25ac4a57ce95933ded --- /dev/null +++ b/include/attrs.h @@ -0,0 +1,10 @@ +#ifndef LOG_ATTRS_H +#define LOG_ATTRS_H +#include "logdef.h" + + +void newattrs(log_gattrrec **gattr, short numattrs, log_kattrrec *kattr); +void disposeattrs(log_gattrrec **gattr, short numattrs, log_kattrrec *kattr); +void copyattrs(log_gattrrec **gattr, log_gattrrec *oldattr, short numattrs, log_kattrrec *kattr); + +#endif diff --git a/src/attrs.c b/src/attrs.c new file mode 100644 index 0000000000000000000000000000000000000000..ebcd76d709e6335fe58170eaef5b50d6c0d2f041 --- /dev/null +++ b/src/attrs.c @@ -0,0 +1,95 @@ +#include "attrs.h" +#include "settings.h" +#include <utils/strings.h> + +void newattrs(log_gattrrec **gattr, short numattrs, log_kattrrec *kattr) +{ + short i; + + *gattr = (log_gattrrec *)Malloc(numattrs * gattrrecsize); + for (i = 0; i < numattrs; i++) + { + switch (kattr[i].dtype) + { + + case 'R': + case 'U': + case 'F': + (*gattr)[i].UU.r = kattr[i].UU.U82.r; + break; + + case 'I': + case 'H': + (*gattr)[i].UU.U73.i1 = kattr[i].UU.U73.i1; + break; + + case 'C': + (*gattr)[i].UU.c = (char *)Malloc(kattr[i].prec + 1L); + strcpy((*gattr)[i].UU.c, kattr[i].UU.c); + break; + + case 'A': + (*gattr)[i].UU.sp = strdup(kattr[i].UU.sp); + break; + + case 'B': + (*gattr)[i].UU.b = kattr[i].UU.b; + break; + + case 'V': + (*gattr)[i].UU.nv = kattr[i].UU.U86.dv; + break; + } + + (*gattr)[i].blnk = kattr[i].blnk; + (*gattr)[i].changed = false; + } +} + + +void disposeattrs(log_gattrrec **gattr, short numattrs, log_kattrrec *kattr) +{ + short i; + + for (i = 0; i < numattrs; i++) + { + switch (kattr[i].dtype) + { + + case 'C': + Free((*gattr)[i].UU.c); + break; + + case 'A': + strdispose(&(*gattr)[i].UU.sp); + break; + } + } + Free(*gattr); +} + + +void copyattrs(log_gattrrec **gattr, log_gattrrec *oldattr, short numattrs, log_kattrrec *kattr) +{ + short i; + + *gattr = (log_gattrrec *)Malloc(numattrs * gattrrecsize); + for (i = 0; i < numattrs; i++) + { + (*gattr)[i] = oldattr[i]; + switch (kattr[i].dtype) + { + + case 'C': + (*gattr)[i].UU.c = (char *)Malloc(kattr[i].prec + 1L); + strcpy((*gattr)[i].UU.c, oldattr[i].UU.c); + break; + + case 'A': + (*gattr)[i].UU.sp = strdup(oldattr[i].UU.sp); + break; + } + } +} + + diff --git a/src/log.c b/src/log.c index 84d93be11b621980b937a410896d7f8f0b63ccd5..feb06265ee679a95e1a19ed5f148f8947c90894a 100644 --- a/src/log.c +++ b/src/log.c @@ -62,6 +62,7 @@ #include "logstructs.h" #include "logglobals.h" +#include "attrs.h" #include "screen.h" #include "label.h" #include "gate.h" @@ -1878,97 +1879,6 @@ static void clearconflicts(log_tool *tool) short getsignal (int d, char *n); - -void newattrs(log_gattrrec **gattr, short numattrs, log_kattrrec *kattr) -{ - short i; - - *gattr = (log_gattrrec *)Malloc(numattrs * gattrrecsize); - for (i = 0; i < numattrs; i++) - { - switch (kattr[i].dtype) - { - - case 'R': - case 'U': - case 'F': - (*gattr)[i].UU.r = kattr[i].UU.U82.r; - break; - - case 'I': - case 'H': - (*gattr)[i].UU.U73.i1 = kattr[i].UU.U73.i1; - break; - - case 'C': - (*gattr)[i].UU.c = (char *)Malloc(kattr[i].prec + 1L); - strcpy((*gattr)[i].UU.c, kattr[i].UU.c); - break; - - case 'A': - (*gattr)[i].UU.sp = strdup(kattr[i].UU.sp); - break; - - case 'B': - (*gattr)[i].UU.b = kattr[i].UU.b; - break; - - case 'V': - (*gattr)[i].UU.nv = kattr[i].UU.U86.dv; - break; - } - - (*gattr)[i].blnk = kattr[i].blnk; - (*gattr)[i].changed = false; - } -} - - -void disposeattrs(log_gattrrec **gattr, short numattrs, log_kattrrec *kattr) -{ - short i; - - for (i = 0; i < numattrs; i++) - { - switch (kattr[i].dtype) - { - - case 'C': - Free((*gattr)[i].UU.c); - break; - - case 'A': - strdispose(&(*gattr)[i].UU.sp); - break; - } - } - Free(*gattr); -} - - -void copyattrs(log_gattrrec **gattr, log_gattrrec *oldattr, short numattrs, log_kattrrec *kattr) -{ - short i; - - *gattr = (log_gattrrec *)Malloc(numattrs * gattrrecsize); - for (i = 0; i < numattrs; i++) - { - (*gattr)[i] = oldattr[i]; - switch (kattr[i].dtype) - { - - case 'C': - (*gattr)[i].UU.c = (char *)Malloc(kattr[i].prec + 1L); - strcpy((*gattr)[i].UU.c, oldattr[i].UU.c); - break; - - case 'A': - (*gattr)[i].UU.sp = strdup(oldattr[i].UU.sp); - break; - } - } -} - /// Link box to the current page. static void linkbox(log_brec *b) {