TempleOSCDV4.03.ISO
This commit is contained in:
1 parent
1541d7328d
commit
0f1a4a5d65
115 files changed
+5618
-4863
No files matched your search
+48
-8
@@ -59,12 +59,13 @@ U0 DocFormBwd(CDoc *doc,Bool giveup=FALSE)
|
||||
U0 DocDataFmt(CDoc *doc,CDocEntry *doc_e,I64 d=DOCM_CANCEL)
|
||||
{
|
||||
I64 i;
|
||||
U8 *ptr;
|
||||
U8 *ptr,*ptr2;
|
||||
CHashDefineStr *temph;
|
||||
if (doc_e->type_u8==DOCT_DATA && doc_e->de_flags&DOCEF_AUX_STR ||
|
||||
doc_e->type_u8==DOCT_CHECK_BOX || doc_e->de_flags & DOCEF_LST) {
|
||||
if (d==DOCM_CANCEL) {
|
||||
if (doc_e->de_flags & DOCEF_DATA_IS_PTR) {
|
||||
if (doc_e->de_flags&DOCEF_DEREF_DATA &&
|
||||
!(doc_e->de_flags&DOCEF_REMALLOC_DATA)) {
|
||||
if (!(ptr=doc_e->data)) return;
|
||||
} else
|
||||
ptr=&doc_e->data;
|
||||
@@ -81,13 +82,32 @@ U0 DocDataFmt(CDoc *doc,CDocEntry *doc_e,I64 d=DOCM_CANCEL)
|
||||
}
|
||||
}
|
||||
if (doc_e->type_u8==DOCT_DATA) {
|
||||
StrPrint(doc_e->tag,doc_e->aux_str,d,doc_e->my_fmt_data);
|
||||
if (doc_e->de_flags & DOCEF_HAS_TERMINATOR) {
|
||||
if (doc_e->de_flags & DOCEF_REMALLOC_DATA) {
|
||||
ptr=MStrPrint(doc_e->aux_str,d,doc_e->my_fmt_data);
|
||||
i=StrLen(ptr);
|
||||
if (!doc_e->data) {
|
||||
doc_e->data=CAlloc(2,doc->mem_task);
|
||||
doc_e->len=MSize(doc_e->data)-2;
|
||||
}
|
||||
if (doc_e->len+doc_e->min_col>i)
|
||||
MemCpy(doc_e->tag,ptr,i+1);
|
||||
else {
|
||||
ptr2=MAlloc(i+8,doc->mem_task);
|
||||
doc_e->len=MSize(ptr2)-doc_e->min_col-2; //See $LK,"DataTagWidth",A="FA:::/Adam/DolDoc/DocPlain.CPP,DataTagWidth"$
|
||||
MemCpy(ptr2,ptr,i+1);
|
||||
Free(doc_e->tag);
|
||||
doc_e->tag=ptr2;
|
||||
}
|
||||
Free(ptr);
|
||||
} else {
|
||||
StrPrint(doc_e->tag,doc_e->aux_str,d,doc_e->my_fmt_data);
|
||||
i=StrLen(doc_e->tag);
|
||||
}
|
||||
if (doc_e->de_flags & DOCEF_HAS_TERMINATOR) {
|
||||
doc_e->tag[i++]='_';
|
||||
doc_e->tag[i]=0;
|
||||
}
|
||||
doc_e->max_col=StrLen(doc_e->tag);
|
||||
doc_e->max_col=i;
|
||||
} else if (doc_e->de_flags & DOCEF_LST) {
|
||||
if (doc_e->de_flags & DOCEF_DEFINE && (temph=HashFind(doc_e->define_str,
|
||||
doc->win_task->hash_table,HTT_DEFINE_STR)) && 0<=d<temph->cnt) {
|
||||
@@ -115,7 +135,8 @@ U0 DocDataScan(CDoc *doc,CDocEntry *doc_e)
|
||||
CHashDefineStr *temph;
|
||||
if (doc_e->type_u8==DOCT_DATA && doc_e->de_flags&DOCEF_AUX_STR ||
|
||||
doc_e->type_u8==DOCT_CHECK_BOX || doc_e->de_flags & DOCEF_LST) {
|
||||
if (doc_e->de_flags & DOCEF_DATA_IS_PTR) {
|
||||
if (doc_e->de_flags&DOCEF_DEREF_DATA &&
|
||||
!(doc_e->de_flags&DOCEF_REMALLOC_DATA)) {
|
||||
if (!(ptr=doc_e->data)) return;
|
||||
} else
|
||||
ptr=&doc_e->data;
|
||||
@@ -130,7 +151,14 @@ U0 DocDataScan(CDoc *doc,CDocEntry *doc_e)
|
||||
if (doc_e->de_flags & DOCEF_HAS_TERMINATOR)
|
||||
doc_e->tag[i]='_';
|
||||
} else if (RT_I64<=doc_e->raw_type<=RT_UF64) {
|
||||
StrScan(doc_e->tag,doc_e->aux_str,ptr,doc_e->my_fmt_data);
|
||||
if (doc_e->de_flags & DOCEF_REMALLOC_DATA) {
|
||||
ptr=MAlloc(i-doc_e->min_col+8,doc->mem_task);
|
||||
MemCpy(ptr,doc_e->tag+doc_e->min_col,i-doc_e->min_col+1);
|
||||
Free(doc_e->data);
|
||||
doc_e->data=ptr;
|
||||
doc_e->len=MSize(ptr)-1;
|
||||
} else
|
||||
StrScan(doc_e->tag,doc_e->aux_str,ptr,doc_e->my_fmt_data);
|
||||
if (doc_e->de_flags & DOCEF_HAS_TERMINATOR)
|
||||
doc_e->tag[i]='_';
|
||||
return;
|
||||
@@ -201,7 +229,11 @@ public Bool DocForm(U8 *_d,U8 *class_name=lastclass,
|
||||
while (ml) {
|
||||
if (fmtstr=MemberMetaData("fmtstr",ml)) {
|
||||
doc_e=DocPrint(doc,"%s",fmtstr);
|
||||
doc_e->data=_d+ml->offset;
|
||||
if (doc_e->de_flags&DOCEF_REMALLOC_DATA) {
|
||||
doc_e->user_data=_d+ml->offset;
|
||||
doc_e->data=*doc_e->user_data(U8 **);
|
||||
} else
|
||||
doc_e->data=_d+ml->offset;
|
||||
doc_e->my_fmt_data=MemberMetaData("fmtdata",ml);
|
||||
DocDataFmt(doc,doc_e);
|
||||
}
|
||||
@@ -221,6 +253,14 @@ public Bool DocForm(U8 *_d,U8 *class_name=lastclass,
|
||||
}
|
||||
}
|
||||
}
|
||||
doc_e=doc->root.next;
|
||||
while (doc_e!=doc) {
|
||||
if (doc_e->de_flags&DOCEF_REMALLOC_DATA) {
|
||||
*doc_e->user_data(U8 **)=doc_e->data;
|
||||
doc_e->data=NULL;
|
||||
}
|
||||
doc_e=doc_e->next;
|
||||
}
|
||||
DocDel(doc);
|
||||
Fs->border_src=old_border_src;
|
||||
return result;
|
||||
|
||||
Reference in new issue
Block a user