3995a5eb6a 2010-11-21 kinaba: /** 3995a5eb6a 2010-11-21 kinaba: * Authors: k.inaba 3995a5eb6a 2010-11-21 kinaba: * License: NYSL 0.9982 http://www.kmonos.net/nysl/ 3995a5eb6a 2010-11-21 kinaba: * 3995a5eb6a 2010-11-21 kinaba: * Interpreter-wise fresh ID generator. 3995a5eb6a 2010-11-21 kinaba: */ 3995a5eb6a 2010-11-21 kinaba: module polemy.fresh; 3995a5eb6a 2010-11-21 kinaba: import polemy._common; 3995a5eb6a 2010-11-21 kinaba: import core.atomic; 3995a5eb6a 2010-11-21 kinaba: 3995a5eb6a 2010-11-21 kinaba: private shared int freshVarId = -1; 3995a5eb6a 2010-11-21 kinaba: 3995a5eb6a 2010-11-21 kinaba: /// Generate one fresh variable name 3995a5eb6a 2010-11-21 kinaba: 3995a5eb6a 2010-11-21 kinaba: string freshVarName() 3995a5eb6a 2010-11-21 kinaba: { 3995a5eb6a 2010-11-21 kinaba: return text("$", atomicOp!("+=")(freshVarId, 1)); 3995a5eb6a 2010-11-21 kinaba: }