public byte getCallingConventionID(String name, boolean restrictive)
			throws InvalidInputException, IOException {

		if (CompilerSpec.isUnknownCallingConvention(name)) {
			return UNKNOWN_CALLING_CONVENTION_ID;
		}
		if (CompilerSpec.CALLING_CONVENTION_default.equals(name)) {
			return DEFAULT_CALLING_CONVENTION_ID;
		}

		lock.acquire();
		try {
			// If restrictive only permit a name which is known
			if (restrictive &&
				GenericCallingConvention
						.getGenericCallingConvention(name) == GenericCallingConvention.unknown &&
				!getKnownCallingConventionNames().contains(name)) {

				throw new InvalidInputException("Unknown calling convention name: " + name);
			}

			return callingConventionAdapter.getCallingConventionId(name,
				cc -> callingConventionNameAdded(cc));
		}
		catch (IOException e) {
			dbError(e);
		}
		finally {
			lock.release();
		}
		return UNKNOWN_CALLING_CONVENTION_ID;
	}
Get (and assign if needed thus requiring open transaction) the ID associated with the 
specified calling convention name.  If name is a new convention and the number of stored
convention names exceeds 127 the returned ID will correspond to the unknown calling 
convention.
@param name calling convention name
@param restrictive if true an error will be thrown if name is not defined by 
{@link GenericCallingConvention} or the associated compiler specification if 
datatype manager has an associated program architecture.
@return calling convention ID
@throws IOException if database IO error occurs
@throws InvalidInputException if restrictive is true and name is not defined by 
{@link GenericCallingConvention} or the associated compiler specification if 
datatype manager has an associated program architecture.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/DataTypeManagerDB.java