Source Code (Use browser search to find items of interest.)

Class Index

klyx'CharacterSet (./klyx/src/chset.h:8)

class CharacterSet {
public:
	///
	CharacterSet();
	///
	~CharacterSet();
	
	///
	bool loadFile(const LString&);
	///
	LString getName();
	///
	bool encodeString(LString&);
private:
	///
	LString name_;
	
	///
	struct Cdef {
		///
		unsigned char ic;
		///
		LString str;
		///
		Cdef *next;
	};
	
	///
	Cdef *map_;
	///
	void freeMap();
};

klyx'CharacterSet::CharacterSet() (./klyx/src/chset.C:7)

CharacterSet::CharacterSet()
{
	map_=NULL;
}



klyx'CharacterSet::~CharacterSet() (./klyx/src/chset.C:13)

CharacterSet::~CharacterSet()
{
	freeMap();
}



klyx'CharacterSet::freeMap() (./klyx/src/chset.C:19)

void CharacterSet::freeMap()
{
	Cdef* t;
	while(map_) {
		t=map_;
		map_=map_->next;
		delete t;
	}

	name_.clean();
}



klyx'CharacterSet::loadFile() (./klyx/src/chset.C:32)

bool CharacterSet::loadFile(const LString& fname)
{
	freeMap();
    
	if (fname=="" || fname=="ascii") 
		return true;	// ascii 7-bit

	// open definition file
	lyxerr.debug("Opening keymap file "+ fname+ ".cdef",Error::KBMAP);
	LString filename = LibFileSearch("kbd", fname.c_str(), "cdef");
	FilePtr f(filename, FilePtr::read);
	if (filename.empty() || !f()) {
		lyxerr.print("Unable to open keymap file");
		return true;		// no definition, use 7-bit ascii
	}

	name_=fname;

	// now read the file
	LyXLex lex(NULL,0);
	lex.setFile(f());

	bool error=false;
	LString str;
	int n;
	
	while(lex.IsOK() && !error) {
		
		switch(lex.lex()){
		case LyXLex::LEX_FEOF :
			lyxerr.debug("End of parsing of .cdef file",
				     Error::KBMAP);
			break;
		default:
			// Get Integer
			n=lex.GetInteger();
			if (n<0) {
				error=true;
				continue;
			}
	
			// Get String
			lex.next(true);
			str=lex.GetString();

			Cdef* tempc=new Cdef;
			tempc->str=str;
			tempc->ic=n;
			tempc->next=map_;
			map_=tempc;
	
			if (lyxerr.debugging(Error::KBMAP))
				fprintf(stderr, "Chardef: %d to [%s]\n", 
					n, tempc->str.c_str());
			break;
		}
	}
	
	return false;
}



klyx'CharacterSet::encodeString() (./klyx/src/chset.C:94)

bool CharacterSet::encodeString(LString& str)
{
	Cdef *t=map_;
    
	while(t) {
		if (t->str==str) {
			str=LString(t->ic);
			break;
		}
		t=t->next;
	}
	return (t!=NULL);
}



klyx'CharacterSet::getName() (./klyx/src/chset.C:109)

LString CharacterSet::getName()
{
	return name_;
}