a99  V32.6
allegro Windows Hauptprogramm
 Alle Klassen Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Makrodefinitionen
aichange.cpp
gehe zur Dokumentation dieser Datei
1 // aichange.cpp / aichange.c : Index-Steuerdaten aendern, ident. f. .c und .cpp
2 // 1991 / 2005 / 2011
3 
4 // Copyright 2011 Universitätsbibliothek Braunschweig, more see bottom
5 
6 
7 #include "includes.h" // einige Konventionen
8 #include "ai-const.h" // allg. Konstanten
9 #include "aisetup.h" // allg. Einstellungen
10 #include "aistruc.h" // Strukturen
11 #include "aiglobal.h" // glob. Variablen
12 #include "aierrors.h" // Fehlernummern
13 #include "aideclar.h" // Funktionsdeklarationen
14 
15 
16 // ---------------------------------------
17 // Aktualisiert Angaben im Index-Dateikopf, s. aistruc.h
18 
19 SHORT updhd(aiINDX *aixf, PTRL chgnum)
20 {
21 
22 #ifdef aiIMMED
23  if (aiLok(aiNODNUL,aixf) || aiprefrd(aixf - aixf->regnm))
24  return(aiG_fhln);
25 #endif
26 
27  aixf->entcnt += chgnum;
28 
29 #ifdef aiFLAX
30  // no action
31 #else
32  if (aiprefwr(aixf))
33  return(aiG_fhln);
34 #endif
35 
36 #ifdef aiIMMED
37  if (aiUnlk(aiNODNUL,aixf))
38  return(aiG_fhln);
39 #endif
40  return(FHLNUL);
41 }
42 
43 
44 // ----------------------------------------------------
45 // Knotengroesse wird geaendert, Aenderungsflag gesetzt
46 
47 
48 SHORT savekn(aiTRSTR *bloc, SHORT knotsz)
49 {
50 
51  if (knotsz < 0)
52  aiAbort(216);
53  aipraxr(bloc);
54  bloc->coruf = 'y';
55  bloc->ckyv = knotsz;
56 
57 #ifdef aiFLAX
58  // no action
59 #else
60  if (aiknowri(bloc))
61  return(aiG_fhln);
62 #endif
63 
64  return(FHLNUL);
65 }
66 
67 
68 // ----------------------------------------------
69 // Doppeleintrag aiG_ky fuer aiEntIn und aiEntDl
70 
71 void setdpl(CHAR *ip, aiINDX *aixf, PTRL *ai_poin)
72 {
73  SHORT kl;
74  CHAR *suffix,*tp;
75 
76  suffix = ip + aixf->kylgth - sizeof(PTRL);
77  tp = (CHAR *) ai_poin;
78 
79 #ifdef LoHi
80  tp += sizeof(PTRL);
81  kl = 0;
82  while (kl < sizeof(PTRL))
83  {
84  *suffix++ = *--tp;
85  kl++;
86  }
87 #else
88  kl=0;
89  while (kl < sizeof(PTRL))
90  {
91  *suffix++ = *tp++;
92  kl++;
93  }
94 #endif
95 
96 }
97 
98 
99 // ---------------------
100 // nach rechts bewegen
101 
102 aiTRSTR *mvrght(CHAR *aikey, aiINDX *aixf, aiTRSTR *aibloc)
103 
104 // aikey; Zeiger auf einen Schluesselstring
105 // aixf; Zeiger zur Satznummer
106 // aibloc; Zeiger auf den Indexblock
107 
108 {
109  STATC RECNR knot;
110  // Hinw: aifkno setzt aiG_pos
111  while (aibloc != 0 && aifkno(aibloc,aikey,'L') == -1)
112  {
113  if (aiLok((knot = aibloc->rgtkey),aixf))
114  return((aiTRSTR *)NULL);
115  if (aiUnlk(aibloc->knotid,aixf))
116  return((aiTRSTR *)NULL);
117  aibloc = aiknoget(knot,aixf);
118  }
119  return(aibloc);
120 }
121 
122 // --------------------
123 // Nach rechts schieben
124 
125 void shiftr(SHORT n, aiTRSTR *bp, uSHORT ai_byte)
126 {
127  CHAR *dp,*sp;
128 
129  sp = bp->knptr + bp->ckyb - 1;
130  dp = sp + n;
131  n = bp->ckyb - ai_byte;
132  while ( n-- > 0 ) // ai_byte org at 0, ckyb org 1
133  *dp-- = *sp--;
134 }
135 
136 // -------------------
137 // nach links schieben
138 
139 void shiftl(SHORT n, aiTRSTR *bp, uSHORT ai_byte)
140 {
141  CHAR *sp;
142 
143  sp = bp->knptr + ai_byte;
144  aicopy(sp - n,sp,bp->ckyb - ai_byte);
145 }
146 
147 /*
148  Copyright 2011 Universitätsbibliothek Braunschweig
149 
150  Licensed under the Apache License, Version 2.0 (the "License");
151  you may not use this file except in compliance with the License.
152  You may obtain a copy of the License at
153 
154  http://www.apache.org/licenses/LICENSE-2.0
155 
156  Unless required by applicable law or agreed to in writing, software
157  distributed under the License is distributed on an "AS IS" BASIS,
158  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
159  See the License for the specific language governing permissions and
160  limitations under the License.
161 */
162