⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lline.cpp

📁 ldraw_DOS游戏开发包
💻 CPP
字号:
#include <lutils.h>
#include <string.h>

//////////////////////////////////////////////////////////////////////
void  Tline::CharacterCase(char *string,short mode)
{ short len=strlen(string),ch,i;
  for(i=0;i<len;i++) {
    ch=string[i];
    if (mode) if (ch>='a'&&ch<='z') ch=ch-'a'+'A';
    if (!mode) if (ch>='A'&&ch<='Z') ch=ch-'A'+'a';
    string[i]=ch;
  }
}
short Tline::GetPicIndex(short item,TLpcImage *lpc)
{ short page,num;
  sscanf(Word[item],"%d",&page); sscanf(Word[item+2],"%d",&num);
  return lGetLpcIndex(lpc,page,num);
}
void  Tline::GetString(char *str,short item)
{ char *p=Word[item],d=0; short len;
  if (p[0]=='\'') p++,d=1;
  strcpy(str,p); len=strlen(str); str[len]=0;
  if (d) str[len-1]=0;
}
//////////////////////////////////////////////////////////////////////
char *Tline::GetLine(short mode)
{ char *r; short count,i,j;
  if (!fileflag) return NULL;
  do { r=fgets(fline,LMAX_CHAR,lf); count=0;
       if (r) count=ArrangeStr(fline);
  } while (r&&count==0);
  if (r) switch(mode)
   { case 1: for (i=0;i<count;i++) for (j=0;j<strlen(Word[i]);j++) 
              if (Word[i][j]>='a'&&Word[i][j]<='z') Word[i][j]=Word[i][j]-'a'+'A';
             break;
   }
  return r;
}
char Tline::OpenFile(char *fname)
{ if (fileflag) fclose(lf);
  if ((lf=fopen(fname,"r"))) fileflag=1; 
  else fileflag=0;
  return fileflag;
}
void Tline::CloseFile() 
{ if (fileflag) fclose(lf); 
  fileflag=0; 
}
Tline::Tline()
{ line = new char[LMAX_CHAR+1]; 
  outline = new char[LMAX_CHAR+1];
  fline= new char[LMAX_CHAR+1];
  Word=new char*[LMAX_CHAR]; fileflag=0;
}
Tline::~Tline()
{ if (line) delete line;
  if (outline) delete outline;
  if (fline) delete fline;
  if (Word) delete Word;
}
char Tline::CheckChar(char c)
{ if (c==0||c=='`'||c=='\n') return 0;
  if (c==' ') return 3;
  if ( (c>='a'&&c<='z') || (c>='A'&&c<='Z') ||
       (c>='0'&&c<='9') || (c=='_') ) return 1;
  return 2;
}
short Tline::ArrangeStr(char *source)
{ register char *p0,*p1,c;
  short i,j,k,count,done=0;
  for (i=0;i<LMAX_CHAR;i++) list[i][0]=0,list[i][1]=0;
  p0=source; p1=p0; i=0;
  while (!done) {
    while (*p1==' ') p1++; p0=p1;  // Skip space
    if (*p1=='\'') {
       p1++; while(*p1!='\''&&*p1!=0) *p1++;
       if (*p1=='\'') p1++; list[i][0]=p0-source; list[i][1]=p1-p0;
       i++; p0=p1;
    }
    switch (CheckChar(*p1)) {             // Get form
      case 2: list[i][0]=p1-source; list[i][1]=1;
	      p1++; p0=p1; i++; break;
      case 1: while (CheckChar(*p1)==1) p1++;
	      list[i][0]=p0-source; list[i][1]=p1-p0;
	      p0=p1; i++; break;
      case 0: done=1; break;
    }
  }
  count=i; k=0;
  for (i=0;i<count;i++) {
    Word[i]=line+k;
    for (j=0;j<list[i][1];k++,j++) { c=source[list[i][0]+j];
        outline[k]=c; line[k]=c; 
    }
    if (i!=count-1) { outline[k]=' '; line[k]=0; k++; }
  }
  outline[k]=0; line[k]=0; WordCount=count;
  return count;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -